如何使用Web3.py调用合约balanceOf方法查询指定区块的代币余额
你遇到的403报错是因为使用的Infura免费节点套餐不支持历史区块状态查询。普通以太坊全节点仅保留最近128个区块的状态数据,要查询更早区块的代币余额,需要访问归档节点,而Infura免费层默认没有开放归档节点的访问权限,所以请求被直接拒绝。
你的call()传入block_identifier参数的语法符合Web3.py的规范,代码本身没有语法问题,可通过以下方式解决:
- 升级Infura付费套餐,开通归档节点访问权限,原有代码无需修改即可正常运行
- 更换支持免费归档查询的RPC服务商,替换Web3实例初始化时的RPC节点地址即可,无需修改查询逻辑
- 若仅需少量临时查询,可直接到以太坊区块浏览器的USDC合约页面,手动检索指定地址在对应区块高度的余额
内容的提问来源于stack exchange,提问作者juju
相关产品推荐
相关产品推荐

