62 / 736BIP174

PSBT

Частково підписана транзакція Bitcoin

Комп’ютер може підготувати платіж, поки ключі залишаються в апаратному гаманці. PSBT передає між ними пропозицію платежу та дані для перевірки; після схвалення пристрій додає підпис. Цей самий формат допомагає, коли один платіж мають підписати кілька людей або пристроїв.

PSBT — стандартний формат передавання ще не завершеної транзакції Bitcoin між гаманцями й пристроями, які її перевіряють і підписують. Назва означає Partially Signed Bitcoin Transaction, тобто частково підписана транзакція Bitcoin, але файл може ще не містити жодного підпису. Він передає пропозицію, потрібні дані й підписи, а не приватні ключі. Коли всі необхідні матеріали готові, з них можна отримати звичайну транзакцію для мережі. Цифровий підпис — це згода, яку можна перевірити й для якої використовують приватний ключ: секретні дані, що дають змогу підписувати. Сам ключ при цьому не розкривається.

Multisig: симулятор порогу підписівПеревірте, чи решти ключів у моделі m із n достатньо для досягнення порогу підписів. Результат описує доступність підписів, а не безпеку чи повне відновлення гаманця.

Анна хоче надіслати Павлові 60 000 sat — шістдесят тисяч найменших одиниць біткоїна. Її гаманець використовує один раніше отриманий і ще не витрачений вихід на 100 000 sat. Вихід містить суму й умови, за яких її можна витратити. У цьому прикладі гаманець пропонує 60 000 sat Павлові, 39 000 sat назад Анні як решту і залишає 1 000 sat на комісію. Поки що це лише вказівки. Застосунок записує їх у PSBT і передає апаратному гаманцю, наприклад кабелем, QR-кодом або картою пам’яті залежно від пристрою. Анна перевіряє платіж на його екрані та схвалює підпис. Назад повертається підпис, а не секретний ключ. Отже, платіж можна готувати не на тому пристрої, який має право його авторизувати. [1] [4]

Файл із розширенням .psbt не робить платіж автоматично безпечним. Комп’ютер, що його створив, може бути зламаний або просто неправильно налаштований. Анна звіряє одержувача з адресою, отриманою від Павла, перевіряє суму, загальну комісію та повернення решти до свого гаманця. З апаратним гаманцем вона орієнтується на довірений екран пристрою й процедуру виробника. Програма підписання також перевіряє дані та те, що саме охоплює підпис. Технічний термін sighash визначає, які частини транзакції підпис захищає від змін. Новачкові не варто схвалювати незвичний режим без розуміння. Якщо адреса не збігається або комісію неможливо перевірити, слід переглянути пропозицію, а не обходити перевірку. [1]

У гаманці Multisig із двома потрібними підписами з трьох Анна може додати перший підпис, а Павло другий, кожен своїм пристроєм. Їм не потрібно обмінюватися словами відновлення чи бути підключеними одночасно. Координатор, тобто застосунок, який організовує процес, збирає матеріали одного платежу й об’єднує підписи. Проте кожен учасник має перевірити власний намір: координатор не вирішує за нього. BIP 174 розрізняє creator, який створює пропозицію, updater, який додає дані, signer, який підписує, і combiner, який об’єднує відповідні версії. Finalizer формує кінцеві дані для виконання умов входів, а extractor створює звичайну мережеву транзакцію. Одна програма часто виконує кілька ролей. Це назви завдань, а не шість обов’язкових учасників. [1] [4]

PSBT може показати, які монети ти хочеш використати, кому платиш, скільки решти повертається та як пов’язані адреси. Він також може містити xpub, публічні дані для виведення інших публічних ключів, а разом із правилами гаманця — й адрес, або шляхи деривації — розташування ключів у структурі гаманця. Тому не надсилай його випадковому вебсервісу лише для перегляду вмісту. До того ж підписаний PSBT може дозволити іншій людині завершити й передати в мережу саме авторизовану тобою транзакцію, якщо всі потрібні дані вже є. Видалення твоєї копії не відкликає підпис. Файл також не замінює Seed Phrase (слова резервної копії для відновлення ключів) чи повної резервної копії конфігурації Multisig: це матеріали окремого платежу, а не універсальне відновлення гаманця. [1] [4]

