У меня есть 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.
extradata
и другие атрибуты от puppet)genesis.json
и identities.js
всем узлам. identities.js
содержит 5 счетов coinbase.init
блокирую генезис на всех узлах и запускаю загрузочный узел на первом дроплете.geth
со следующей команды на каждом узле:
identities.js
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 &
Поскольку у нас есть --nodiscover
флаг, я добавляю все узлы с помощью скрипта bash, чтобы сначала собрать их admin.nodeInfo
с каждого узла, а затем рекурсивно использовать admin.addPeer
через ssh
и geth --exec
что успешно возвращается true
для каждой записи.
После этого мы начинаем майнить на 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 с
Есть ли что-то изначально неправильное в этом подходе? Я действительно не могу продвинуться дальше. Любая подсказка очень ценится, так как я действительно потратил дни, пытаясь понять, как это запустить.
Проблема может быть решена путем определения только двух из 5 авторизованных уплотнителей в genesis.json (с использованием puppeth) и запуска только их с ним --mine
и остальных 3 узлов без него. Мы также добавили несколько таймеров сна между запуском разных экземпляров geth, возможно, это тоже помогло.
Если вы когда-либо сталкивались с подобной проблемой, которая не решает никаких проблем с сетью, вам лучше всего обратиться к EIP 225 на github.
Yo должен передаваться --mine
как параметр, как сказал шеллкодер. Вы также можете отправить заказ на майнинг из прикрепленного клиента geth:
- geth attach node_directory/geth.ipc
> miner.start()
Помните, что учетная запись должна быть указана как герметик в поле дополнительных данных в генезисе json.