第一章:环境搭建——Node.js与Hardhat框架安装、节点配置、钱包管理、本地测试链部署

说实话,每次带新人入行,我最怕的就是环境搭建这一步。明明代码逻辑都懂,结果卡在装环境上,一卡就是半天。我自己早期也踩过不少坑,所以这一章,咱们把基础打扎实。

套利机器人说白了,就是一段程序在链上找差价。但程序跑在哪?怎么跟链交互?私钥放哪才安全?这些就是本章要解决的问题。

本章核心目标:在你的电脑上,搭建一套完整的开发环境。从Node.js开始,到能本地部署一条测试链,并成功连接钱包。

1.1 Node.js:一切的基础

Node.js 是 JavaScript 的运行环境。我们的套利脚本、Hardhat 框架,全都跑在它上面。没有 Node.js,后面什么都干不了。

安装步骤:

  1. nodejs.org 下载 LTS 版本(长期支持版)。我个人习惯用 LTS,稳定,省心。
  2. 双击安装,一路 Next 就行。记得勾选「Add to PATH」。
  3. 打开终端(CMD 或 PowerShell),验证安装:
node -v
npm -v

能看到版本号,就说明装好了。如果报错,大概率是 PATH 没配好。重启终端试试,不行就手动加一下环境变量。

小技巧:我建议用 nvm(Node Version Manager)来管理 Node.js 版本。尤其是你同时做多个项目时,不同项目可能依赖不同版本的 Node。nvm 可以随时切换,非常方便。

1.2 Hardhat:智能合约开发框架

Hardhat 是目前最流行的 Solidity 开发框架之一。它集成了编译、测试、部署、调试等功能。说白了,你写合约、跑测试、部署到链上,全在 Hardhat 里完成。

安装 Hardhat:

mkdir arbitrage-bot
cd arbitrage-bot
npm init -y
npm install --save-dev hardhat

然后初始化一个 Hardhat 项目:

npx hardhat init

选「Create an empty hardhat.config.js」。这样会生成一个最干净的项目结构。我个人喜欢从零开始搭,这样每个配置都心里有数。

项目结构大概是这样:

arbitrage-bot/
├── contracts/        # 存放 Solidity 合约
├── scripts/          # 部署脚本
├── test/             # 测试文件
├── hardhat.config.js # 核心配置文件
└── package.json

1.3 Infura / Alchemy:连接以太坊的桥梁

你的机器人怎么跟以太坊主网交互?总不能自己跑一个全节点吧?那太费资源了。Infura 和 Alchemy 就是干这个的——它们提供远程节点服务,你通过 API 就能发送交易、查询链上数据。

配置步骤:

  1. infura.ioalchemy.com 注册账号。
  2. 创建一个新项目,选择以太坊主网或 Sepolia 测试网。
  3. 复制你的 API Key 或 HTTPS 端点地址。

然后在 hardhat.config.js 里配置:

require("@nomicfoundation/hardhat-toolbox");

module.exports = {
  solidity: "0.8.19",
  networks: {
    sepolia: {
      url: "https://sepolia.infura.io/v3/YOUR_INFURA_PROJECT_ID",
      accounts: ["你的私钥"]
    }
  }
};

警告:千万不要把私钥直接写在代码里!尤其是你要把代码上传到 GitHub 的时候。我见过太多人因为这个丢币了。正确的做法是用环境变量,或者用 Hardhat 的 hardhat-wallet 插件。

我个人习惯用 .env 文件来管理敏感信息:

npm install dotenv

然后在 hardhat.config.js 里:

require("dotenv").config();

module.exports = {
  networks: {
    sepolia: {
      url: process.env.SEPOLIA_URL,
      accounts: [process.env.PRIVATE_KEY]
    }
  }
};

1.4 MetaMask 钱包与私钥安全管理

MetaMask 是你跟链上交互的「手」。但私钥一旦泄露,资产就没了。所以这一节,咱们重点讲安全。

创建钱包:

  1. 安装 MetaMask 浏览器插件。
  2. 创建新钱包,记好助记词。最好手写下来,别存电脑里。
  3. 切换到 Sepolia 测试网。

导出私钥:

  1. 在 MetaMask 里点击账户详情。
  2. 点击「导出私钥」,输入密码。
  3. 复制私钥,粘贴到 .env 文件里。

我曾经犯过的错:有一次我把私钥直接写在了代码里,然后 push 到了 GitHub 公开仓库。不到 10 分钟,钱包里的测试币就被转走了。虽然只是测试币,但也够闹心的。从那以后,我所有项目都强制用 .env 管理私钥。

安全建议:

  • 永远不要将私钥上传到任何代码仓库。
  • 使用硬件钱包(如 Ledger)存储大额资产。
  • 测试网用单独的私钥,不要跟主网混用。
  • 定期更换私钥,尤其是你怀疑环境不安全时。

1.5 Ganache:本地测试链

Ganache 是一个本地模拟的以太坊区块链。你可以在上面随意部署合约、发送交易,不用花真金白银。而且它跑得飞快,非常适合开发调试。

安装 Ganache:

npm install -g ganache

启动:

ganache

默认会创建 10 个账户,每个账户有 1000 ETH(假的)。还会自动生成一个 RPC 地址:http://127.0.0.1:8545

hardhat.config.js 里添加本地网络:

networks: {
  localhost: {
    url: "http://127.0.0.1:8545"
  }
}

小技巧:Ganache 启动后,你可以用 ganache --fork https://mainnet.infura.io/v3/YOUR_KEY 来分叉主网。这样你可以在本地模拟主网的状态,比如 Uniswap 的流动性池。这对套利机器人的测试来说,简直是神器。

1.6 验证环境:跑一个简单的测试

环境搭好了,咱们验证一下能不能正常工作。

写一个最简单的合约 contracts/Test.sol

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.19;

contract Test {
    function hello() public pure returns (string memory) {
        return "Hello, Arbitrage!";
    }
}

写一个部署脚本 scripts/deploy.js

const hre = require("hardhat");

async function main() {
  const Test = await hre.ethers.getContractFactory("Test");
  const test = await Test.deploy();
  await test.deployed();
  console.log("合约部署地址:", test.address);
}

main().catch((error) => {
  console.error(error);
  process.exitCode = 1;
});

在终端运行:

npx hardhat run scripts/deploy.js --network localhost

如果看到合约地址打印出来,恭喜你,环境搭建成功了!

总结一下:这一章我们装了 Node.js、Hardhat、配置了 Infura/Alchemy、管理了 MetaMask 私钥、启动了 Ganache 本地链。每一步都是后面实战的基础。别嫌麻烦,基础打牢了,后面写套利逻辑的时候才能心无旁骛。

环境搭建知识体系 套利机器人开发环境 Node.js 运行时 Hardhat 框架 Infura/Alchemy MetaMask Ganache 本地链 nvm 版本管理 编译/测试/部署 API Key 配置 私钥安全管理 每个组件都是套利机器人不可或缺的一环 从本地开发到主网部署,层层递进

个人经验:我刚开始做套利机器人时,总觉得环境搭建浪费时间,恨不得直接写核心逻辑。结果每次调试都花大量时间在「为什么连不上链?」「为什么私钥不对?」这种问题上。后来我学乖了,花半天时间把环境彻底配好,后面写代码的效率反而高了好几倍。

专注资料整理