Доданий підпис ще не означає, що мережа знає про платіж. Після формування кінцевої транзакції хтось має її поширити. Вузол — це комп’ютер із програмою, яка перевіряє транзакції та блоки Bitcoin. Вузол перевіряє її за правилами мережі та власною політикою приймання, а майнер може включити її до блоку. Відсутній підпис, уже витрачений вхід і замала комісія — різні проблеми, які кнопка «завершити» сама не вирішує. Перш ніж покладатися на процес, перевір конкретне поєднання застосунку, пристрою й типу гаманця. У Bitcoin Core 29 команда analyzepsbt може показати відсутні дані чи підписи. finalizepsbt може сформувати завершену транзакцію; надсилання — наступний крок. Навіть успішне завершення ще не є підтвердженням у блоці. [4] [5] [6]

BIP 174 визначає PSBT як двійковий формат із парами ключ–значення. Слово «ключ» тут означає ідентифікатор поля, а не обов’язково приватний ключ Bitcoin. Глобальна мапа описує всю транзакцію, мапи входів — попередні виходи, що витрачаються, а мапи виходів — нові виходи, що створюються. Разом із пропозицією вони можуть передавати скрипти, тобто умови витрачання, походження ключів і часткові підписи. Дані можна зберігати у файлі .psbt або подавати через Base64 — кодування двійкових даних текстом. Base64 не є шифруванням. PSBT не створює нового типу транзакції в правилах Bitcoin: мережа отримує кінцеву транзакцію, а не весь робочий файл. [1]

Пристрою без з’єднання з мережею потрібно знати, що він має підписати. UTXO — попередній вихід, який ще не витрачено; новий вхід посилається на нього. Non-Witness UTXO може містити всю попередню транзакцію, а Witness UTXO — конкретний вихід із сумою та умовами. Потрібні матеріали залежать від типу входу й правил програми підписання. Перевіряються, зокрема, ідентифікатор попередньої транзакції та відповідний вихід, зв’язки між скриптами й прийнятність sighash. Відсутню суму не можна трактувати як нульову комісію, а відсутній доказ — як успішну перевірку. Дані слід додати через надійний процес, а не вгадувати. [1]

Версія PSBT описує будову формату, а не кількість підписів чи версію самої транзакції Bitcoin. PSBT v0 зберігає непідписану транзакцію в глобальному полі; відсутній номер версії PSBT означає v0. PSBT v2 за BIP 370 не використовує це поле й розподіляє дані побудови між окремими полями. Це дозволяє додавати входи й виходи з урахуванням дозволених змін та вже наявних підписів. Вільно переписувати підписаний платіж не можна. Обидві сторони мають розуміти використану версію; напис «підтримує PSBT» недостатньо точно описує сумісність. [2]

BIP 371 додає відомості для Taproot: відповідні підписи, скрипти й походження ключів. Ці поля працюють і з PSBT v0, і з PSBT v2. Отже, гаманець може підтримувати Taproot у першому форматі, не підтримуючи другого. Так само підтримка v2 не означає, що пристрій впорається з кожним сценарієм Taproot. Підпис через ключ і витрачання через скриптову гілку — різні способи виконати умови виходу Taproot. Для користувача питання просте: чи здатна моя конкретна система обробити саме той платіж, який я хочу підписати? Відповідь дають документація й перевірений процес, а не абревіатура у списку функцій. [3]

Для повної картини прочитайте також Multisig, Hardware Wallet, Cold Storage, Output Descriptor. На цю статтю також посилаються Multisig, Cold Storage, Hardware Wallet, Watch-only Wallet.

DOC · 001BIP 174 — PSBTСпецифікація DOC · 002BIP 370 — PSBT Version 2Специфікація DOC · 003BIP 371 — Taproot Fields for PSBTСпецифікація DOC · 004Bitcoin Core — PSBT HowtoДокументація DOC · 005Bitcoin Core 29 RPC — analyzepsbtДокументація DOC · 006Bitcoin Core 29 RPC — finalizepsbtДокументація
Переглянуто: Спочатку джерела · Не інвестиційна порада