Как проверить, сохранился ли старый блок на Bitcoin-ноде с pruning
Обозревателю нужны идентификаторы транзакций из блока на высоте 800 000. Bitcoin Core может вернуть хеш на этой высоте даже после удаления данных. Проверим, сможет ли нода отдать сами транзакции.
Посмотрите, до какой высоты удалены блоки
bitcoin-cli getblockchaininfo | jq '{chain, blocks, pruned, pruneheight}'
Запустите команду на ноде основной сети с установленным jq. Сначала убедитесь по полю blocks, что нода дошла до нужной высоты. В Bitcoin Core 30 значение pruneheight на единицу больше последней высоты, затронутой очисткой. При значении 850 000 наш блок находится ниже этой границы. При выключенной очистке поле отсутствует.
Запросите блок, который нужен приложению
hash=$(bitcoin-cli getblockhash 800000)
bitcoin-cli getblockheader "$hash" | jq '{height, hash}'
bitcoin-cli getblock "$hash" 1 | jq '{height, nTx, first_tx: .tx[0]}'
Второй вызов сверяет заголовок. Последний читает тело блока и выводит идентификатор первой транзакции. Если Bitcoin Core сообщает, что блок удалён при очистке, повторите последний запрос на ноде, которая хранит историю за этот период. Для мониторинга записывайте высоту запроса и результат чтения тела. Проверка последнего блока охватывает только свежие данные.
bitcoincore.org getblockchaininfo · bitcoincore.org getblock