Я заметил, что он bitcoind
будет постоянно сохранять непроверенные блоки, которые он получает, даже если они окажутся небольшими разветвлениями блокчейна, что, вероятно, происходит из-за относительно одновременного обнаружения двух блоков одинаковой высоты. Это не создает проблем для функциональности Bitcoin Core, поскольку в источнике наверняка есть процесс, который игнорирует такие маленькие ответвления, однако мне любопытно, что данные сохраняются в данных, сохраненных в файлах и в и , .dat
тем.ldb
не .bitcoin/blocks/
менее .bitcoin/blocks/index
. Есть ли способ удалить эти недопустимые блоки, принадлежащие небольшим разветвлениям в блокчейне, не -reindex
затрагивая весь блокчейн? Их бы -reindex
вообще убрать?
Они сохраняются, потому что их сложно удалить (для этого потребуется перезаписать файлы блочного хранилища), и их хранение практически не требует затрат (они составляют небольшую часть от общего числа). Кроме того, ближе к концу мы хотим , чтобы вилки были доступны, чтобы иметь возможность быстро реорганизоваться, если одна из них в конечном итоге станет основной цепью.
С технической точки зрения, каталог $DATADIR/blocks для Bitcoin Core не является представлением блокчейна. Это хранилище всех действительных блоков, которые мы когда-либо загружали. Какой из них в конечном итоге считается основной цепью, это другой вопрос, и он решается независимо.
Также обратите внимание, что в режиме обрезки удаляются все старые блоки, включая эти небольшие ответвления.
Я не могу придумать никакого удобного способа сделать это.
Единственный метод, который приходит на ум, — создать для себя bootstrap.dat
файл из собственного обновленного узла, затем выйти из Bitcoin Core и вручную очистить все соответствующие файлы БД перед импортом из bootstrap.dat
.
Кларис