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 价格和套利路径有效性。
典型适用场景
- 快速在 Mainnet 部署调试合约:不需要 Remix + MetaMask 的浏览器切换,直接终端搞定。
- 合约 Gas 预算评估:在真实区块环境下测试,查看美元成本,而非测试网的虚假数字。
- DEX 套利逻辑验证:用示例 Arbitrage.sol 跑 paper-trade,观察利润是否覆盖 gas。
- 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 成本,用这个轻量终端工具比开浏览器更高效——但永远不要用它操作你不想损失的资金。