Skip to main content
即刻安装 Cobo WaaS Skill,在 Claude Code、Cursor 等 AI 开发环境中使用自然语言集成 WaaS API,显著提升开发效率 🚀
批量转账智能合约可以在一次链上交易中完成多笔代币转账,适用于批量发放、批量提现等场景。相比循环多次调用转账接口,批量方式能减少多次签名与请求,提升操作效率。本指南将指引您如何使用调用智能合约(Call smart contract)接口调用 Cobo 部署的批量转账智能合约,实现批量代币转账。
使用调用智能合约接口做批量转账的手续费,不一定低于多次调用转账接口逐笔完成的手续费。具体取决于链上 Gas Price 和批量笔数;在笔数较少时,批量方式甚至可能更贵。建议发起前使用预估手续费接口(Estimate transaction fee)比较两种方式的成本。

支持的链

批量转账智能合约已部署在以下 EVM 兼容链上:
  • Ethereum 主网
  • BNB Smart Chain
  • Base 主网
  • Arbitrum One
  • Polygon PoS
批量转账智能合约地址为:
0x3d963e23a9229D2ACd25E9FFC358be1a35460ecc

前提条件

  • 已依照发送您的第一个 API 请求设置账户并成功发送请求。
  • 了解并能使用 Call smart contract 接口。
  • 具备调用链上智能合约的基础知识,包括准备 calldata、查找合约方法,以及在 Token 合约中找到并调用 approve 方法以授权批量转账合约代扣代币。
  • 当前批量转账功能仅支持使用 MPC 钱包和全托管钱包(Web3 钱包)发起交易。

批量转 ETH

以下步骤适用于在支持的链上批量转账 ETH(原生币)的场景:
  1. 准备参数
    • 使用 sendEther 方法生成 calldata(可用 Cobo 提供的脚本或自行生成)。生成 calldata 时需传入:
    • recipients (address[]):收款地址数组。
    • values (uint256[]):每个地址对应的金额数组(单位:wei)。
    • 收款地址数量不得超过 200 个(即 recipients 数组长度 ≤ 200)。
  2. 调用 Call smart contract 接口
  3. 等待交易确认并检查结果
    • 可通过返回的 tx_hash 在链上查询交易状态。
    • 在 Cobo Portal 的交易记录中,可以看到一条合约交互类型的交易。
    • 如果收款地址中包含 Cobo 内部地址,在该地址所属的团队中,还会看到一条对应的充币类型的交易记录。

批量转其他 Token

以下步骤适用于在支持的链上批量转账 ERC-20 Token 的场景:
  1. 调用 Token 合约的 approve 方法授权
    • 每个 Token 都有自己的合约地址,请到对应合约执行 approve
    • 授权对象:批量转账交易的来源地址(即 API 请求中的 source 字段)。
    • 授权金额 ≥ 本次批量转账的金额总和。
      调用合约交互接口前,先通过链上查询或使用 API 接口确认 approve 交易已成功上链并生效。
  2. 准备参数
    • 使用 sendToken 方法生成 calldata(可用 Cobo 提供的脚本或自行生成)。生成 calldata 时需传入:
      • token (address):Token 合约地址(ERC-20)。
      • recipients (address[]):收款地址数组。
      • values (uint256[]):每个地址对应的金额数组(单位:Token 最小单位)。
    • 收款地址数量不得超过 200 个(即 recipients 数组长度 ≤ 200)。
  3. 调用 Call smart contract 接口
  4. 等待交易确认并检查结果
    • 可通过返回的 tx_hash 在链上查询交易状态。
    • 在 Cobo Portal 的交易记录中,可以看到一条合约交互类型的交易。
    • 如果收款地址中包含 Cobo 内部地址,在该地址所属的团队中,还会看到一条对应的充币类型的交易记录。

补充说明

  • 链上手续费可通过 Fee Station 的 Gas Token 或美元稳定币进行代付。
  • 您也可以在区块链浏览器中,通过 Write Contract 功能手动调用批量转账智能合约。此方式需配合支持的浏览器插件(如 Cobo Connect)连接您的 MPC 钱包或全托管钱包(Web3 钱包)发起交易,从而无需调用 API。

常见失败原因

  • 余额不足或授权金额不足。
  • recipients 与金额数组长度不一致。
  • 收款地址数量超过限制。
  • valuecalldata 中金额不一致(针对 ETH 转账)。
  • Gas 预估不足。

生成 calldata 示例脚本

以下为 Cobo 提供的生成 calldata 的 Python 脚本示例,您也可以自行生成。