pan*_*ian 6 ethereum go-ethereum geth
> w3.eth.syncing
AttributeDict({
'currentBlock': 5787386,
'highestBlock': 5787491,
'knownStates': 138355583,
'pulledStates': 138341120,
'startingBlock': 5787335,
})
> w3.eth.blockNumber
0
Run Code Online (Sandbox Code Playgroud)
我已经完成了完全同步,但块号始终为 0。
首席 geth 开发人员 Peter 在这里发布了对此问题的全面回应:在快速同步模式下,块号始终为零。为了给卡弗的答案增添一点色彩,虽然您可能已经收到了最新的块头(eth.currentBlock
),但您的节点可能仍然有很多工作需要下载整个状态树。引用彼得的话:
许多人错误地认为,因为他们拥有区块,所以他们是同步的。不幸的是,情况并非如此,因为没有执行任何交易,所以我们没有任何可用的账户状态(即余额、随机数、智能合约代码和数据)。这些需要单独下载并与最新的块进行交叉检查。此阶段称为状态特里树下载,它实际上与块下载同时运行;唉,现在比下载块要花更长的时间
这与为什么我的以太余额在 geth 中为 0 的情况相同,即使同步已接近完成?但“症状”略有不同。
引用重要的一点:
geth --fast
有一个有趣的效果:在同步完全完成之前,geth 无法提供有关帐户或合约的任何信息。eth.syncing 返回 false 后尝试再次查询余额。
请注意,除了账户和合约之外,在同步完成之前您也无法检索有关区块的任何信息。
当您的同步完全完成时,syncing
将返回 false,例如:
> w3.eth.syncing
False
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
7435 次 |
最近记录: |