Сеть Geth PoA застряла после полумиллиона блоков - PullRequest
0 голосов
/ 08 января 2019
Системная информация

Моя текущая версия:

Geth Version: 1.8.17-stable Git Commit: 8bbe72075e4e16442c4e28d999edee12e294329e Architecture: amd64 Protocol Versions: [63 62] Network Id: 1 Go Version: go1.10.1 Operating System: linux GOPATH= GOROOT=/usr/lib/go-1.10

Ожидаемое поведение

Сохраняйте нормальную подпись.

Фактическое поведение

У меня была частная сеть go-ethereum с 6 охотниками на тюленей.

Каждый охотник на тюленей управляется:

`` ` каталог = / дом / мятлик command = / bin / bash -c 'geth --datadir sealer4 / --syncmode' full '--port 30393 --rpc --rpcaddr' localhost '--rpcport 8600 --rpcapi =' net, web3, eth '- -networkid 30 --gasprice '1' -unlock 'someaddress' --password sealer4 / password.txt --mine '

`` `

Блокчейн работал хорошо в течение 1-2 месяцев.

Сегодня я обнаружил, что у всех узлов были проблемы. Каждый узел отправлял сообщение «Подписано недавно, нужно ждать других»

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

Восстановленные локальные транзакции в журнале транзакций = 0 аккаунтов = 0 Восстановленные локальные транзакции в журнале транзакций = 0 аккаунтов = 0 Восстановленные локальные транзакции в журнале транзакций = 0 аккаунтов = 0 Восстановленные локальные транзакции в журнале транзакций = 0 аккаунтов = 0

Экспериментируя ту же проблему с 6 уплотнителями, я перезапустил каждый узел, но теперь я застрял в

INFO [01-07 | 18: 17: 30.645] Etherbase автоматически настраивает адрес = 0x5Bc69DC4dba04b6955aC94BbdF129C3ce2d20D34 ИНФОРМАЦИЯ [01-07 | 18: 17: 30.645] Зафиксируйте новый номер горных работ = 488677 sealhash = a506ec… 8cb403 дяди = 0 txs = 0 газ = 0 сборов = 0 истекло = 133.76μs ИНФОРМАЦИЯ [01-07 | 18: 17: 30.645] Подписана недавно, должна ждать других

Первое, что странно, это то, что некоторые узлы зависли на 488677, а другие на 488676, об этой проблеме сообщалось в этой проблеме https://github.com/ethereum/go-ethereum/issues/16406 то же самое для пользователя @lyhbarry

* 1 035 * Пример: Подпись 1

image

Подпись 2

image

Обратите внимание, что голосов не ожидается

Итак, сейчас я выключаю и перезапускаю каждый узел, я обнаружил, что:

  • Каждый узел связан с остальными
  • Каждый узел является частью clique.getSigners ()
  • Каждый узел ожидает подписи другого ...

INFO [01-07|18:41:56.134] Signed recently, must wait for others INFO [01-07|19:41:42.125] Regenerated local transaction journal transactions=0 accounts=0 INFO [01-07|18:41:56.134] Signed recently, must wait for others

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

В комментарии @tudyzhb по этому вопросу упоминается, что:

Ссылка на клик-пломбу v1.8.11, я думаю, что не существует эффективного механизма для повторного пломбирования, когда происходит сбой пломбы по очереди / вне поворота. Так что наша сеть разработчиков бесполезна легко.

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

Synchronisation failed, dropping peer peer=7875a002affc775b err="retrieved hash chain is invalid"

INFO [01-02|16:42:10.902] Signed recently, must wait for others WARN [01-02|16:42:11.960] Synchronisation failed, dropping peer peer=7875a002affc775b err="retrieved hash chain is invalid" INFO [01-02|16:42:12.128] Imported new chain segment blocks=1 txs=0 mgas=0.000 elapsed=540.282µs mgasps=0.000 number=488116 hash=269920…afd3c7 cache=5.99kB INFO [01-02|16:42:12.129] Commit new mining work number=488117 sealhash=f7b00c…787d5c uncles=2 txs=0 gas=0 fees=0 elapsed=307.314µs INFO [01-02|16:42:20.929] Successfully sealed new block number=488117 sealhash=f7b00c…787d5c hash=f17438…93ffe3 elapsed=8.800s INFO [01-02|16:42:20.929] ? mined potential block number=488117 hash=f17438…93ffe3 INFO [01-02|16:42:20.930] Commit new mining work number=488118 sealhash=b09b33…1526ba uncles=2 txs=0 gas=0 fees=0 elapsed=520.754µs INFO [01-02|16:42:20.930] Signed recently, must wait for others INFO [01-02|16:42:31.679] Imported new chain segment blocks=1 txs=0 mgas=0.000 elapsed=2.253ms mgasps=0.000 number=488118 hash=763a32…a579f5 cache=5.99kB INFO [01-02|16:42:31.680] ? block reached canonical chain number=488111 hash=3d44dc…df0be5 INFO [01-02|16:42:31.680] Commit new mining work number=488119 sealhash=c8a5e7…db78a1 uncles=2 txs=0 gas=0 fees=0 elapsed=214.155µs INFO [01-02|16:42:31.680] Signed recently, must wait for others INFO [01-02|16:42:40.901] Imported new chain segment blocks=1 txs=0 mgas=0.000 elapsed=808.903µs mgasps=0.000 number=488119 hash=accc3f…44bc4c cache=5.99kB INFO [01-02|16:42:40.901] Commit new mining work number=488120 sealhash=f73978…c03fa7 uncles=2 txs=0 gas=0 fees=0 elapsed=275.72µs INFO [01-02|16:42:40.901] Signed recently, must wait for others WARN [01-02|16:42:41.961] Synchronisation failed, dropping peer peer=7875a002affc775b err="retrieved hash chain is invalid"

Я тоже вижу некоторые:

INFO [01-02|16:58:10.902] ? block lost number=488205 hash=1fb1c5…a41a42 Эта ошибка в цепочке хэшей была просто предупреждением, поэтому узел продолжал майнить до 2 января, затем я увидел это на каждом из 6 узлов

image

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

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

Итак,

  1. есть идеи?
  2. какие журналы я могу предоставить? я вижу только предупреждения об описанной ошибке и потерянном блоке, но ничего, когда узел перестал работать на майнинг
  3. Связан ли этот пиар? https://github.com/ethereum/go-ethereum/pull/18072
  4. Возможно связано с комментарием @karalabe к этой проблеме https://github.com/ethereum/go-ethereum/issues/16406? 5 Обновление с 1.8.17 до 1.8.20 решит эту проблему?
  5. По-моему, похоже на состояние гонки или что-то в этом роде, так как у меня 2 цепи, одна работает в течение 2 месяцев, другая в течение трех месяцев, и впервые эта ошибка возникает

Это другие связанные вопросы:

https://github.com/ethereum/go-ethereum/issues/16444 (та же проблема, но у меня нет ожидающих голосов в моем снимке)

https://github.com/ethereum/go-ethereum/issues/14381#

https://github.com/ethereum/go-ethereum/issues/16825

https://github.com/ethereum/go-ethereum/issues/16406

...