Изменение объединено с master, но операторам нужно пересобрать дополнительный индекс, чтобы получить экономию места, и предусмотреть ещё одно пересоздание после отката (downgrade).
Bitcoin Core объединил переработку своего дополнительного индекса транзакций, которая сократила базу данных примерно на 40 ГБ в основных сетевых тестах одного из участников. Операторы, использующие параметр -txindex, сохраняют свои существующие индексы при обновлении; чтобы получить полный эффект от экономии, нужно заново создать базу данных.
Запрос на включение №35531, объединённый в мастер-ветку Bitcoin Core 15 августа, уменьшил восстановленный автором основной txindex примерно с 66 ГБ до 26 ГБ. Сокращение примерно на 61% ограничено этим дополнительным индексом. Блокчейн Bitcoin и прочие данные из каталога данных узла остаются вне измерений.
Код объединен в основной репозиторий. Стабильные бинарные релизы следуют отдельному процессу релизования, а индекс релизов Bitcoin Core оставляет первую версию, содержащую изменение, без указания. Операторам понадобятся примечания по миграции для релиза, который поставляет его.
В новой схеме хранится гораздо более короткий ключ поиска: пятибайтовый префикс, полученный из защищенного солй SipHash, затем шестибайтовый суффикс, кодирующий последовательность блоков и смещение транзакции. Полный идентификатор транзакции по-прежнему проверяется до того, как Bitcoin Core вернет совпадение.
Этот этап проверки защищает от коллизий, возникающих из‑за более короткого префикса. Bitcoin Core просматривает записи, разделяющие префикс, находит кандидаты блоков через свой блоковый индекс, читает кандидатные транзакции с диска и сравнивает их полные идентификаторы. Техническое резюме Bitcoin Optech описывало коллизии как дополнительную работу по чтению и верификации, при этом проверки по полному ID предотвращают ложные совпадения транзакций.
Производительность в тесте автора оставалась стабильной. Поиск занимал около 0,2 миллисекунды. Перестроение в мейннете завершилось за 1 час 19 минут против 1 часа 50 минут для предыдущего формата. Время и результаты могут изменяться из‑за различий в оборудовании, хранилище, высоте цепочки и версии ПО.
Существующие базы данных txindex остаются читаемыми после обновления, избегая немедленного принудительного перестроения. Их устаревшие записи также сохраняют больший объем, поэтому для получения полной экономии 40 ГБ по бенчмарку требуется воссоздать индекс.
Более поздний даунгрейд несет второй миграционный расход. В объединенном фрагменте примечаний к релизу Bitcoin Core сказано, что предыдущие релизы не могут читать записи, записанные в компактном формате. Возврат к более старому релизу после перестроения вызовет еще одно перестроение txindex в старом формате.
В узкой сфере применения выгода оператора существенна: гораздо меньший опциональный индекс и более быстрое перестроение в тесте автора-участника. Чтобы получить эту выгоду, требуется запланированное воссоздание базы, а также еще одно перестроение, если потребуется откат.
Примечания, зависящие от релиза, должны управлять точным процессом воссоздания и даунгрейда после того, как изменение дойдет до стабильного бинарного релиза Bitcoin Core.
