为什么我的以太网块号为0,即使同步几乎完成?

时间:2018-06-14 13:19:14

标签: ethereum go-ethereum geth

> w3.eth.syncing
AttributeDict({
  'currentBlock': 5787386,
  'highestBlock': 5787491,
  'knownStates': 138355583,
  'pulledStates': 138341120,
  'startingBlock': 5787335,
})

> w3.eth.blockNumber
0

我完成了同步,但是blocknumber始终为0。

2 个答案:

答案 0 :(得分:0)

这与Why is my ether balance 0 in geth, even though the sync is nearly complete?的情况相同,但症状略有不同"。

引用重要的一点:

  

geth --fast有一个有趣的效果:在同步完全完成之前,geth无法提供有关帐户或合同的任何信息。

     

在eth.syncing返回false后再次尝试查询余额。

请注意,除了帐户和合同之外,在同步完成之前,您也无法检索有关块的任何信息。

当您的同步完全完成后,syncing将返回false,例如:

> w3.eth.syncing
False

答案 1 :(得分:0)

首席geth开发人员Peter在这里Block number is always zero with fast syncmode发表了对该问题的详尽答复。要为雕刻师的答案添加更多颜色,虽然您可能已经收到了最新的块标题(eth.currentBlock),但您的节点可能仍有许多工作要做,可以下载整个状态树。引用彼得:

  

许多人错误地认为,因为他们有积木,所以他们   同步中。不幸的是,事实并非如此,因为没有交易   已执行,因此我们没有任何可用的帐户状态(即余额,   随机数,智能合约代码和数据)。这些需要下载   单独进行交叉检查,并与最新的块进行交叉检查。这个阶段是   称为状态Trie下载,它实际上与   块下载; las,如今花费的时间比   下载块