Brownie Eth切换网络后network.chain.id未更新问题求助
Brownie循环切换网络时chain.id不更新的解决方案
问题根源及修复步骤
1. 变量名错误(核心问题)
你代码里循环迭代的是name变量,但调用network.connect()时传入的是未在循环内更新的network_name,导致每次都连接同一个初始网络,所以chain.id始终不变。直接把network.connect的参数改成循环变量name即可:
for name in ["fuji-testnet", "polygon-test", "goerli"]: network.disconnect() network.connect(name, launch_rpc=False) # 将network_name替换为name print(network.show_active(), network.is_connected(), network.chain.id)
2. Brownie链对象缓存问题
如果修正变量名后仍存在chain.id不更新的情况,是因为network.chain存在缓存机制,切换网络后不会自动刷新。可以改用web3.eth.chain_id获取实时链ID,这个值会随网络切换同步更新:
from brownie import network, web3 for name in ["fuji-testnet", "polygon-test", "goerli"]: network.disconnect() network.connect(name, launch_rpc=False) print(network.show_active(), network.is_connected(), web3.eth.chain_id)
内容的提问来源于stack exchange,提问作者Luke Byrne
相关产品推荐
相关产品推荐

