ru
Назад к списку

Разработчики перешли к финальному тестированию Bitcoin Core 32.0

source-logo  forklog.com 3 ч
image

14 сентября команда специалистов Bitcoin Core опубликовала первый релиз-кандидат v32.0rc1. Обновление изменит механизм оценки комиссий, ускорит валидацию блоков при чтении данных с диска и исправит уязвимость walletnotify. Последняя затрагивает только определенную конфигурацию и требует аутентифицированного RPC-доступа, следует из официального графика и черновика примечаний к версии.

Стабильный Bitcoin Core 32.0 планируют выпустить 10 октября. В опубликованных примечаниях к версии нет изменений правил консенсуса биткоина: речь идет об обновлении клиентского ПО.

Оценка комиссий учтет состояние мемпула

В Bitcoin Core 32.0 команда изменит работу estimatesmartfee, который помогает определить комиссию для подтверждения транзакции за заданное число блоков. Сейчас используется оценщик block_policy, основанный на данных уже подтвержденных транзакций; в новой версии к нему добавят mempool_policy, анализирующий текущее состояние мемпула.

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

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

Разработчики также добавили параллельную предвыборку данных об использованных выходах транзакций (prevouts) при проверке блоков. По умолчанию Bitcoin Core задействует восемь потоков, максимум — 16. Параметр -prevoutfetchthreads=0 отключит функцию.

Изменение должно ускорить валидацию блоков прежде всего в ситуациях, когда необходимые данные приходится считывать с диска. Если они уже находятся в оперативной памяти, эффект будет меньше.

Еще одно изменение затронет частично подписанные биткоин-транзакции (PSBT). Команды createpsbt, walletcreatepsbt, converttopsbt и psbtbumpfee по умолчанию начнут создавать PSBT версии 2. При необходимости пользователь сможет выбрать другую через аргумент psbt_version.

Разработчики закрыли уязвимость

В Bitcoin Core 32.0 также исправили уязвимость, присутствовавшую в клиенте с версии 24.0. Она затрагивала не-Windows-системы при использовании параметра -walletnotify с плейсхолдером %w. Эта настройка позволяет автоматически запускать заданную оператором команду при появлении связанной с кошельком транзакции.

Аутентифицированный RPC-пользователь с правом создавать кошельки мог задать специально сформированное имя. При последующем уведомлении о транзакции символы внутри названия нарушали экранирование оболочки и при подходящем шаблоне walletnotify позволяли выполнить дополнительную команду от имени процесса Bitcoin Core.

Проблема возникала из-за того, что функция ReplaceAll() передавала экранированное имя кошелька в std::regex_replace() как текст замены. Разработчики изменили механизм так, чтобы название обрабатывалось буквально.

Уязвимость нельзя было эксплуатировать через обычное P2P-соединение или без авторизации. Для атаки одновременно требовались RPC-доступ с правом создания кошелька, настроенный walletnotify с %w и операционная система, отличная от Windows.

Проблема нового HTTP-сервера

В ветку 32.0 вошло исправление еще одной проблемы безопасности, обнаруженной при аудите нового HTTP-сервера с помощью Kimi K3. Если сервер уже обрабатывал запрос, клиент мог продолжать отправлять данные без ограничения их объема. При определенных условиях это позволяло бесконтрольно увеличивать потребление памяти процесса.

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

Новый HTTP-сервер еще не использовался в предыдущих стабильных версиях Bitcoin Core. Он войдет в релиз 32.0 уже с исправлением, поэтому эта проблема не затрагивала узлы на прежних официальных версиях клиента.

Помимо этого, версия 32.0 сократит дисковый объем индекса транзакций txindex более чем вдвое после его полной пересборки. Существующие индексы останутся совместимыми, но для получения экономии их потребуется создать заново.

Напомним, в октябре 2025 года разработчики выпустили Bitcoin Core v30. Одним из ключевых изменений стало увеличение установленного по умолчанию лимита данных в выходах OP_RETURN с 80 до 100 000 байт.

forklog.com