Как я могу узнать, что такое самый высокий блок?

Я синхронизирую новый узел. Как я могу узнать, что такое последний блок, чтобы я знал, как далеко я должен идти?

30 голосов | спросил paulmorriss 22 Jpm1000000pmFri, 22 Jan 2016 16:46:47 +030016 2016, 16:46:47

9 ответов


36

Для Geth, в другом терминале, присоедините к консоли Geth, например geth attach. Это позволит вам сохранить ваш узел синхронизации без перезапуска, и вы не увидите шумные журналы, как если бы вы просто запускали консоль geth без других параметров.

В консоли запустите eth.syncing

> eth.syncing
{
  currentBlock: 745600,
  highestBlock: 889152,
  startingBlock: 745553
}

Затем вы можете увидеть, где вы находитесь (currentBlock), и блок, который вы все еще должны достичь (upperBlock). (Разница между ними - это количество оставшихся блоков.)

Вы можете запустить eth.syncing несколько раз, чтобы проверить свой прогресс, и он вернет false, когда это будет сделано. Затем вы можете использовать eth.blockNumber, а также сравнить с проводником blockchain, как упоминают другие ответы.

ответил eth 23 Jam1000000amSat, 23 Jan 2016 01:04:59 +030016 2016, 01:04:59
13

Если вы используете Geth:

остановить текущий экземпляр geth, а затем повторно запустить его с помощью аргумента console:

geth console

затем введите:

web3.eth.blockNumber

Он даст вам номер блока как целое, вот документация по функциям . Если вы ищете хеш-блок, вы можете использовать:

web3.eth.getBlock(BLOCK_NUMBER).hash

, поэтому для текущего блока (atm) это будет:

web3.eth.getBlock(887893).hash

и для последнего блока:

web3.eth.getBlock(web3.eth.blockNumber).hash
ответил makevoid 22 Jpm1000000pmFri, 22 Jan 2016 18:48:40 +030016 2016, 18:48:40
7

Вы можете использовать блок-проводник, например Etherchain .

ответил Richard Horrocks 22 Jpm1000000pmFri, 22 Jan 2016 17:34:19 +030016 2016, 17:34:19
6

есть 2 полезных скрипта в https://github.com/lyricalpolymath/Ethereum-Scripts

с запуском geth, скопируйте и вставьте этот код в оконечное окно, чтобы получить простую обратную связь о ходе синхронизации блочной цепи.

geth --exec 'var s = eth.syncing; console.log("\n------------ GETH SYNCING PROGRESS\nprogress: " + (s.currentBlock/s.highestBlock*100)+ " %\nblocks left to parse: "+ (s.highestBlock-s.currentBlock) + "\ncurrent Block: " + s.currentBlock + " of " + s.highestBlock)' attach

вы получите такой вывод

------------ GETH SYNCING PROGRESS 
progress: 81.9161292631709 % 
blocks left to parse: 368837 
current Block: 1670754 of 2039591

загрузите скрипт и с запуском geth, скопируйте и вставьте этот код в окошко терминала, чтобы получить простую обратную связь по процессу синхронизации блочной цепи.

geth --exec "loadScript('GethSyncingProgress_2TimeEstimate.js')" attach

даст вам результат, например

------------ GETH SYNCING PROGRESS - Time estimate
progress: 83.83513931320763
Estimated Time left*: 7d :11h :4m :4s.3
Time it took to parse 10 blocks: 0d :0h :0m :19s.5
blocks left to parse: 330536
ответил b25 9 PM00000020000001431 2016, 14:03:14
5

Кошелек Ethereum отобразит последний номер блока. Официальный веб-сайт Ethereum stats также отображает его. (Примечание: это не соответствует всем одноранговым узлам сети.)

ответил paulmorriss 22 Jpm1000000pmFri, 22 Jan 2016 16:48:45 +030016 2016, 16:48:45
3

web3.eth.blockNumber получает самую последнюю высоту блока на вашем узле. Обратите внимание, что для этого у вас должен быть синхронизированный узел. Когда вы все еще загружаете блок-цепочку, это число будет меньше.

ответил Validity Labs - Sebastian 22 Maypm16 2016, 13:20:20
2

Если вы все еще синхронизируете, вы можете ввести eth.syncing, и он сообщит

  • currentBlock
  • upperBlock
  • startingBlock

Если eth.syncing является ложным, используйте команду eth.blockNumber, указанную sebastian, и сравните ее с сообщенной высотой блока из вашего любимого онлайн-блока.

ответил studycrypto 22 Maypm16 2016, 13:23:44
1

web3.eth.getBlock ( 'последнее'), а затем (функция (х) {console.log (x.timestamp)});.

ответил gor 14 22017vEurope/Moscow11bEurope/MoscowTue, 14 Nov 2017 16:39:18 +0300 2017, 16:39:18
0

Меня раздражало, потому что eth.syncing возвращает false еще до начала синхронизации (а также возвращает false после синхронизации завершена , поэтому невозможно сказать).

Разный способ сделать это, если вам не нужен фактический номер блока: вы можете сравнить временную метку вашего последнего синхронизированного блока с текущим временем:

Date.now()/1000 - eth.getBlock('latest').timestamp

Если эта сумма больше, чем, скажем, 2 минуты (120), то очень вероятно, что у вас нет последних блоков.

ответил danuker 12 TueEurope/Moscow2017-12-12T13:49:44+03:00Europe/Moscow12bEurope/MoscowTue, 12 Dec 2017 13:49:44 +0300 2017, 13:49:44

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

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

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