Как долго должна длиться первая синхронизация?

Я запускаю Geth (последняя версия) около 12 часов, и он все еще не закончен.

Командная строка показывает это:

INFO [05-21|12:05:00] Imported new chain segment               blocks=1  txs=9   mgas=0.748 elapsed=40.047ms   mgasps=18.687 number=3742904 hash=f8fd6e…fce9f8

INFO [05-21|12:05:29] Imported new chain segment               blocks=1  txs=2   mgas=0.044 elapsed=16.018ms   mgasps=2.741  number=3742905 hash=04b0be…3d64cd

INFO [05-21|12:05:38] Imported new chain segment               blocks=1  txs=66  mgas=2.851 elapsed=95.126ms   mgasps=29.971 number=3742906 hash=157014…c50cc5

Кстати, у меня не такая уж и плохая скорость интернета, зацените

Скорость интернета

Это нормально ? Должен ли я попробовать использовать другой клиент, например Parity?

PS: я запускал Geth, используя эту командную строку:geth --fast --cache=1024

Последний раз, когда я пробовал, это заняло 2-3 дня.
Ты знаешь, до какого числа я должен дойти? Сейчас я на "номер=3743185"
Тогда все готово. Проверить на etherscan.io
В другой день я выполнил синхронизацию с командой geth attach, которая сегодня не работает. Итак, я попробовал, geth --fast --cache=1024и это работает.
К вашему сведению, в этот момент (2018-11-29) я пытался --syncmode=full --gcmode=archive. Примерно через 18 часов я добрался до блока 2702327. Самый высокий блок — 6799556.

Ответы (6)

Выполните следующие шаги, чтобы проверить состояние синхронизации:

1.) откройте новый экземпляр geth и введите geth attach2.) теперь введитеeth.syncing

Это показывает вам «currentBlock» и «highestBlock».

Что это хотя бы значит? Должны ли они быть одинаковыми или рядом друг с другом?
Они должны быть близко друг к другу. Другими словами, бегите, 100 * eth.syncing.currentBlock / eth.syncing.highestBlockчтобы получить процент выполнения. Когда он приближается к 100, вы синхронизируетесь.
Если eth.syncing имеет значение false, это уже синхронизация, и вы можете проверить eth.blockNumberс помощью обозревателя блоков, если хотите перепроверить. Источник
Так должно быть ЗАКРЫТО или ТОЧНО одно и то же количество блоков? Это очень важно, потому что я синхронизирован на 99,99335%, и я жду еще час в том же блоке. Интересно, я синхронизировался или еще нет?
Забавный факт: geth attachна самом деле это полноценная среда JavaScript! Если вы хотите повторно распечатать процент в цикле по времени, вы можете просто запустить(function percentage() { console.log(100* eth.syncing.currentBlock / eth.syncing.highestBlock); setTimeout(percentage, 10000); } ());

Предполагая, что вы используете операционную систему Linux, вы также можете проверить статус синхронизации (запустите это как пользователь, под которым работает geth):

$ geth --exec eth.syncing.currentBlock attach
3991639

Если он не синхронизируется, он будет отображать только «false».

Или, если вы хотите немного пофантазировать и посмотреть, сколько блоков в секунду синхронизируется, вот идея:

A=$(geth --exec eth.syncing.currentBlock attach)
while true; do
  echo "Currently at block ${A}"
  sleep 1
  B=$(geth --exec eth.syncing.currentBlock attach);
  echo "Reached block ${B}"
  echo "$B-$A"|bc; A=$B
done

Я думаю, вам следует отредактировать вопрос, чтобы спросить: «Как я узнаю, что синхронизация geth завершена?»

Вопрос, который вы задали, был расплывчатым, но я полагаю, что это ответ, который вы искали:

