PSBT v2 je formát podle BIP 370 pro výměnu rozpracované bitcoinové transakce a podkladů k podpisu. Číslo označuje verzi obálky PSBT, nikoli automaticky verzi samotné transakce nebo nový způsob ověřování v síti.
PSBT v0 podle BIP 174 obsahuje globální nepodepsanou transakci. BIP 370 její konstrukční údaje přesouvá do samostatných polí. Účastníci tak mohou podle pravidel přidávat vstupy a výstupy po vytvoření obálky. Neznamená to, že lze libovolně měnit už podepsané části nebo že soubor sám představuje platbu. [BIP 370 — PSBT Version 2] [BIP 174 — Partially Signed Bitcoin Transaction Format]
PSBT_GLOBAL_VERSION musí být 2 a PSBT_GLOBAL_UNSIGNED_TX nesmí být přítomno. Povinné PSBT_GLOBAL_TX_VERSION určuje samostatně verzi vytvářené transakce; globální mapa obsahuje také počty vstupů a výstupů. Pouhé přepsání čísla verze ve starém souboru nevytvoří platné PSBT v2. [BIP 370 — PSBT Version 2]
Vstup musí určit předchozí TXID a index utráceného výstupu. Výstup musí obsahovat částku v satoshi a scriptPubKey; při přidání se upraví i příslušný globální počet. Nepřítomná sequence vstupu znamená 0xffffffff. Tyto konstrukční údaje nenahrazují ověření UTXO ani dalších podkladů, které potřebuje podepisující zařízení. [BIP 370 — PSBT Version 2]
V poli PSBT_GLOBAL_TX_MODIFIABLE bit 0 dovoluje změny vstupů a bit 1 změny výstupů. Bit 2 upozorňuje na podpis SIGHASH_SINGLE: musí zůstat zachováno párování vstupu a výstupu na odpovídajícím indexu. Sestavovatel musí prověřit konkrétní podpisy; samotný zapnutý příznak neudělá jinak neplatnou změnu bezpečnou. [BIP 370 — PSBT Version 2]
Pro nLockTime se vybere typ požadavku slučitelný se všemi vstupy a jeho nejvyšší hodnota. Jsou-li možné oba typy, přednost má výška bloku; neslučitelný vstup se nepřidá. Bez vstupních požadavků se použije globální fallback, případně nula. Nový vstup nesmí změnit nLockTime, pokud už existují podpisy. [BIP 370 — PSBT Version 2]
Podepisující aktualizuje příznaky podle SIGHASH. Bez SIGHASH_ANYONECANPAY uzavře změny vstupů; bez SIGHASH_NONE uzavře změny výstupů a při SIGHASH_SINGLE označí nutné párování. Po finalizaci extraktor sestaví síťovou transakci z polí. Její odeslání a přijetí sítí jsou další kroky, nikoli vlastnost přenesené obálky. [BIP 370 — PSBT Version 2] [BIP 174 — Partially Signed Bitcoin Transaction Format] [Bitcoin Core — PSBT workflow]
PSBT v0 a v2 nejsou přímo zaměnitelné. Převod do v0 vyžaduje sestavení nepodepsané transakce a dodržení pravidel polí dané verze. Taproot podklady definuje odděleně BIP 371 pro obě verze. Podpora PSBT nebo Taproot proto sama nedokazuje, že daná peněženka umí importovat, podepsat a exportovat PSBT v2. [BIP 370 — PSBT Version 2] [BIP 371 — Taproot Fields for PSBT]
Na důvěryhodném zařízení porovnej příjemce, částky, vlastní vrácený výstup a poplatek s původním záměrem. Ověř podklady UTXO, skripty a použitý SIGHASH; metadata o odvození klíčů sama neprokazují vlastnictví výstupu. Zkušební průchod konkrétním koordinátorem a zařízením ověří kompatibilitu, nikoli bezpečnost všech budoucích transakcí. [BIP 174 — Partially Signed Bitcoin Transaction Format] [Bitcoin Core — PSBT workflow]
Pro nejúplnější obraz čtěte toto heslo společně s PSBT, Hardware Wallet, Multisig, Taproot.