Что известно?

Я использую geth клиент (VERSION: 1.4.12-stable-421df866) для синхронизации с тестовой сетью Ethereum. Чтобы проверить состояние синхронизации, я запустил web3.eth.syncing в консоли geth. Это результат, который я вижу:

{ 
    currentBlock: 1743872,
    highestBlock: 1744966,
    knownStates: 1193229,
    pulledStates: 1143482,
    startingBlock: 1732018
}

Каждый раз, когда я проверяю статус, значение knownStates продолжает расти.

  1. Что означает knownStates в выводе выше?
  2. Как узнать, насколько я уверен, что вы полностью синхронизированы с цепочкой цепочек тестов?
16 голосов | спросил maheshmurthy 7 +03002016-10-07T23:57:30+03:00312016bEurope/MoscowFri, 07 Oct 2016 23:57:30 +0300 2016, 23:57:30

3 ответа


8

во время быстрой синхронизации web3.eth.syncing загружает состояние trie.

knownStates - количество узлов, о которых знает sync algo о

pulledStates - это номер, который он уже загрузил нет никакого способа заранее знать, сколько записей состояния есть, и я не понял значимого статистического способа его оценки, текущая сеть составляет около 2.8M.

ответил Badr Bellaj 8 +03002016-10-08T02:10:45+03:00312016bEurope/MoscowSat, 08 Oct 2016 02:10:45 +0300 2016, 02:10:45
6

От код :

// SyncProgress gives progress indications when the node is synchronising with
// the Ethereum network.
type SyncProgress struct {
    StartingBlock uint64 // Block number where sync began
    CurrentBlock  uint64 // Current block number where sync is at
    HighestBlock  uint64 // Highest alleged block number in the chain
    PulledStates  uint64 // Number of state trie entries already downloaded
    KnownStates   uint64 // Total number os state trie entries known about
}
ответил atomh33ls 23 J000000Sunday17 2017, 21:55:04
3

Я рискну, что:

  1. Каждый блок содержит корень Merkle транзакций, а также корень Merkle всего состояния системы. Состояние вычисляется из истории транзакций. Загружая только блоки, которые довольно быстро, Geth может знать только корень Merkle всех состояний. Затем ему необходимо получить транзакции и вычислить те состояния, которые медленны. Я полагаю, что knownStates указывает, где он находится в вычислении. Фактически, вместо того, чтобы вычислять состояние, Geth также может загрузить его из взаимодействующих узлов. Я считаю, что это pulledStates, хотя я мог ошибаться.
  2. highestBlock заключается в том, как далеко он должен идти, грубо говоря, поскольку он, по-видимому, не обновляет это значение во время синхронизации. Посмотрите Etherscan для более современного номера блока.
ответил Xavier Leprêtre B9lab 8 +03002016-10-08T00:40:54+03:00312016bEurope/MoscowSat, 08 Oct 2016 00:40:54 +0300 2016, 00:40:54

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132