Кошельки

Что такое PSBT и как подписать Bitcoin-транзакцию офлайн

PSBT переносит данные неподписанной Bitcoin-транзакции между координатором и подписывающим устройством. Разбираем безопасный офлайн-процесс.

Что такое PSBT и как подписать Bitcoin-транзакцию офлайн

Короткий ответ: PSBT – это стандартизированный контейнер с данными частично подписанной Bitcoin-транзакции. Онлайн-кошелёк может подготовить входы, выходы и комиссию, офлайн-устройство – проверить и добавить подпись, а подключённый координатор – финализировать и отправить результат в сеть. Приватный ключ в PSBT не помещается.

Что хранится внутри PSBT

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

Контейнер может включать сведения об UTXO, пути derivation, публичные ключи, частичные подписи и служебные поля. Наличие этих данных не даёт права тратить средства без нужных секретных ключей. При мультиподписи один файл последовательно получает подписи нескольких участников, пока не достигнут порог.

PSBT не является транзакцией в мемпуле. Его можно хранить, копировать и дополнять офлайн. TxID появляется в окончательном виде после финализации, а сеть узнаёт об операции только после трансляции raw transaction. Поэтому обозреватель не найдёт черновик по имени файла или QR-коду.

Как устроен офлайн-процесс

  1. Наблюдающий кошелёк с публичными данными выбирает UTXO, адрес получателя, сдачу и ставку комиссии.
  2. Координатор создаёт PSBT и показывает понятное резюме: суммы, адреса, входы и итоговую плату.
  3. Файл переносят на изолированное устройство через QR-код, карту памяти или другой заранее выбранный канал.
  4. Подписывающее устройство независимо разбирает PSBT и показывает критические детали на доверенном экране.
  5. После подтверждения оно добавляет подпись и возвращает обновлённый контейнер координатору.
  6. Координатор проверяет подписи, финализирует транзакцию, извлекает сетевой формат и транслирует его.

Офлайн означает, что устройство с ключами не подключается к интернету. Использование PSBT на двух вкладках одного заражённого компьютера не создаёт такого разделения. В то же время перенос через USB сам по себе не обязательно опасен: модель угроз зависит от устройства и проверки содержимого на его экране.

Что обязательно проверить перед подписью

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

Просмотрите входы и убедитесь, что выбранные UTXO соответствуют задаче. Вредоносный координатор может добавить лишний вход, заменить получателя или установить чрезмерную комиссию. То, что приватный ключ остаётся офлайн, не спасает от подписания неверного намерения.

Сравните общую плату с виртуальным размером и ставкой. Для ручной проверки используйте руководство про sat/vB и комиссию Bitcoin. Если подписант не показывает сумму предыдущих выходов, он не может надёжно вычислить комиссию, и продолжать вслепую не стоит.

PSBT для аппаратного кошелька и мультиподписи

Аппаратное устройство может подписывать PSBT как с подключением к компьютеру, так и через физически отделённый канал, если это поддержано производителем. В обоих случаях ключ остаётся внутри устройства. Разница в том, получает ли потенциально заражённый компьютер прямое соединение с подписантом.

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

Не путайте PSBT с сообщением на подпись. Подпись транзакции разрешает расходование конкретных UTXO при заданных условиях. Обычное сообщение служит доказательством владения ключом или авторизации в сервисе. Разницу полезно сверить в материале о том, что значит подписать сообщение.

Перенос файла без утечки секретов

Сам PSBT не содержит приватных ключей, но способен раскрывать публичную структуру кошелька: входы, сдачу, публичные ключи и пути derivation. Не загружайте его в случайный онлайн-декодер. Для анализа используйте локальное доверенное ПО, а носитель очищайте в соответствии со своей моделью угроз.

QR-код удобен для небольших контейнеров, но крупный PSBT может передаваться серией кадров. Проверяйте, что приложение собрало все части и не изменило файл. Карта памяти проще для больших операций, однако её содержимое должно проходить через ограниченный формат, а не запускать программы на подписывающем устройстве.

Если подпись не принимается

Частые причины – несовместимая версия PSBT, отсутствие данных о предыдущем выходе, неверный fingerprint ключа, другой derivation path или неподдерживаемый тип скрипта. Не исправляйте проблему импортом seed-фразы в координатор. Сравните публичные параметры и обновите совместимое ПО по официальному каналу.

Для поддержки подготовьте обезличенный PSBT только если вы понимаете его публичное содержимое, либо передайте текст ошибки, тип входов, версию программы и аппаратного устройства. Никому не отправляйте seed-фразу, приватный ключ, PIN, пароль или 2FA. Перед крупной операцией полезно выполнить тестовый перевод тем же процессом.

Итог

PSBT отделяет подготовку, подпись и трансляцию Bitcoin-транзакции. Это снижает необходимость подключать ключи к интернету и удобно для мультиподписи, но не отменяет проверку адресов, сдачи и комиссии. Безопасность возникает из независимого контроля намерения на подписывающем устройстве, а не из расширения файла.