
你将学到什么
Arbitrage Contract Deployer 是一个 Node.js 命令行工具包,可直接从终端编译、部署和交互使用 Solidity 合约。本教程将介绍如何安装它、将钱包连接到以太坊主网、部署合约、使用交互式菜单,以及监控受支持的内存池活动。
重要提示:此项目仅适用于以太坊主网。交易使用真实 ETH,可能产生实际费用。确认前请仔细检查每个合约、地址和交易。
主要功能
- 按需使用
solc编译 Solidity 合约,无需 Remix 或 Hardhat。 - 从本地文件、
node_modules、GitHub 以及兼容 npm 的 CDN 解析导入内容。 - 通过 RPC 连接将合约部署到以太坊主网。
- 将已部署地址、ABI 和日期保存到
deployments.json。 - 提供基于方向键的界面,用于部署合约和调用函数。
- 将合约函数分类为只读、写入或可支付操作。
- 预览 Gas 估算、费用以及大致的 ETH 和美元成本。
- 使用 Chainlink 预言机获取 ETH/USD 汇率,以估算费用。
- 可运行独立的内存池流处理进程,并输出格式化的交易信息。
前置条件
你需要 Node.js 18 或更高版本,因为项目要求使用内置的 fetch 功能。README 还列出了 npm 9 或更高版本的要求。你需要一个以太坊主网 RPC 端点、一个钱包私钥,以及足够支付你确认的部署或写入交易的 ETH。
安装项目
1. 克隆仓库
克隆项目并进入其目录。请将仓库路径替换为你所使用的仓库位置。
git clone https://github.com/yoge7388095s/eth-trading-bot
cd <your-repo>你也可以将仓库下载为 ZIP 压缩包,然后解压到本地文件夹。
2. 安装依赖
安装 package.json 中声明的软件包:
npm install这会安装两个主要依赖:
ethers:用于提供商、钱包、ABI 处理和交易。solc:用于从 Node.js 编译 Solidity。
安装完成后,项目中应包含一个 node_modules 目录。如果没有,请检查 npm install 的输出,并在继续之前解决安装错误。
配置钱包和 RPC 连接
在项目根目录创建名为 .env 的文件。添加你的私钥和以太坊主网 RPC URL:
PRIVATE_KEY=0xYourPrivateKey
RPC_URL=https://ethereum-rpc.publicnode.comREADME 列出了以下示例 RPC 端点:
https://ethereum-rpc.publicnode.comhttps://eth.llamarpc.comhttps://cloudflare-eth.comhttps://mainnet.infura.io/v3/<KEY>https://eth-mainnet.g.alchemy.com/v2/<KEY>
请妥善保管 .env,并确保它已包含在 .gitignore 中。该文件包含凭据,绝不能提交到公共仓库。
启动交互式部署工具
使用以下命令启动主界面:
node start如果项目定义了 npm start 脚本,也可以运行:
npm start应用会检查网络、钱包和余额,然后打开交互式菜单。典型菜单可能包含类似以下的选项:
=== Ethereum Contract Deployer ===
i Network: mainnet (chainId 1)
i Wallet: 0x8c27...66CdC
i Balance: 0.5 ETH
! THIS IS MAINNET - transactions cost real money!
Main menu
> Deploy Arbitrage.sol
Open deployed Arbitrage (0x2d7A..., 2025-01-15)
Exit使用方向键选择项目,按 Enter 确认选择;程序请求交易批准时,使用显示的 OK 或 Cancel 控件。按 Ctrl+C 退出。
编译并部署 Solidity 合约
1. 添加或选择 Solidity 文件
将 Solidity 文件放入项目目录,或通过部署菜单选择现有的 .sol 文件。编译器会根据文件名构建合约,并自动解析受支持的导入内容。
2. 查看编译和部署详情
从主菜单中选择 Deploy <file>.sol。应用会编译合约、准备部署交易,并在请求确认前预览其 Gas 需求。
3. 确认交易
查看 Gas 估算、当前费用、最高费用、钱包余额和合约详情。仅当这些数值及目标网络均正确时才确认。交易挖矿完成后,工具会显示已部署地址和 Etherscan 链接。
部署信息会保存在本地的 deployments.json 中。这样,之后重新打开已部署合约时,无需再次输入其地址和 ABI。
了解 Gas 预览
在部署和受支持的写入操作之前,工具会显示 Gas 预览。其计算流程遵循 README 中记录的过程:
estimateGas提供预计的 Gas 需求。- Gas 限额按预计值加上 10% 缓冲计算。
- 每单位 Gas 的最高费用按基础费用的两倍加上优先费用计算。
- 界面会同时显示预计的当前区块费用和可能的最高费用。
- 使用 Chainlink ETH/USD 汇率估算美元费用。
预览可能包含预计 Gas 单位、Gas 上限、基础费用、优先费用、每单位 Gas 的最高费用、预计 ETH 成本、最高 ETH 成本和钱包余额等数值。请将最高费用视为上限估算,并确认余额足以支付该交易。
打开已保存的部署并调用函数
选择 Open deployed <name>,即可使用之前保存在 deployments.json 中的合约。界面会根据函数行为标注可用函数:
[read]表示不会发送交易的view和pure函数。[write]表示需要交易的状态变更函数。[payable]表示可以接收 ETH 的函数。[info] Contract balance显示合约余额。<- Back to main menu返回主菜单。
只读调用可用于检查合约状态。写入和 payable 调用会经过 Gas 预览,并要求确认后才会发送交易。界面还提供 OK 操作,因此你可以取消操作,而不是提交操作。
运行内存池流
内存池流作为独立进程运行。使用以下命令手动启动:
node mempool.js该流会格式化检测到的活动,并显示买方、路由器、ETH 数量、代币、方法、交易 ID 以及结果状态等详细信息。README 还展示了该流支持的工作流程中的交易和利润显示。
代币源文件是 erc20.json,其格式遵循来自 Sequence Token Directory 的 Uniswap Token List Schema。加载器支持直接使用代币数组,或使用包含 tokens 数组的对象。它会过滤无效地址和零地址,保留 chainId 等于 1 的代币,并提取每个代币的地址、符号和名称。
如果缺少 erc20.json,该流会回退到随机地址并显示警告。使用 Ctrl+C 停止该流,或者在交互界面出现停止选项时使用该选项。
使用 Solidity 导入
内置编译器支持多种导入方式:
- GitHub URL,例如
import "https://github.com/Uniswap/v3-core/..."; - npm 风格的 CDN 导入,例如
import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; - 本地
node_modules中可用的软件包。 - 相对本地导入,例如
import "./MyLib.sol";
使用 github.com/owner/repo/blob/branch/path 形式的 GitHub 链接会自动转换为对应的 raw.githubusercontent.com 链接。
项目结构
主要文件和目录的作用如下:
start.js是node start的入口点。deploy.js包含部署逻辑和交互式菜单。mempool.js运行独立的内存池流。erc20.json包含该流使用的代币列表。deployments.json存储已保存的部署数据,并会自动创建。lib/ui.js管理颜色、菜单、框体和日志记录。lib/env.js处理环境变量、部署数据和区块浏览器链接。lib/compile.js处理编译和导入解析。lib/chain.js处理 Gas、收据和 ETH 价格。lib/contract.js处理部署、函数调用和流启动。
高级提示和操作检查
- 确认 RPC 端点连接到 Ethereum 主网。应用要求链 ID 为
1,并拒绝其他网络。 - 在确认部署或写入操作前检查钱包余额。
- 将
deployments.json作为本地部署数据使用,避免提交敏感信息或非预期的测试信息。 - 提交交易前检查合约源代码、导入的依赖项、目标地址和 payable 数值。
- 使用
node -e "console.log(require('solc').version())"检查已安装的 Solidity 编译器版本。 - 使用
ls node_modules | head确认依赖项是否存在。 - 请注意,根据当前路线图,项目不提供多签支持、导出为 TypeScript 类型的 ABI,也不提供 Tenderly 交易模拟。
安全检查清单
- 绝不公开或提交
PRIVATE_KEY。 - 将
.env保留在.gitignore中。 - 使用仅包含本次操作所需资金的钱包。
- 选择 OK 前阅读每次 Gas 预览。
- 确认界面报告的网络为 Ethereum 主网,链 ID 为
1。 - 使用写入或 payable 函数前仔细检查合约和地址。
实用命令
npm install
node start
npm start
node mempool.js
node -e "console.log(require('solc').version())"
ls node_modules | head结论
Arbitrage Contract Deployer 提供了基于终端的工作流程,用于编译 Solidity、将合约部署到 Ethereum 主网、重新打开已保存的部署、调用合约函数以及查看交易成本。配置好 Node.js、依赖项和安全的 .env 文件后,交互式菜单会引导你完成部署和合约操作,同时显示 Gas 和 ETH/USD 估算。由于所有主网交易都使用真实资金,请谨慎操作,并仅在检查交易详情后确认每笔交易。
该项目采用 MIT 许可证发布。提交贡献时应避免将凭据提交到版本库,并确保 deployments.json 仅包含适当的本地数据。
