PSBT je standardní formát pro předávání rozpracované bitcoinové transakce mezi peněženkami a zařízeními, která ji kontrolují a podepisují. Zkratka znamená Partially Signed Bitcoin Transaction, tedy částečně podepsaná bitcoinová transakce, ale soubor může být i zcela bez podpisu. Přenáší návrh, potřebné podklady a podpisy, nikoli privátní klíče. Teprve z dokončených podkladů vznikne běžná transakce určená síti. Digitální podpis je ověřitelné schválení vytvořené pomocí privátního klíče — tajného údaje, který dává možnost podepisovat. Samotný klíč se přitom nezveřejňuje.
Anna chce Pavlovi poslat 60 000 sat, tedy šedesát tisíc nejmenších jednotek bitcoinu. Její peněženka použije jeden dříve přijatý a dosud neutracený výstup o 100 000 sat. Výstup je záznam částky a podmínek, za kterých ji lze utratit. Peněženka v našem příkladu navrhne 60 000 sat Pavlovi, 39 000 sat zpět Anně jako vratku a 1 000 sat ponechá jako poplatek. Zatím jsou to jen pokyny. Aplikace je uloží do PSBT a předá hardwarové peněžence, třeba kabelem, QR kódem nebo paměťovou kartou podle zařízení. Anna na jeho displeji ověří platbu a schválí podpis. Zpět putuje podpis, ne tajný klíč. Příprava platby tak nemusí probíhat na stejném zařízení, které ji smí autorizovat. [1] [4]
Soubor s příponou .psbt není automaticky bezpečná platba. Počítač, který jej vytvořil, může být napadený nebo jen špatně nastavený. Anna proto kontroluje příjemce podle adresy získané od Pavla, částku, celkový poplatek i vrácení zbytku do vlastní peněženky; při použití hardwarové peněženky se řídí údaji na jejím důvěryhodném displeji a postupem výrobce. Podepisující software současně ověřuje podklady i to, které údaje člověk podpisem schvaluje. Technický název sighash označuje pravidla, které části transakce podpis chrání před změnou. Neobvyklý režim není něco, co má začátečník bez porozumění odklepnout. Když nesedí adresa nebo nelze ověřit poplatek, správný krok je návrh zkontrolovat, nikoli kontrolu obejít. [1]
U Multisig se dvěma potřebnými podpisy ze tří může Anna přidat první podpis a Pavel druhý, každý svým zařízením. Nemusejí si předávat obnovovací slova ani být připojeni současně. Koordinátor, tedy aplikace organizující přípravu, shromáždí podklady ke stejné platbě a spojí podpisy. Každý podepisující si však musí ověřit, že platba odpovídá jeho záměru; koordinátor za něj nerozhoduje. BIP 174 rozlišuje role creator, který založí návrh, updater, který doplní údaje, signer, který podepíše, a combiner, který spojí odpovídající verze. Finalizer sestaví konečné údaje pro splnění podmínek vstupů a extractor z nich vytvoří běžnou síťovou transakci. Jeden program běžně zastává několik rolí. Tyto názvy popisují práci, ne šest povinných účastníků. [1] [4]
PSBT může prozradit, které mince chceš použít, komu platíš, kolik se ti vrací jako zbytek a jak spolu souvisejí adresy. Může obsahovat i xpub, veřejná data pro odvozování dalších veřejných klíčů a ve spojení s pravidly peněženky také adres, nebo derivační cesty, tedy polohu klíčů v uspořádání peněženky. Proto jej neposílej do náhodné webové služby jen kvůli přečtení obsahu. Podepsaný PSBT navíc může umožnit jiné osobě dokončit a odvysílat právě autorizovanou transakci, pokud už má všechny potřebné podklady. Smazání tvé kopie podpis neruší. Soubor zároveň není náhradou za Seed Phrase (záložní slova pro obnovu klíčů) ani úplnou zálohu konfigurace Multisig: je podkladem konkrétní platby, ne univerzální obnovou peněženky. [1] [4]
Doplněný podpis ještě neznamená, že síť o platbě ví. Po sestavení konečné transakce ji musí někdo odvysílat. Uzel je počítač se softwarem, který ověřuje bitcoinové transakce a bloky. Uzel ji následně posoudí podle pravidel sítě a vlastní politiky přijímání transakcí; do bloku ji může zařadit těžař. Chybějící podpis, již utracený vstup nebo nedostatečný poplatek jsou různé problémy a tlačítko „dokončit“ je samo nevyřeší. Než se na postup spolehneš, vyzkoušej konkrétní kombinaci aplikace, zařízení a typu peněženky. V Bitcoin Core 29 příkaz analyzepsbt ukáže například chybějící podklady či podpisy. finalizepsbt umí sestavit dokončenou transakci; její odeslání je další krok. Ani úspěšné dokončení není potvrzením v bloku. [4] [5] [6]
BIP 174 definuje PSBT jako binární formát s údaji ve dvojicích klíč–hodnota. Slovo klíč zde označuje identifikátor položky, nikoli automaticky privátní klíč k bitcoinům. Globální mapa popisuje transakci jako celek, vstupní mapy jednotlivé utrácené výstupy a výstupní mapy nově vytvářené výstupy. Vedle návrhu mohou nést skripty, tedy podmínky utracení, původ klíčů a dílčí podpisy. Data lze uložit jako soubor .psbt nebo zapsat pomocí Base64, kódování binárních dat do textu. Base64 není šifrování. PSBT není nový druh transakce v pravidlech Bitcoinu; síť dostává až výslednou transakci, nikoli celý pracovní soubor. [1]
Zařízení mimo síť potřebuje vědět, co má vlastně podepsat. UTXO je dřívější výstup, který dosud nebyl utracen; nový vstup na něj odkazuje. Pole Non-Witness UTXO může nést celou předchozí transakci, kdežto Witness UTXO nese konkrétní výstup s částkou a podmínkami. Potřebné podklady závisejí na typu vstupu a pravidlech podepisujícího softwaru. Kontroluje se například shoda identifikátoru předchozí transakce a odpovídajícího výstupu, návaznost skriptů i přijatelný sighash. Chybějící částka nesmí být vyložena jako nulový poplatek a chybějící doklad jako úspěšné ověření. Podklady je třeba doplnit z důvěryhodného postupu, ne odhadnout. [1]
Číslo verze PSBT popisuje uspořádání formátu, nikoli počet podpisů ani verzi samotné bitcoinové transakce. V PSBT v0 je nepodepsaná transakce uložená v globálním poli; pokud údaj o verzi PSBT chybí, znamená to v0. PSBT v2 podle BIP 370 toto pole nepoužívá a rozděluje údaje potřebné k sestavení transakce do samostatných polí. Umožňuje tak práci s přidáváním vstupů a výstupů podle povolených změn a již přítomných podpisů. Neznamená to volné přepsání podepsané platby. Obě strany musejí dané verzi rozumět; „podporuje PSBT“ není dostatečně přesný popis kompatibility. [2]
BIP 371 doplňuje informace potřebné pro Taproot, například příslušné podpisy, skripty a původ klíčů. Tato pole lze použít s PSBT v0 i PSBT v2. Peněženka tedy může umět Taproot v první verzi formátu, aniž by uměla druhou; stejně tak samotná podpora v2 neříká, že zařízení zvládne každý Taproot scénář. Je třeba rozlišit podpis přes klíč a utracení podle skriptové větve, tedy dvě možné cesty splnění podmínek Taproot výstupu. Pro uživatele z toho plyne jednoduchá otázka: zvládne moje konkrétní sestava právě tu platbu, kterou chci podepsat? Odpověď poskytne dokumentace a ověřený postup, nikoli samotná zkratka na seznamu funkcí. [3]
Pro nejúplnější obraz čtěte toto heslo společně s Multisig, Hardware Wallet, Cold Storage, Output Descriptor. Opačným směrem na něj odkazují také Multisig, Cold Storage, Hardware Wallet, Watch-only Wallet.