如何配置ethereum-flashloan-mev-bot的白名单与交换参数?路由/代币/额度设置完整清单
【免费下载链接】ethereum-flashloan-mev-botAn arbitrage bot is a smart contract connected to an external automation script that controls its operation.项目地址: https://gitcode.com/gh_mirrors/tradingbot15/ethereum-flashloan-mev-bot
ethereum-flashloan-mev-bot 是一个基于以太坊的闪贷套利机器人(MEV arbitrage bot):contract.sol 提供链上执行能力,外部 Python 自动化脚本负责监控与触发。机器人的安全性与行为边界,几乎全部由一组白名单与交换参数决定。本文帮你把路由白名单、代币白名单、默认输出代币、池手续费、最小/最大交换额度逐一讲清楚,附完整配置清单与常见报错对照。
配置前必知:3 个关键前提 📌
| 前提 | 说明 | 源码位置 |
|---|---|---|
| 仅 owner 可改配置 | 所有set*函数都带onlyOwner修饰符,部署者钱包是唯一操作者 | contract.sol |
| 构造函数已预置默认值 | 部署即默认允许 WETH 与 USDT,默认路由为 Uniswap V3 | contract.sol |
| 修改即时生效 | 每次设置都会发出对应事件(如TokenAllowedSet),可在交易日志中确认 | contract.sol |
默认值一览(状态变量初始定义,见 contract.sol):
- 默认输出代币
defaultTokenOut:USDT(构造函数中赋值,见 contract.sol) - 默认池手续费
defaultFee:3000(即 0.3% 档) - 快速交换额度:0.1 ETH ~ 2 ETH
白名单设置:路由与代币的两道闸门 ✅
第一步:配置代币白名单 setTokenAllowed
setTokenAllowed(token, isAllowed)该函数在 contract.sol,传入代币地址和true/false即可开关。白名单决定机器人"允许收什么钱",两处强校验:
- 普通交换:路径的输出代币必须在白名单内,否则报
Token not allowed(contract.sol) - 套利执行:所有腿完成后的最终代币必须在白名单内,否则报
Final token not allowed(contract.sol)
💡 新手建议:先true打开 USDT、USDC、DAI 等主流稳定币;WETH 与 USDT 部署时已默认开启,无需重复设置。
第二步:配置路由白名单 setRouterAllowed
setRouterAllowed(router, isAllowed)函数位于 contract.sol。套利时每一笔swapLeg都会校验allowedRouters[leg.router],未授权路由直接报Router not allowed(contract.sol)。
- 构造函数已预授权 Uniswap V3 Router:
0xE592427A0AEce92De3Edee1F18E0157C05861564(contract.sol 与 contract.sol) - 想接入 Uniswap V2 或其他路由,需先调用
setRouterAllowed(路由地址, true)再交给自动化脚本使用
交换参数设置:代币、手续费与额度 ⚙️
第三步:setDefaultTokenOut 设置快速交换目标代币
quickSwap/quickSwapFromBalance走的是固定路径WETH → defaultTokenOut(contract.sol)。用 contract.sol 的setDefaultTokenOut(token)修改时,会自动把该代币加入白名单,一步到位。
第四步:setDefaultFee 选择池子手续费档位
setDefaultFee(uint24 fee)(contract.sol)决定 V3 路径中的 fee tier,即走哪个池子:
| 常见取值 | 对应费率 | 适用场景 |
|---|---|---|
500 | 0.05% | 主流币对(如 WETH/USDC) |
3000 | 0.3% | 次主流币(默认值) |
10000 | 1% | 长尾/新上线代币 |
选错档位不会报错,但会因池子流动性差导致滑点飙升——请确认你目标币对在对应费率的池中有足够深度。
第五步:最小/最大额度限制 setMin / setMaxQuickSwapAmount
| 函数 | 默认值 | 位置 |
|---|---|---|
setMinQuickSwapAmount | 0.1 ETH | contract.sol |
setMaxQuickSwapAmount | 2 ETH | contract.sol |
quickSwap要求msg.value落在区间内(contract.sol),quickSwapFromBalance则校验合同自身余额(contract.sol)。
💡 新手起步:先保持默认 0.1 ~ 2 ETH;资金增多后再上调max,避免单次快速交换金额过大滑点失控。
其他常用管理函数速查 🛠️
| 函数 | 作用 | 位置 |
|---|---|---|
setPaused(bool) | 紧急暂停/恢复,暂停后所有交易函数拒绝执行 | contract.sol |
withdraw(token, to, amount) | owner 提取代币或 ETH(token 传零地址即取 ETH) | contract.sol |
revokeApproval(token, spender) | 撤销已授予代币的授权 | contract.sol |
getBalance(token)/getOwner() | 只读查询合同余额与所有者 | contract.sol |
推荐配置清单(新手起步模板)📋
按以下顺序操作即可完成一套安全配置:
setTokenAllowed(USDC, true)— 按需补充常用稳定币- 路由:沿用默认 Uniswap V3;如脚本用到 V2 池,先
setRouterAllowed(V2路由, true) setDefaultTokenOut(USDT)— 默认已开启,换币时才调用setDefaultFee(3000)— 按目标币对的池子费率调整setMinQuickSwapAmount(0.1 ether)/setMaxQuickSwapAmount(2 ether)— 保持默认起步- 部署前给合同注入0.5 ~ 1 ETH小额测试(README 官方建议,见 README.md)
完整部署流程(编译 0.8.20 版本 → 连接钱包部署 → Python Automation 启动)见 README.md。
常见报错与参数对照表 🩺
| 报错信息 | 原因 | 解决 |
|---|---|---|
Token not allowed | 交换输出代币未进白名单 | setTokenAllowed(代币, true) |
Final token not allowed | 套利终点代币未进白名单 | 同上 |
Router not allowed | 套利某一路由未授权 | setRouterAllowed(路由, true) |
Amount too small / too large | 金额超出 min/max 区间 | 调整额度限制或更换金额 |
Default token not set | 快速交换目标未设置 | setDefaultTokenOut(代币) |
Paused | 合同被紧急暂停 | setPaused(false)恢复 |
小结
白名单管"能用什么",交换参数管"用什么、用多少":先用setTokenAllowed与setRouterAllowed划出安全边界,再用setDefaultTokenOut、setDefaultFee、setMin/MaxQuickSwapAmount调好快速交换行为。所有配置函数源码集中在 contract.sol 的管理函数区,对照本文清单逐项打勾,即可让这台以太坊套利机器人安全、可控地跑起来。
【免费下载链接】ethereum-flashloan-mev-botAn arbitrage bot is a smart contract connected to an external automation script that controls its operation.项目地址: https://gitcode.com/gh_mirrors/tradingbot15/ethereum-flashloan-mev-bot
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考