Понять хранение · Совместное подписание
Когда порядок двух PSBT решал, будет ли принята подпись
PSBT позволяет нескольким программам и устройствам готовить одну транзакцию, не передавая друг другу закрытые ключи. В одном частном случае Bitcoin Core объединял эти данные по-разному в зависимости от порядка файлов.
РЕДАКЦИОННЫЙ ОБЗОР · Подготовлен редакцией проекта на основе указанных источников.
Транзакция, которую собирают по частям
Одна программа может создать PSBT, аппаратный кошелёк — подписать её, а отдельный компьютер — объединить данные и завершить отправку. Формат особенно важен для мультиподписи, совместного хранения и изолированных подписывающих устройств.
Для объединения нескольких вариантов PSBT в Bitcoin Core используется команда combinepsbt. В августе 2026 года разработчик обнаружил, что результат в одном частном случае зависел от порядка переданных файлов.
Поле, которое не переносилось
PSBT может указывать тип sighash — какие части транзакции подтверждает конкретная подпись. Обычная подпись чаще всего подтверждает все входы и выходы, но существуют и другие варианты, включая ALL|ANYONECANPAY.
При объединении Bitcoin Core переносил почти все отсутствующие дополнительные поля из одного экземпляра в другой. Исключением оказалось PSBT_IN_SIGHASH_TYPE. Если первый файл не содержал это поле, а второй содержал подпись с нестандартным sighash, подпись копировалась, но информация о её типе могла потеряться.
Во время завершения программа применяла значение по умолчанию и считала действительную подпись несовместимой. После перестановки двух файлов та же операция могла завершиться успешно.
Почему средства не исчезали
Ошибка не раскрывала закрытые ключи, не изменяла подтверждённые транзакции и не позволяла постороннему человеку забрать BTC. Она возникала на этапе подготовки: корректная подпись могла быть отвергнута, а PSBT оставалась незавершённой.
В сложных схемах хранения все участники могут выполнить свои действия правильно, однако потеря одного служебного поля нарушает финальную сборку.
Исправление порядка
Разработчики изменили объединение входов: если в первом PSBT тип sighash отсутствует, программа переносит его из второго. К исправлению добавили тесты для обоих порядков объединения.
Изменение было проверено и 9 сентября 2026 года принято в основную ветвь Bitcoin Core. Это означает, что код исправлен в ветви разработки, но не гарантирует его присутствия в каждой уже установленной версии.
Небольшое изменение сохраняет важное свойство формата: результат объединения совместимых данных не должен зависеть от того, какой файл пользователь указал первым.
При совместном подписании важно сохранить не только подпись, но и точное описание того, что она подтверждает.
Источники и проверка
Материал описывает исправленную ошибку подготовки PSBT, а не кражу средств или компрометацию закрытых ключей.
Если не указано иное, текст, выводы, структура и редакционная компоновка созданы редакцией проекта. Факты, цитаты и материалы источников принадлежат их авторам и правообладателям.
← Вернуться к рубрике