Скрытая база данных Биткоин-ноды сжалась на 40 ГБ, но лишь при условии, что раннеры её перестроят

Bitcoin Core Txindex оптимизация база данных блокчейн обновление cryptoslate.com

Перестройте опциональный индекс txindex в Bitcoin Core, чтобы сэкономить до 40 ГБ дискового пространства. Учитывайте необходимость повторной перестройки при откате на старую версию. Изменение уже в master, но стабильный релиз ещё не вышел.

Bitcoin Core объединил редизайн своего опционального индекса транзакций, который в тесте одного из контрибьюторов на основной сети сократил базу данных примерно на 40 ГБ. Операторы, использующие -txindex, сохраняют свои существующие индексы при обновлении; для полной экономии требуется пересоздание базы данных.

Pull request #35531, объединённый в master-ветку Bitcoin Core 15 августа, уменьшил перестроенный автором txindex основной сети с примерно 66 ГБ до 26 ГБ. Сокращение примерно на 61% относится только к этому опциональному индексу. Блокчейн Bitcoin и остальная часть каталога данных узла остаются за пределами измерения.

Скрытая база данных Биткоин-ноды сжалась на 40 ГБ, но лишь при условии, что раннеры её перестроят

Код объединён в вышестоящую ветку. Стабильные бинарные сборки следуют отдельному процессу релиза, и индекс релизов Bitcoin Core оставляет первую версию, содержащую изменение, неуточнённой. Операторам понадобятся инструкции по миграции для того релиза, в котором это изменение появится.

Как работает уменьшенный индекс

Опция -txindex в Bitcoin Core поддерживает базу данных для поиска транзакций по их полному идентификатору. Старый формат хранил каждый 32-байтовый идентификатор транзакции в качестве ключа базы данных вместе с данными о положении транзакции на диске.

Редизайн использует гораздо более короткий ключ поиска: пятибайтовый префикс, полученный из солёного SipHash, за которым следует шестибайтовый суффикс, кодирующий последовательность блоков и смещение транзакции. Полный идентификатор транзакции всё ещё проверяется перед тем, как Bitcoin Core возвращает совпадение.

Этот этап верификации защищает от коллизий, создаваемых более коротким префиксом. Bitcoin Core сканирует записи, разделяющие префикс, находит кандидатов в блоки через свой индекс блоков, читает кандидатов транзакций с диска и сравнивает их полные идентификаторы. Техническое резюме Bitcoin Optech описывает коллизии как дополнительную работу по чтению и верификации, при этом проверки полных идентификаторов предотвращают ложные совпадения транзакций.

Производительность оставалась стабильной в тесте автора. Поиск занимал около 0,2 миллисекунды. Перестройка основной сети завершилась за 1 час 19 минут против 1 часа 50 минут с предыдущим форматом. Оборудование, хранилище, высота цепочки и версия программного обеспечения могут изменить эти результаты.

Существующие базы данных txindex остаются читаемыми после обновления, что позволяет избежать немедленной принудительной перестройки. Их устаревшие записи также сохраняют больший объём, поэтому для достижения полной экономии в 40 ГБ, показанной в тесте, требуется пересоздание индекса.

Последующий откат на более старую версию влечёт дополнительные затраты на миграцию. Объединённый фрагмент заметок о релизе Bitcoin Core гласит, что предыдущие релизы не могут читать записи, созданные в компактном формате. Возврат к более старому релизу после перестройки вызовет ещё одну перестройку txindex в старом формате.

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

Инструкции для конкретного релиза должны определять точную процедуру пересоздания и отката после того, как изменение попадёт в стабильную бинарную сборку Bitcoin Core.

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

В тренде:


Похожие новости: