什么是 EVM 批量转账?
EVM 批量转账是一笔调用 disperse 合约的交易,传入接收方和金额数组;合约把原生币转发给每个地址,或用 transferFrom 拉取代币再用 transfer 推送,整个过程原子执行。一次签名取代数百次,发送方只需支付一次 gas。本页通过链 ID 检查限制为 Sepolia 及其他测试网。
步骤
- 把钱包切换到 Sepolia(页面提供切换按钮),并确保持有一些测试 ETH。
- 选择原生币或粘贴代币合约地址。页面会读取符号、小数位和你的余额。
- 选择批量合约:已知的 Sepolia disperse 合约、你之前部署的合约、自定义地址,或新部署一个(约 0.4M gas)。
- 粘贴接收方,查看汇总,点击发送。关注日志;每个批次都会链接到区块浏览器。
Gas 与限制
所有 gas 由发送方支付。在 Sepolia 上向 150 个全新地址批量转账原生币,一笔交易大约消耗 400 万到 500 万 gas,在签名次数和耗时上远比 150 次单独发送划算。如果钱包的估算失败,请减少每笔交易的接收方数量。
验证合约
BatchTransfer 源码仅 50 行,使用 solc 0.8.28 编译(开启优化器,200 runs)。发布的 JSON 包含 ABI 和创建字节码;你可以用相同的编译器设置复现,或用源码文件在区块浏览器上验证已部署的合约。
相关工具:先用地址验证器验证列表,用小数位换算器换算代币数量,用 ABI 解码器查看 calldata。
常见问题
使用的是哪个合约?
在 Sepolia 上,页面默认使用位于 0xD152f549545093347A162Dce210e7293f1452150 的知名 disperse 合约,它自 2018 年起一直在使用,并在许多链上部署于同一地址。在其他测试网上,或者你更想用自己的合约时,页面会部署上方链接的 BatchTransfer 合约;地址会记录在你的浏览器中。
为什么转代币需要授权?
合约通过 transferFrom 从你的钱包拉取精确的总额,并在同一笔交易中推送给每个接收方。授权额度正是这个总额,而非无限,并会被该批次消耗掉。
每笔交易的上限是多少?
每笔原生币转账大约消耗 9,000 到 35,000 gas,取决于接收方是否为新地址;代币转账约 30,000 到 55,000。在 30M 的区块 gas 上限下,150 个接收方是安全的默认值;若链允许可提高到 300,若交易因 gas 不足失败则调低。
支持 USDT 这类不返回 bool 的代币吗?
支持。BatchTransfer 合约兼容不返回任何值的代币,只在返回 false 或 revert 时才回滚,因此旧式代币也能正常工作。
为什么我的主网钱包被拒绝?
这是有意为之。Ethereum、BNB Smart Chain、Polygon、Base、Arbitrum、OP Mainnet 等都会在链 ID 检查时被拦截,且合约部署按钮永远不会显示。主网使用请参见工具底部的联系说明。