You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用web3.py通过区块哈希获取Avalanche区块数据的报错问题咨询

报错原因

Avalanche C链采用POA类共识机制,区块头的extraData字段长度为80字节,而Web3.py默认采用以太坊POW链的校验规则,要求该字段长度不超过32字节,校验失败就会抛出该错误,以太坊主网是POW链所以不会触发该校验。

解决方案

给Web3实例注入Geth POA中间件,修改校验规则适配POA链即可,修改后的完整代码如下:

from web3 import Web3
# 导入POA中间件
from web3.middleware import geth_poa_middleware

avalanche_url = 'https://api.avax.network/ext/bc/C/rpc'
provider = Web3(Web3.HTTPProvider(avalanche_url))
# 注入POA中间件,layer=0表示优先加载该中间件
provider.middleware_onion.inject(geth_poa_middleware, layer=0)

new_block_filter = provider.eth.filter('latest')

while True:
    block_hashes = new_block_filter.get_new_entries()
    
    for block_hash in block_hashes:
        block = provider.eth.get_block(block_hash.hex())
        # 提取时间戳直接取block.timestamp字段即可,为Unix时间戳格式
        print(f"区块高度: {block.number}, 时间戳: {block.timestamp}")

内容的提问来源于stack exchange,提问作者MikkoP

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 04:15:03