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

Я использую биткойн на Ubuntu без головы. Так что нет графического интерфейса, чтобы сказать мне, когда это будет сделано.

Так откуда я знаю?

Ответы (7)

Запустите bitcoind getinfoв выбранной вами оболочке и сравните количество блоков, указанное после слова «блоки», с количеством блоков, указанным здесь . Если два числа совпадают, ваш клиент обновлен.

Вот скрипт, который делает именно это:

echo `bitcoin-cli getblockcount 2>&1`/`wget -O - https://blockchain.info/q/getblockcount 2>/dev/null`

Беги bitcoind getblocktemplate. Если вы не догнали, то он вернется с ошибкой -10.

Я проверил это, это не так. (Хотя я проверил это в тестовой сети, но в этом случае оно не должно отличаться от основной сети.)
Это небольшой хак, но он более или менее работает. Большой :)
@StevenRoose, в чем проблема, которую вы обнаружили с помощью этого метода? Когда это не сработало? Кажется, это работает для меня, выдавая ошибку, когда я нахожусь в процессе загрузки блоков.
@StephenM347, прошло больше года, возможно, тогда была проблема, которая уже решена.

Теперь bitcoindкоманда показывает разные ошибки.

Новый способ проверки сbitcoin-cli getblocktemplate

Использование сценария было опубликовано там, где я впервые столкнулся с этим вопросом.

Как проверить актуальность цепочки блоков с помощью bitcoind или json-rpc?

Самый простой способ - запустить

bitcoind -blocknotify myscript.sh %s

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

Альтернативный метод (работа с последними версиями), который не зависит от внешних веб-сайтов, заключается в использовании bitcoin-cli getblockchaininfoи сравнении headersполя и blocksполя.

В настоящее время, чтобы синхронизировать блокчейн быстрее, заголовки загружаются перед фактическими блоками. Это известно как синхронизация заголовков . Как следствие, количество заголовков блоков во время начальной загрузки блоков (IBD) будет выше, чем количество блоков. Когда это число «догоняет» количество блоков, мы можем сказать, что «в курсе» блокчейна, который нам рекламировали наши коллеги.

Я написал скрипт для запуска bitcoind и вывода точек еще в фазе IBD. Когда блокчейн будет обновлен, он выведет сообщение. Вот скрипт: https://github.com/frz-dev/btcutils/blob/master/bitcoin-core/start-bitcoind.sh

Имея только веб-браузер, вы можете посетить http://bitcoinwatch.com/ , чтобы узнать высоту или количество блоков в текущей сети Биткойн.

Или направьте ваш bitcoin-cli на рабочий сервер Bitcoind и выполните следующую команду (обратите внимание, вместо этого вы должны использовать файл *.conf):

% ../bin/bitcoin-cli -conf=mainNet-productionServer.conf getblockcount

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

% ../bin/bitcoin-cli -conf=mainNet-localServer.conf getpeerinfo

В качестве альтернативы, следующая команда libbitcoin-explorer (bx, играет роль, аналогичную биткойн-cli) предоставляет только одно число, когда клиент bx подключается к производственному биткойн-серверу (ранее называвшемуся Obelisk), чтобы запросить у него высоту блокчейна.

% bx высота выборки

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

% ../bin/bitcoin-cli -conf=mainNet-localServer.conf getblockcount

Для сравнения, следующая команда справки bitcoin-cli предоставляет дополнительные сведения для вашего локального образа Blockchain, который вы создаете:

% ../bin/bitcoin-cli -conf=mainNet.conf help gettxoutsetinfo gettxoutsetinfo

Возвращает статистику о неизрасходованном наборе выходных данных транзакции. Обратите внимание, что этот вызов может занять некоторое время.

Результат: { "height":n , (число) Текущая высота блока (индекс) "bestblock": "hex", (string) лучший хэш блока hex hex "transactions": n, (numeric) Количество транзакций "txouts ": n, (числовой) Количество выходных транзакций "bytes_serialized": n, (числовой) Серийный размер "hash_serialized": "хэш", (строка) Серийный хэш "total_amount": x.xxx (числовой) Сумма количество }

Ваша цепочка блоков завершена, когда два числа совпадают. Такой подход даст вам хорошее представление о вашем текущем статусе.