【问题标题】:eth.getBalance() and eth.getBlock("latest").number returning 0eth.getBalance() 和 eth.getBlock("latest").number 返回 0
【发布时间】:2019-07-19 15:08:14
【问题描述】:

以下是geth的控制台输出:

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

账户地址为:0x374A7fd1A537646652bc79Ad76B5D4e737373372 TxHash:0x9797923f033a454aac25a7c324b7f37030ebc013cc4f80d85414016653d2e1ab TxReceipt 状态:Success 区块高度:3934618(576 区块确认) 时间戳: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】:

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

    不幸的是,由于您没有重播区块链交易,状态树中包含的信息(例如随机数、余额等)将不可用。一旦你下载了每个块头的链接,它就会触发下一阶段,下载每个块中包含的 txs 并执行它们,以便同步你的本地状态树。

    如果您在以太坊主网上运行可能需要超过一周的时间,如果是测试网,例如 Rinkeby,则大约需要 2-3 天。

    在我的团队 Lightstreams 中,我们正在努力实施一个内部兼容以太坊的区块链,其性能比官方的以太坊区块链快 10 倍,而且它还提供了更低的每笔交易成本并确保它们的最终确定性。如果您想尝试一下,我们将很高兴为您提供支持。 our open-sourced repo

    【讨论】:

      猜你喜欢
      • 2023-03-10
      • 1970-01-01
      • 2020-09-29
      • 1970-01-01
      • 2020-02-27
      • 2015-03-28
      • 1970-01-01
      • 2012-09-23
      • 2011-03-18
      相关资源
      最近更新 更多