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

问题描述 投票:0回答:1

以下是geth的控制台输出:

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

帐户地址是:0x374A7fd1A537646652bc79Ad76B5D4e737373372 TxHash:0x9797923f033a454aac25a7c324b7f37030ebc013cc4f80d85414016653d2e1ab TxReceipt状态:Success Block Height:3934618(576 Block Confirmations)TimeStamp:2小时23分钟前(Feb-26-2019 02:32:42 AM + UTC)

来自:0x31b98d14007bdee637298086988a0bbd31184523To:0x374a7fd1a537646652bc79ad76b5d4e737373372价值:7.5 Ether(0.00美元)

> eth.blockNumber

0
> eth.getBalance("0x374a7fd1a537646652bc79ad76b5d4e737373372")

0

现在我很困惑,因为geth已同步阻止“3935087”,但仍然无法获取块“3934618”中写入的状态。

ethereum web3 geth
1个回答
1
投票

很可能你的本地国家特里仍未同步。您必须考虑默认Geth在fast mode中调用,因此它不是从创世块开始并重新执行区块链历史中的每个tx,而是仅同步块头并将它们重新组合成链。

不幸的是,由于你没有重放区块链txs,状态trie中包含的信息,如nonce,balances等......将不再可用。一旦你节点下载每个块标题链接它们将触发下一个阶段,下载每个块中包含的tx并按顺序执行它们,以便同步你的本地状态trie。

如果您在Ethereum主网上运行可能需要一周以上的时间,如果是TestNet,例如Rinkeby,则需要大约2-3天。

在我的团队Lightstreams中,我们正在努力实施内部与以太坊兼容的区块链,其性能比官方以太坊区块链快10倍,并且每个tx的成本也更低,并确保了它们的最终性。如果您觉得试一试,我们很乐意为您提供帮助。 our open-sourced repo

© www.soinside.com 2019 - 2024. All rights reserved.