Go-Ethereum

為什麼 web3.eth.getBlockNumber().then(console.log) 返回 0

  • October 28, 2020

我在 Ubuntu 18.04 中建構了一個乙太坊全節點。geth正在通過以下命令執行:

nohup geth --rpcaddr 127.0.0.1 -rpcport 8545 --rpc -rpcapi "wb3,admin,eth,personal,net" --ws --wsaddr 127.0.0.1 --wsport 8546 --wsorigins "*" --datadir "/data/ethereum" --syncmode fast --maxpeers 10000 --cache 8196 >> geth.log 2>&1 &

一行 geth.log 內容:

INFO [06-06|00:59:22.250] Imported new block headers               count=1    elapsed=6.793ms     number=10206927 hash="92683d…04062d"

truffle配置如下:

development: {
    host: "127.0.0.1",     // Localhost (default: none)
    port: 8545,            // Standard Ethereum port (default: none)
    network_id: "*",       // Any network (default: none)
   }

在松露控制台中,當我使用命令時web3.eth.getBlockNumber().then(console.log),它只是返回

0
undefined

為什麼不是 10206927(來自 geth.log)或接近的數字?

提前致謝!

可能是web3.eth.getBlockNumber().then(console.log)返回0,因為geth尚未開始塊同步,但只有標頭導入。

當標頭的導入完成並且塊同步將開始時,web3.eth.getBlockNumber().then(console.log)可能會返回一個非零值。

希望這可以幫助。

如果您的節點正在同步,請執行以下操作:

  this.web3.eth.isSyncing((error: Error, sync: any) => {
       if (!error && sync) {
           console.log(sync.currentBlock);
           console.log(sync.highestBlock);
       }
   });

引用自:https://ethereum.stackexchange.com/questions/84011