Synchronization

同步:為什麼startingBlock 領先於currentBlock?

  • July 30, 2019
> eth.syncing
{
 currentBlock: 908716,
 highestBlock: 928604,
 knownStates: 0,
 pulledStates: 0,
 startingBlock: 908891
}

看起來同步是從塊 908891 開始的,雖然目前塊是 908716。那麼塊 908717..908890 是如何同步的呢?

startingBlock: QUANTITY - 導入開始的塊(只會在同步到達他的頭部後重置)

currentBlock: QUANTITY - 目前區塊,與 eth_blockNumber 相同

查看 Geth 原始碼,

# StartingBlock is the block number at which synchronisation started.
   startingBlock: Long!
# CurrentBlock is the point at which synchronisation has presently reached.
   currentBlock: Long!

因此,startingBlock 是您最初開始同步的點,即當您第一次載入客戶端時,而目前塊是您已取得的進度。當您開始同步客戶端時,highestBlock == startingBlock。

換句話說,當您開始同步時

目前塊 <= 起始塊 <= 最高塊

但是,隨著同步的進行,您會期望目前塊(您鏈同步的塊)通過起點。

起始塊 <= 目前塊 <= 最高塊

最終,

目前塊 === 最高塊

並且eth.syncing將返回零

參考:

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