Geth будет продолжать работать вечно. Как только это «сделано», он просто будет сидеть и ждать следующего блока. «Числа», на которые вы ссылаетесь, — это блочные номера, и они будут увеличиваться на протяжении всей вечности. Как только ваш текущий блок достигает самого высокого блока, вы все синхронизируетесь. Как упоминал 5chdn, самый высокий блок можно определить, проверив что-то вроде etherscan.io.

Я позволял Geth работать часами, думая, что жду, пока он «закончится», хотя на самом деле он был сделан уже давно. На момент написания этой статьи самый высокий блок — 3854270.

Благодаря комментарию 5chdn, который действительно был ключом к ответу.

Так что, мы просто остановим его, как только он синхронизируется? Разве это не приведет к рассинхронизации, потому что у него не будет последних блоков?
Он будет синхронизирован до тех пор, пока не будет выпущен следующий блок. Вы можете остановить это, но да, это означает, что вы в конечном итоге выпадете из синхронизации. Если вы хотите всегда оставаться в курсе последних событий, вы можете оставить его включенным. Дело в том, что приложение само по себе никогда не «готово». Но дело доходит до того, что пока все «догоняется».

Если вы запустите geth с "--verbosity 5", он выведет кучу отладочной информации. Это не ускорит процесс, но даст вам понять, что гет не завис.

Я думаю, что люди делают это бегом. Начинает что-то стучать. Они ждут и ждут. А потом они убивают гетов, потому что они выглядят зависшими. Если вы это сделаете, geth просто должен будет начать этот долгий процесс заново, что потребует еще больше времени для синхронизации.

Verbosity 5 позволяет вам набраться терпения и позволить ему работать до тех пор, пока оно не завершится, потому что вы можете видеть, что оно не зависло.

Ну, цифры продолжают расти, сейчас я на «числе = 3744194». Так что я не думаю, что он застрял. Спасибо, я вспомню эту опцию в следующий раз, когда запущу geth :)
уровень детализации 5 значительно замедлит процесс импорта. не меняйте его, просто проверьте статус импорта с помощью консоли javascript
Вы можете включать и выключать многословие. Я предлагаю вам включить его во время DDos-атаки, чтобы вы знали, что узел не завис. Если вы постоянно убиваете узел, потому что считаете, что он завис, он перезапустит ту же транзакцию, которую обрабатывал ранее, и это займет гораздо больше времени.
INFO [05-22|08:14:16] Imported new chain segment               blocks=1   txs=2    mgas=0.067  elapsed=11.000ms  mgasps=6.104   number=3745188 hash=9b8973…920c7e

Проработал около 32 часов. Ран Гет сgeth --rpc --fast -cache=1024

Размер папки Ethereum: 17.9Gb

Обратите внимание, что fast устарел, а также теперь используется по умолчанию. --syncmode— это новый переключатель поведения синхронизации.
Спасибо! Я запомню это. И я также заметил, что у меня было -cache вместо --cache. Перезапустил синхронизацию прошлой ночью и до числа = 3753194.. Намного лучше.
Я могу ошибаться здесь, но я считаю, что мой блокчейн обновлен, и я не осознавал, пока не сравнил, где был мой клиент geth по сравнению со статусом сети для Eth. Итак, я здесь: INFO [05-29|23:07:27] Импортированы новые блоки сегментов цепи=1 txs=8 mgas=0,168 прошедшее=19,999 мс mgasps=8,400 число=3786778 И проверка ethstats.net я могу видите, у меня есть последняя версия, и я даже на один квартал впереди. Так что я в основном готов начать добычу прямо сейчас. Я считаю, что на самом деле я был в курсе всего несколько дней назад, но не знал, что я новичок.

Лично я предпочитаю использовать Parity из-за имеющейся у них функции моментальных снимков. Используя облачный экземпляр GCE, я смог синхронизировать всю цепочку за 30 минут.

Вот объяснение того, как это работает: https://github.com/paritytech/parity/wiki/Warp-Sync-Snapshot-Format .