Multicall3 批量查询
提示
Multicall3 是用于批量查询的工具。它允许用户通过单个交易或调用,将多个智能合约的函数调用聚合在一起,从而减少链上交互的次数,提高效率并降低 gas 成本。
具体来说,Multicall3
是由 MakerDAO
团队开发的一个智能合约,部署在以太坊主网及其兼容链上。它是 Multicall
和 Multicall2
的升级版,提 供了更强大的功能,比如:
- 批量调用:可以在一次调用中执行多个合约的函数调用(call),并返回所有调用的结果。
- 支持失败处理:
Multicall3
提供了tryAggregate
和tryBlockAndAggregate
等方法,允许用户选择是否忽略某些调用失败(例如,如果某个调用失败,不会导致整个批量调用失败)。 - Gas 优化:通过减少多次单独调用的开销,
Multicall3
显著降低了 gas 费用。 - 支持返回值:可以获取每个调用的返回值,方便开发者处理复杂的查询逻辑。
常用于
- 批量查询状态:如查询多个 ERC-20 代币的余额或多个合约的状态。
- DApp 优化:前端应用可以通过一次调用获取多个数据点,提升用户体验。
- 链下数据聚合:在 DeFi 或其他复杂应用中,批量获取合约数据以进行计算或展示。
Multicall3 合约地址
实际上是调用 Multicall3
部署的合约方法来批量查询数据。
Multicall3
合约地址(以太坊主网):0xcA11bde05977b3631167028862bE2a173976CA11
。Multicall3
在Sepolia
测试网上的合约地址是:0xcA11bde05977b3631167028862bE2a173976CA11
。
批量查询 ERC-20 代币余额
下面使用 ethereum
主网进行测试。