eth.getBalance()和eth.getBlock(“ latest”)。number返回0

时间:2019-02-26 06:04:38

标签: ethereum web3 geth

以下是geth的控制台输出:

> eth.syncing
{
  currentBlock: 3935087,
  highestBlock: 3935168,
  knownStates: 6020785,
  pulledStates: 6015769,
  startingBlock: 3935060
}

帐户地址为:0x374A7fd1A537646652bc79Ad76B5D4e737373372 TxHash:0x9797923f033a454aac25a7c324b7f37030ebc013cc4f80d85414016653d2e1ab TxReceipt状态:Success 区块高度:3934618(576区块确认) 时间戳记:2小时23分钟前(2019年2月26日02:32:42 AM + UTC)

来自:0x31b98d14007bdee637298086988a0bbd31184523To:0x374a7fd1a537646652bc79ad76b5d4e737373372 值:7.5 Ether($ 0.00)

> eth.blockNumber

0
> eth.getBalance("0x374a7fd1a537646652bc79ad76b5d4e737373372")

0

现在我很困惑,因为葛斯已经同步到块“ 3935087”,但仍然无法获取写在块“ 3934618”中的状态。

1 个答案:

答案 0 :(得分:1)

您的本地状态Trie很可能仍未同步。您必须考虑默认情况下,fast mode中会调用Geth,因此,与其从创世块开始并重新执行区块链历史中的每个txs,它仅同步块头并将它们重组为一个链。

不幸的是,由于您没有重播区块链tx,所以状态树中包括的信息(例如随机数,余额等)将仍然不可用。一旦您将每个块头的节点下载为链接,它们将触发下一个阶段,该阶段将下载每个块中包含的tx并执行它们,以便还同步您的本地状态Trie。

如果您在以太坊主网上运行的时间可能会超过一周,而对于像Rinkeby这样的TestNet,则大约需要2-3天。

在我的团队Lightstreams中,我们正在努力实现内部以太坊兼容的区块链,其性能比官方的以太坊区块链快10倍,并且每笔交易的成本也要低得多,并确保其最终性。如果您想尝试一下,我们将很高兴为您提供服务。 our open-sourced repo