Частная сеть PoA не майнит

У меня есть 5 дроплетов (8 ГБ / 4 vCPU) (включена частная сеть; IP-адреса ниже относятся к этой частной сети), работающие в DigitalOcean. Я поражен, потому что рабочий процесс, который я описываю ниже, отлично работал локально.

  • ОПЕРАЦИОННЫЕ СИСТЕМЫ:4.4.0-116-generic #140-Ubuntu SMP x86_64 x86_64 x86_64 GNU/Linux
  • гет:1.7.3-stable-4bb3c89d

В дроплетах включен ufw, однако я открыл все порты tcp/udp, которые подходят для geth/ssh.

  1. Во-первых, я динамически генерирую блок генезиса, авторизуя 5 узлов в качестве силеров и предварительно выделяя им эфир (также добавляя 100 других учетных записей для последующего использования). (у меня есть extradataи другие атрибуты от puppet)
  2. После этого я убеждаюсь, что geth не запущен, и уничтожаю все процессы bootnode или geth через SSH.
  3. Затем я отправляю объект genesis.jsonи identities.jsвсем узлам. identities.jsсодержит 5 счетов coinbase.
  4. Я успешно initблокирую генезис на всех узлах и запускаю загрузочный узел на первом дроплете.
  5. Далее пришло время начать gethсо следующей команды на каждом узле:
    • $1 передается с помощью bash (1-5) изidentities.js
    • $2 передается с использованием bash и является внутренним IP-адресом en1соответствующей капли.
geth --datadir=/home/node/ --identity=$1 --port=30300 --rpc --rpccorsdomain=* --rpcapi admin,net,clique,eth,web3,miner,personal --rpcport=8500 - -networkid=187 --preload=/home/identities.js --bootnodes enode://a349b003327c3075b779715a733d5076b986aae0225c48a760cd2b0e768b9654c0179014353ebb34eb0b9e7654caf69ec56d80b1b32705277bad953fb7777585@10.135.29.232:30301 --nodiscover --verbosity=6 --unlock 0 --password /home/password.sec - -nat "extip:$2">> ​​/home/node/console.log 2>&1 &
  1. Поскольку у нас есть --nodiscoverфлаг, я добавляю все узлы с помощью скрипта bash, чтобы сначала собрать их admin.nodeInfoс каждого узла, а затем рекурсивно использовать admin.addPeerчерез sshи geth --execчто успешно возвращается trueдля каждой записи.

  2. После этого мы начинаем майнить на 3 из 5 узлов силера, чтобы достичь консенсуса.

Тем не менее, они никогда не майнят никаких блоков и просто застревают в следующем бесконечном цикле, Recalculated downloader QoS valuesдаже если они все еще имеют друг друга в качестве пиров, когда я проверяю admin.peersи net.peerCount. Кроме того, проверка clique.getSigners()успешно возвращает массив, содержащий предварительно выделенные и авторизованные узлы, которые работают и разблокированы в каплях.

Вывод на уровне журнала от geth на всех узлах выглядит следующим образом:

