yoge7388095s/eth-trading-bot · 上手攻略

  • 仓库:yoge7388095s/eth-trading-bot
  • 链接:https://github.com/yoge7388095s/eth-trading-bot
  • 分类:Ethereum · 开发工具 · 合约部署
  • 作者:Jay
  • 更新:2026-10-07

这是什么

注意:仓库名称有一定迷惑性——它并非自动交易机器人,而是一个纯终端界面的 Ethereum 智能合约部署与管理工具。 核心功能是:本地编译 Solidity、实时预览 gas 费用、部署到 Ethereum Mainnet,并通过交互式菜单调用合约函数。内置可选的前置运行(front-running)示例逻辑和一个独立的 mempool 监控进程,用途更偏向"合约沙盒 + 链上调试"而非全自动交易。

MIT 许可证,依赖ethers ^6.13.0 + solc ^0.8.28,纯 Node.js,无需 Docker 或额外链节点。


解决什么问题

  • 痛点:用 Remix IDE 或 Hardhat 部署简单合约流程太重;想快速在 Mainnet 测试一个合约又担心 gas 估算不准。
  • 解决:一条命令进入交互式 TUI,编译、部署、调用全程预览 gas 和美元成本,确认后才上链。
  • 附带能力:可选 mempool 监控流,实时打印链上大额 swap,便于观察 DEX 动向。

快速安装

# 1. 克隆仓库
git clone https://github.com/yoge7388095s/eth-trading-bot
cd eth-trading-bot

# 2. 安装依赖(ethers + solc)
npm install

# 3. 创建 .env(不要提交!)
# PRIVATE_KEY = 你的钱包私钥(带 0x 前缀)
# RPC_URL = Ethereum Mainnet RPC 节点
cat > .env << 'EOF'
PRIVATE_KEY=0xYourPrivateKeyHere
RPC_URL=https://ethereum-rpc.publicnode.com
EOF

# 4. 启动交互式菜单
node start

⚠️ .env 文件不在 .gitignore 范围内,需手动确认未提交到远程仓库。


核心用法

交互式菜单操作

=== Ethereum Contract Deployer ===
> Deploy Arbitrage.sol
  Open deployed Arbitrage (0x2d7A..., 2025-01-15)
  Exit
  • ↑↓ 选择菜单项,Enter 确认,Ctrl+C 退出
  • Deploy <file>.sol:实时编译 → gas 预览 → 确认 → 上链
  • Open deployed <name>:从 deployments.json 调取历史部署

gas 预览示例(部署前必看)

Gas (estimate):  564,195 units
Gas limit (+10%): 620,614
Base fee (block 21000000): 8.4321 gwei
Priority fee: 1.5000 gwei
Max fee per gas: 18.3642 gwei

Fee now (expected): 0.005603 ETH (~$17.93)
Fee maximum: 0.011397 ETH (~$36.47)
Your balance: 0.5 ETH (~$1,600.00)

预计费用和最高费用同时显示,美元价通过 Chainlink oracle 实时获取。gasLimit 在 estimate 基础上 +10% 缓冲(与 MetaMask 策略相同)。

mempool 监控(独立进程)

node mempool.js

打印格式示例:

[DEAL #1] 11:54:21
Buyer:  0x6043727c...7fd64
Router: 0xd9e1cE17...8B9F
Amount: 1.8803 ETH (~$6,016.96)
Token:  WETH (Wrapped Ether)
Method: swapExactETHForTokens
TXID:   0xa1f70a8f...4fd03d

⚠️ mempool.js 为独立进程,主菜单的 [stop] 选项停止监控。

Solidity 编译(支持多种 import 来源)

// 支持的 import 形式:
import "https://github.com/Uniswap/v3-core/.../UniswapV3Factory.sol"
import "@openzeppelin/contracts/token/ERC20/ERC20.sol"
import "./MyLib.sol"

自动将 GitHub 链接转换为 raw.githubusercontent.com。

前置运行(front-running)示例合约

README 示例演示了一个简单套利合约,通过监听 mempool 中的 DEX swap,在同一区块内抢先执行反向交易。⚠️ 这是一个教学示例,MEV 机器人竞争激烈,实际盈利取决于网络延迟、gas 价格和套利路径有效性。


典型适用场景

  1. 快速在 Mainnet 部署调试合约:不需要 Remix + MetaMask 的浏览器切换,直接终端搞定。
  2. 合约 Gas 预算评估:在真实区块环境下测试,查看美元成本,而非测试网的虚假数字。
  3. DEX 套利逻辑验证:用示例 Arbitrage.sol 跑 paper-trade,观察利润是否覆盖 gas。
  4. Mempool 观察:实时看链上大户 swap 行为,不下单只做数据收集。

坑与注意

坑 说明 建议
Mainnet only 脚本硬编码 chainId=1,不支持 Sepolia/Goerli 等测试网 任何操作都是真金白银,操作前先在 Remix + 测试网验证逻辑
Public RPC 限速 https://ethereum-rpc.publicnode.com 是免费节点,高频调用会被限速 正式使用建议换 Infura / Alchemy 等付费节点
erc20.json 静态 代币列表来自 Sequence Token Directory,为仓库打包时的快照,新代币可能不在列表 列表缺失时 mempool stream 会 fallback 到随机地址并输出警告
私钥在 .env 明文存储 没有硬件钱包 / 智能钱包支持,私钥以明文存在于文件系统 ⚠️ 使用专用测试钱包,不要用存有大额资产的地址
无脚本模式 所有操作均需手动交互,不支持命令行参数批量执行 若需自动化批量部署,需自行改造 CLI 参数解析
Gas 估算与实际可能有偏差 estimateGas + 10% buffer 在网络拥堵时仍可能不够 建议查看当前区块 base fee 趋势,gas 费高峰时段避免部署
deployments.json 本地存储 部署记录仅存在本地,跨机器使用需手动同步 重要合约部署建议同时记录在外部文档

⚠️ 每笔交易前都有 gas 预览 + OK/Cancel 确认,脚本不会在未经同意时自动发送交易——这是本工具最重要的安全设计。


与同类对比

工具 类型 特点 适合场景
Hardhat / Foundry 开发框架 本地测试网、脚本部署、自动化测试 完整 DApp 开发
Remix IDE 浏览器 IDE 插件生态好,有断点调试 合约初学者、简单审计
this repo 终端交互工具 Mainnet gas 预览 + 实时费用美元化 + mempool 观察 快速 Mainnet 验证、小型合约部署
OpenZeppelin Defender 托管平台 自动化任务、Schedule 功能、Multi-sig 支持 生产环境自动化运营

结论:如果你是开发者想在 Mainnet 快速验证合约逻辑,且偏好全程不离开终端,这个工具填补了 Hardhat 脚本化和 Remix 浏览器化之间的空白。但不适合需要多签、自动化定时任务或完整测试网的场景。


一句话推荐

在 Ethereum Mainnet 上验证合约逻辑、评估真实 gas 成本,用这个轻量终端工具比开浏览器更高效——但永远不要用它操作你不想损失的资金。