向AsyncEventFilterBuilder传入AsyncWeb3实例触发参数错误
AsyncWeb3传入AsyncEventFilterBuilder.deploy时触发ValueError的解决方案
问题现象
向异步事件构建器传入AsyncWeb3实例后,执行代码AsyncEventFilterBuilder.deploy(AsyncWeb3)会触发以下错误:
ValueError: Invalid web3 argument: got: <web3.main.AsyncWeb3 object at ...`
问题根源
错误源于_utils.events:L450处的校验逻辑:
if not isinstance(async_w3, web3.Web3):
这段代码仅检查传入实例是否为同步的web3.Web3类型,完全忽略了异步的web3.AsyncWeb3,但如果传入同步Web3实例,后续会引发协程相关问题,说明原校验逻辑完全倒置。
修复方案
将该校验代码修改为:
if isinstance(async_w3, web3.Web3):
修改后会拒绝同步Web3实例,允许合法的AsyncWeb3实例通过校验,实现预期行为。
内容的提问来源于stack exchange,提问作者adam
相关产品推荐
相关产品推荐

