2

根据 Etherscan,我有 7.5 Ether,但是当我在 Javascript 控制台内执行 eth.getBalance(eth.accounts[0]) 时,它总是返回“0”

这就是我将 geth 连接到 rinkeby 的方式 (运行时间超过 24 小时)

geth  --rinkeby

这是同步的状态

λ geth --rinkeby attach ipc:\\.\pipe\geth.ipc
Welcome to the Geth JavaScript console!

instance: Geth/v1.9.9-stable-01744997/windows-amd64/go1.13.4
coinbase: 0x7f9153e8fe06c4b3eb10e8457c20d0559921de5c
at block: 0 (Wed, 12 Apr 2017 16:59:06 CEST)
 datadir: C:\Users\andre_000\AppData\Local\Ethereum\rinkeby
 modules: admin:1.0 clique:1.0 debug:1.0 eth:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 txpool:1.0 web3:1.0

> eth.syncing
{
  currentBlock: 5746334,
  highestBlock: 5746402,
  knownStates: 32641057,
  pulledStates: 32636964,
  startingBlock: 5746304
}
> eth.getBalance(eth.accounts[0])
  0
> eth.getBalance(eth.coinbase)
  0
> web3.fromWei(eth.getBalance(eth.coinbase)); 
  0
> eth.getBalance("0x7f9153e8fe06c4b3eb10e8457c20d0559921de5c")
  0
> eth.blockNumber
  0

杜 -h 30G

4

1 回答 1

0

听起来geth还没有同步。

请在您的 geth 控制台中输入:

eth.getBlock("latest").number

在这篇文章中,你应该得到5757199或更高。

正如Péter Szilágyi(以太坊团队负责人)所说,“同步以太坊是一个痛点” 。

来自https://github.com/ethereum/go-ethereum/issues/16875

Geth 当前的默认同步模式称为快速同步。不是从创世块开始并重新处理曾经发生的所有交易(可能需要数周时间),而是快速同步下载块,并且只验证相关的工作量证明。下载所有块是一个简单而快速的过程,并且会相对快速地重新组装整个链。

许多人错误地认为,因为他们有块,他们是同步的。不幸的是,情况并非如此,因为没有执行任何交易,所以我们没有任何可用的账户状态(即余额、随机数、智能合约代码和数据)。这些需要单独下载并与最新块进行交叉检查。这个阶段称为状态 trie 下载,它实际上与块下载同时运行;唉,现在比下载块需要更长的时间。

那么,什么是状态尝试?在以太坊主网中,已经有大量账户,用于跟踪每个用户/合约的余额、nonce 等。然而,账户本身不足以运行节点,它们需要以加密方式链接到每个块,以便节点可以实际验证账户没有被篡改。这种加密链接是通过在账户之上创建一个树数据结构来完成的,每一层将它下面的层聚合成一个更小的层,直到你到达单个根。这个包含所有帐户和中间加密证明的巨大数据结构称为状态树。

好的,那么为什么这会造成问题?这种 trie 数据结构是数亿个微小密码证明(trie 节点)的错综复杂的互连。要真正拥有一个同步节点,您需要下载所有帐户数据以及所有微小的加密证明,以验证网络中没有人试图欺骗您。这本身就已经是数量惊人的数据项。更混乱的部分是这些数据在不断变化:在每个块(15 秒),从这个树中删除大约 1000 个节点,并添加大约 2000 个新节点。这意味着您的节点需要同步每秒更改 200 次的数据集。最糟糕的是,当你在同步时,网络正在向前移动,并且你开始下载的状态可能会在你下载时消失,因此,您的节点需要在尝试收集所有最新数据的同时不断关注网络。但在您真正收集所有数据之前,您的本地节点无法使用,因为它无法以加密方式证明任何帐户的任何信息。

如果你看到你落后于主网 64 个区块,那么你还没有同步,甚至还没有关闭。您刚刚完成了块下载阶段,并且仍在运行状态下载。您可以通过看似无穷无尽的 Imported state entries [...] 日志流自己看到这一点。在您的节点真正上线之前,您也需要等待。

于 2020-01-08T15:36:27.860 回答