一个极简的本地 demo,比较相同交易在多个链 / Layer2 的预计 gas 成本,并在本地 Hardhat fork 节点上执行一次 callStatic 仿真来验证交易能否成功。这是后续接入 Parallax 或本地模型的基础脚手架,可让你快速判断“在哪条链、哪个时机”发送交易最便宜。
- 对多条链(主网 + L2)的
estimateGas、gasPrice/maxFeePerGas和预估原生代币成本进行并行比较。 - 通过 Hardhat fork 节点对指定交易做一次
callStatic,判断执行是否会 revert 并返回错误信息。 - 极简前端,用于输入交易参数、查看多链估算与仿真结果。
- Node.js >= 18
- npm
- Hardhat(全局或本地即可)
- 可用的公共 RPC(Alchemy、Infura、Ankr、Blast 等均可)
- (可选)MetaMask,用于真实签名和广播
- 安装依赖
cd crosschain-gas-optimizer-mvp npm install - 根据
.env.example填写.env,至少需要配置主网 / L2 的 RPC,方便对比与 fork:cp .env.example .env # 编辑 .env - 启动 Hardhat fork(确保
.env中MAINNET_RPC可用):./scripts/start-hardhat-fork.sh
- 启动后端:
npm run dev # nodemon 热重载 # 或 npm start
- 打开
frontend/index.html(直接用 VSCode / Cursor 预览或简单启一个静态服务器),填写交易信息后点击“Estimate & Simulate”即可查看结果。
crosschain-gas-optimizer-mvp/
├── README.md
├── package.json
├── .env.example
├── server.js # Express + ethers 后端
├── lib/
│ ├── compare.js # estimateGas + 成本比较逻辑
│ └── simulate.js # 本地 Hardhat 仿真封装
├── hardhat.config.js # Hardhat(支持 fork)
├── frontend/
│ ├── index.html
│ └── app.js
└── scripts/
└── start-hardhat-fork.sh # 启动本地 fork 示例脚本
LIB/compare.js 与 hardhat.config.js 会读取以下变量:
MAINNET_RPC、OPTIMISM_RPC、ARBITRUM_RPC、BASE_RPC、POLYGON_RPC……用于多链对比。HARDHAT_FORK_RPC:本地 Hardhat 节点地址(默认为http://127.0.0.1:8545)。DEFAULT_FROM:估算 gas 时默认使用的from地址(没有也可)。
在 .env.example 中查看完整列表。
前端为纯静态页面,直接使用 fetch 调用后端:
/estimate:并发对比多链成本。/simulate:调用 Hardhat fork 进行callStatic。
- 把真实策略 / 模型接入
lib/compare.js的输出,挑选最低成本链。 - 接入签名 & 广播(当前仅做估算)。
- 增加更多链、动态路由、历史统计等。
欢迎自由扩展!