Web3.py调用合约owner()返回零地址,请求代码问题排查
问题分析与解决:Web3.py获取BAYC合约所有者返回零地址
核心结论
你的代码本身没有问题,返回零地址是合约的实际状态,而非代码错误。
具体说明
代码逻辑验证
你的代码完全符合Web3.py读取合约view函数的标准流程:- 正确连接Infura主网节点
- ABI包含
owner()函数的完整定义 - 调用
contractInstance.functions.owner().call()的方式合规,无语法或用法错误
合约实际状态说明
你查询的BAYC合约(地址0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D)项目方已调用renounceOwnership()函数主动放弃合约所有权,链上存储的owner变量因此被设置为零地址0x0000000000000000000000000000000000000000,这是合约的真实状态。额外验证方法
可通过读取合约的OwnershipTransferred事件确认所有权变更历史:# 获取最后一次所有权转移事件 events = contractInstance.events.OwnershipTransferred.get_logs(fromBlock=0) print("最后一次所有权转移:", events[-1])输出会显示最后一次转移的
newOwner为零地址,验证当前所有权状态。
内容的提问来源于stack exchange,提问作者Geo
相关产品推荐
相关产品推荐