TRACE[03-15|13:02:37] Регистрация узла синхронизации peer=6c8d5ad9f798ede5
DEBUG[03-15|13:02:37] Значения QoS расслабленного загрузчика rtt=20 с достоверность=0,333 ttl=1 м0 с
DEBUG[03-15|13:02:38] Adding static node node="enode://f26f9b43bae5ff8018a723f714f045f55d74a438abf7f043a71c7bf758ebd7fbfa2d31f9bd8f74e06e1d6b0744476013f0a7bf324e06235881a3c1f29fbdad91@10.135.75.26:30300?discport=0"
TRACE[03-15|13:02:38] Новая задача дозвона = "staticdial f26f9b43bae5ff80 10.135.75.26:30300"
DEBUG[03-15|13:02:38] Добавление пира p2p id=f26f9b43bae5ff80 name=Geth/sealer05/v1.7.3... addr=10.135.75.26:30300 peers=4
TRACE[03-15|13:02:38] Задача набора номера выполнена task="staticdial f26f9b43bae5ff80 10.135.75.26:30300"
TRACE[03-15|13:02:38] Стартовый протокол eth/63 id=f26f9b43bae5ff80 conn=staticdial
DEBUG[03-15|13:02:38] Подключенный узел Ethereum id=f26f9b43bae5ff80 conn=staticdial name=Geth/sealer05/v1.7.3-stable-4bb3c89d/linux-amd64/go1.9.2
TRACE[03-15|13:02:38] Регистрация узла синхронизации peer=f26f9b43bae5ff80
DEBUG[03-15|13:02:38] Значения QoS расслабленного загрузчика rtt=20 с достоверность=0,250 ttl=1 м0 с
DEBUG[03-15|13:02:48] Пересчитанные значения QoS загрузчика rtt=20 с, достоверность=0,625 ttl=1 м0 с
INFO [03-15|13:02:52] Обновлено пороговое значение цены пула транзакций price=18000000000
INFO [03-15|13:02:52] Запуск майнинга
INFO [03-15|13:02:52] Зафиксировать новую работу майнинга номер=1 txs=0 uncles=0 истекло=205,437 мкс
TRACE[03-15|13:02:52] Ожидание подписи слота и задержка распространения=-99,476 мс
INFO [03-15|13:02:52] Успешно запечатан новый номер блока=1 хэш=4c706b…3edb3c
DEBUG[03-15|13:02:52] Статистика кеша Trie после промахов фиксации=14 выгрузок=0
INFO [03-15|13:02:52] 🔨 номер потенциального блока = 1 хеш = 4c706b…3edb3c
DEBUG[03-15|13:02:52] Повторная вставка устаревших транзакций count=0
TRACE[03-15|13:02:52] Хэш переданного блока=4c706b…3edb3c получатели=2 продолжительность=2562047ч47м16.854с
INFO [03-15|13:02:52] Зафиксировать новую работу майнинга номер=2 txs=0 uncles=0 истекло=601,597 мкс
INFO [03-15|13:02:52] Подписано недавно, нужно подождать других
TRACE[03-15|13:02:52] Хэш объявленного блока=4c706b…3edb3c получатели=2 продолжительность=2562047ч47м16.854с
DEBUG[03-15|13:02:52] Поставленный в очередь распространяемый блок peer=6c8d5ad9f798ede5 number=1 hash=b88988…21011c поставленный в очередь=1
DEBUG[03-15|13:02:52] Импорт распространенного блока peer=6c8d5ad9f798ede5 number=1 hash=b88988…21011c
ПРЕДУПРЕЖДЕНИЕ [03-15|13:02:52] Отброшенный неверный распространенный номер блока=1 хэш=b88988…21011c
TRACE[03-15|13:02:52] Хэш распространяемого блока=b88988…21011c получатели=1 продолжительность=848,472 мкс
DEBUG[03-15|13:02:52] Поставленный в очередь распространяемый блок peer=3869118cfc562f9e number=1 hash=b88988…21011c поставленный в очередь=1
DEBUG[03-15|13:02:52] Импорт распространенного блока peer=3869118cfc562f9e number=1 hash=b88988…21011c
ПРЕДУПРЕЖДЕНИЕ [03-15|13:02:52] Отброшенный неверный распространенный номер блока=1 хэш=b88988…21011c
TRACE[03-15|13:02:52] Хэш распространяемого блока=b88988…21011c получатели=0 продолжительность=370,18 мкс
DEBUG[03-15|13:02:53] Поставленный в очередь распространяемый блок peer=3869118cfc562f9e number=1 hash=dffae0…4fe644 queued=1
DEBUG[03-15|13:02:53] Импорт распространенного блока peer=3869118cfc562f9e number=1 hash=dffae0…4fe644
ПРЕДУПРЕЖДЕНИЕ [03-15|13:02:54] Отброшено неправильное распространение блока номер=1 хэш=dffae0…4fe644
TRACE[03-15|13:02:54] Хэш распространяемого блока=dffae0…4fe644 получателей=1 продолжительность=1,629 мс
DEBUG[03-15|13:02:54] Поставленный в очередь распространяемый блок peer=05eb0ebc7dec7aa9 number=1 hash=dffae0…4fe644 queued=1
DEBUG[03-15|13:02:54] Импорт распространенного блока peer=05eb0ebc7dec7aa9 number=1 hash=dffae0…4fe644
ПРЕДУПРЕЖДЕНИЕ [03-15|13:02:54] Отброшено неправильное распространение блока номер=1 хэш=dffae0…4fe644
TRACE[03-15|13:02:54] Хэш распространяемого блока=dffae0…4fe644 получателей=1 продолжительность=739,317 мкс
TRACE[03-15|13:03:05] Задача дозвона выполнена task="дождаться истечения срока действия истории дозвона (29,999994993 с)"
TRACE[03-15|13:03:05] Новая задача дозвона="дождитесь истечения срока действия истории дозвона (660,45357 мс)"
TRACE[03-15|13:03:06] Задача набора номера выполнена task="дождаться истечения срока действия истории набора номера (660,45357 мс)"
TRACE[03-15|13:03:06] Новая задача дозвона="дождитесь истечения срока действия истории дозвона (702,908968 мс)"
TRACE[03-15|13:03:07] Задача набора номера выполнена task="дождитесь истечения срока действия истории набора номера (702.908968 мс)"
TRACE[03-15|13:03:07] Новая задача дозвона="дождитесь истечения срока действия истории дозвона (700,379857 мс)"
TRACE[03-15|13:03:08] Задача дозвона выполнена task="дождаться истечения срока действия истории дозвона (700,379857 мс)"
DEBUG[03-15|13:03:08] Пересчитанные значения QoS загрузчика rtt=20 с, достоверность=0,812 ttl=1 м0 с
DEBUG[03-15|13:03:28] Пересчитанные значения QoS загрузчика rtt=20 с, достоверность=0,906 ttl=1 м0 с
DEBUG[03-15|13:03:48] Пересчитанные значения QoS загрузчика rtt=20 с, достоверность=0,953 ttl=1 м0 с
DEBUG[03-15|13:04:08] Пересчитанные значения QoS загрузчика rtt=20 с, достоверность=0,977 ttl=1 м0 с
DEBUG[03-15|13:04:28] Пересчитанные значения QoS загрузчика rtt=20 с, достоверность=0,988 ttl=1 м0 с
DEBUG[03-15|13:04:48] Пересчитанные значения QoS загрузчика rtt=20 с, достоверность=0,994 ttl=1 м0 с
DEBUG[03-15|13:05:08] Пересчитанные значения QoS загрузчика rtt=20 с, достоверность=0,997 ttl=1 м0 с
DEBUG[03-15|13:05:28] Пересчитанные значения QoS загрузчика rtt=20 с, достоверность=0,999 ttl=1 м0 с
DEBUG[03-15|13:05:48] Пересчитанные значения QoS загрузчика rtt=20 с, достоверность=0,999 ttl=1 м0 с
DEBUG[03-15|13:06:08] Пересчитанные значения QoS загрузчика rtt=20 с, достоверность=1,000 ttl=1 м0 с
DEBUG[03-15|13:06:28] Пересчитанные значения QoS загрузчика rtt=20 с, достоверность=1,000 ttl=1 м0 с
DEBUG[03-15|13:06:48] Пересчитанные значения QoS загрузчика rtt=20 с, достоверность=1,000 ttl=1 м0 с
DEBUG[03-15|13:07:08] Пересчитанные значения QoS загрузчика rtt=20 с, достоверность=1,000 ttl=1 м0 с
DEBUG[03-15|13:07:28] Пересчитанные значения QoS загрузчика rtt=20 с, достоверность=1,000 ttl=1 м0 с
DEBUG[03-15|13:07:48] Пересчитанные значения QoS загрузчика rtt=20 с, достоверность=1,000 ttl=1 м0 с
DEBUG[03-15|13:08:08] Пересчитанные значения QoS загрузчика rtt=20 с, достоверность=1,000 ttl=1 м0 с
DEBUG[03-15|13:08:28] Пересчитанные значения QoS загрузчика rtt=20 с, достоверность=1,000 ttl=1 м0 с
DEBUG[03-15|13:08:48] Пересчитанные значения QoS загрузчика rtt=20 с, достоверность=1,000 ttl=1 м0 с
DEBUG[03-15|13:09:08] Пересчитанные значения QoS загрузчика rtt=20 с, достоверность=1,000 ttl=1 м0 с
DEBUG[03-15|13:09:28] Пересчитанные значения QoS загрузчика rtt=20 с, достоверность=1,000 ttl=1 м0 с
DEBUG[03-15|13:09:48] Пересчитанные значения QoS загрузчика rtt=20 с, достоверность=1,000 ttl=1 м0 с
DEBUG[03-15|13:10:08] Пересчитанные значения QoS загрузчика rtt=20 с, достоверность=1,000 ttl=1 м0 с
DEBUG[03-15|13:10:28] Пересчитанные значения QoS загрузчика rtt=20 с, достоверность=1,000 ttl=1 м0 с
DEBUG[03-15|13:10:48] Пересчитанные значения QoS загрузчика rtt=20 с, достоверность=1,000 ttl=1 м0 с
DEBUG[03-15|13:11:08] Пересчитанные значения QoS загрузчика rtt=20 с, достоверность=1,000 ttl=1 м0 с
DEBUG[03-15|13:11:28] Пересчитанные значения QoS загрузчика rtt=20 с, достоверность=1,000 ttl=1 м0 с
DEBUG[03-15|13:11:48] Пересчитанные значения QoS загрузчика rtt=20 с, достоверность=1,000 ttl=1 м0 с
DEBUG[03-15|13:12:08] Пересчитанные значения QoS загрузчика rtt=20 с, достоверность=1,000 ttl=1 м0 с
DEBUG[03-15|13:12:28] Пересчитанные значения QoS загрузчика rtt=20 с, достоверность=1,000 ttl=1 м0 с
DEBUG[03-15|13:12:48] Пересчитанные значения QoS загрузчика rtt=20 с, достоверность=1,000 ttl=1 м0 с
DEBUG[03-15|13:13:08] Пересчитанные значения QoS загрузчика rtt=20 с, достоверность=1,000 ttl=1 м0 с
DEBUG[03-15|13:13:28] Пересчитанные значения QoS загрузчика rtt=20 с, достоверность=1,000 ttl=1 м0 с
DEBUG[03-15|13:13:48] Пересчитанные значения QoS загрузчика rtt=20 с, достоверность=1,000 ttl=1 м0 с
DEBUG[03-15|13:14:08] Пересчитанные значения QoS загрузчика rtt=20 с, достоверность=1,000 ttl=1 м0 с
DEBUG[03-15|13:14:28] Пересчитанные значения QoS загрузчика rtt=20 с, достоверность=1,000 ttl=1 м0 с
DEBUG[03-15|13:14:48] Пересчитанные значения QoS загрузчика rtt=20 с, достоверность=1,000 ttl=1 м0 с
DEBUG[03-15|13:15:08] Пересчитанные значения QoS загрузчика rtt=20 с, достоверность=1,000 ttl=1 м0 с
DEBUG[03-15|13:15:28] Пересчитанные значения QoS загрузчика rtt=20 с, достоверность=1,000 ttl=1 м0 с
DEBUG[03-15|13:15:48] Пересчитанные значения QoS загрузчика rtt=20 с, достоверность=1,000 ttl=1 м0 с
DEBUG[03-15|13:16:08] Пересчитанные значения QoS загрузчика rtt=20 с, достоверность=1,000 ttl=1 м0 с
DEBUG[03-15|13:16:28] Пересчитанные значения QoS загрузчика rtt=20 с, достоверность=1,000 ttl=1 м0 с
DEBUG[03-15|13:16:48] Пересчитанные значения QoS загрузчика rtt=20 с, достоверность=1,000 ttl=1 м0 с
DEBUG[03-15|13:17:08] Пересчитанные значения QoS загрузчика rtt=20 с, достоверность=1,000 ttl=1 м0 с
TRACE[03-15|13:17:28] Обновление сопоставления портов proto=tcp extport=30300 intport=30300 interface=ExtIP(10.135.29.232)
DEBUG[03-15|13:17:28] Пересчитанные значения QoS загрузчика rtt=20 с, достоверность=1,000 ttl=1 м0 с

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

Ответы (2)

Проблема может быть решена путем определения только двух из 5 авторизованных уплотнителей в genesis.json (с использованием puppeth) и запуска только их с ним --mineи остальных 3 узлов без него. Мы также добавили несколько таймеров сна между запуском разных экземпляров geth, возможно, это тоже помогло.

Если вы когда-либо сталкивались с подобной проблемой, которая не решает никаких проблем с сетью, вам лучше всего обратиться к EIP 225 на github.

Yo должен передаваться --mineкак параметр, как сказал шеллкодер. Вы также можете отправить заказ на майнинг из прикрепленного клиента geth:

- geth attach node_directory/geth.ipc
> miner.start()

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