一次通话即可获取多个地址的ETH和ERC20代币余额

这个合同的代码看似简单。 您只需拥有一个数组,当您遍历每个地址和所需令牌时,便会在其中附加余额。 它的主要功能嵌入在下面,但是您可以在此处找到完整的源代码。

您可以在此处找到完整的合同代码。

演示和NPM软件包

您可以在此处查看其操作演示。 它使用上面的协定,包装在方便的web3.js和ethers.js兼容库中,该库处理一些输入和输出的棘手问题。

您可以在此处找到用于演示的NPM软件包,其中包括代码示例。 该库还默认使用已部署在主网上的合同,因此,您无需自己部署合同即可立即开始使用此合同。 就像安装软件包一样简单,并使用以下两个功能之一:

有关详细信息,请参阅包装中的自述文件。

…但是总有一个陷阱

但是,使用智能合约作为功能存在一个意外的问题,那就是限制天然气的使用。 尽管事实上我们正在进行不需要事务的只读调用,但仍会考虑块气限制,并且超出单个块限制的调用将被拒绝。

当前的区块气体限制为800万左右,此功能每100天平使用大约500,000气体。 因此,为了安全起见,每个合约方法调用应限制在大约1,000个总余额调用(地址*令牌)中。 即使使用此合同方法将余额检查分为几个呼叫,与拆分数千个呼叫相比,您仍将获得不可思议的时间节省。