Bij een Bitcoin-betaling via een apart ondertekenapparaat gaat een bestand soms meerdere keren heen en weer. Eerst worden handtekeningen verzameld, daarna kan de transactie worden afgerond en verzonden. Met de PSBT-specificatie en drie Bitcoin Core-functies is te achterhalen tot welke stap een betaling is gekomen.
| Wat je moet weten |
|---|
| Een PSBT draagt transactiegegevens en handtekeningen tussen verschillende onderdelen van een wallet over. |
| Bij meerdere vereiste ondertekenaars kan één handtekening onvoldoende zijn om de transactie af te ronden. |
| Bitcoin Core kan uit een volledig ondertekende PSBT een verzendbare transactie halen; dat verzendt hem nog niet. |
| Verzending en het aantal bevestigingen zijn afzonderlijke gegevens die je daarna moet controleren. |
1. Handtekeningen verzamelen en de transactie afronden
PSBT staat voor Partially Signed Bitcoin Transaction. De specificatie BIP 174 verdeelt de verwerking over verschillende rollen. Een ondertekenaar voegt handtekeningen toe aan de onderdelen waarvoor die kan tekenen. De finalizer maakt vervolgens de invoervelden gereed; de extractor zet een afgeronde PSBT om in de transactie die het netwerk kan verwerken. Die rollen kunnen binnen één wallet zitten, maar hoeven niet op hetzelfde apparaat te draaien.
Daarom is de bestandsnaam geen betrouwbare statusmelding. Een bestand met één nieuwe handtekening kan nog op een andere ondertekenaar wachten. Ook een compleet ondertekend bestand kan nog lokaal op een geheugenkaart staan. Het eerste vraagt om de ontbrekende handtekening; het tweede om de volgende verwerkingsstap. Alleen het bestand opnieuw tekenen maakt dat onderscheid niet duidelijk.
De documentatie van Bitcoin Core 30.0 voor finalizepsbt maakt dit concreet.
Het resultaat bevat complete, dat aangeeft of de vereiste handtekeningen compleet zijn. Bij een complete transactie kan de functie met de standaardinstelling ook hex teruggeven: de transactie in het formaat dat kan worden verstuurd. Dat resultaat zegt iets over de gereedgemaakte transactie, niet over ontvangst door een andere node.
2. Verzenden en daarna de bevestigingen opzoeken
Voor verzending beschrijft Bitcoin Core een andere functie: sendrawtransaction. Die biedt de ruwe transactie aan de lokale node en het netwerk aan en geeft bij succes de transactiehash terug. Vergelijk dus wat je wallet meldt: heeft hij alleen een ondertekend bestand opgeslagen, een verzendbare transactie gemaakt, of die transactie ook aangeboden? Een hash die je bij een lokaal bestand ziet, bewijst op zichzelf geen netwerkverzending.
Een bevestiging is weer een volgende controle.
Voor een transactie in de eigen wallet toont gettransaction onder meer het aantal confirmations en, indien van toepassing, de hash van het blok waarin de transactie staat. De documentatie kent ook negatieve bevestigingen voor een transactie die met een bevestigde transactie conflicteert. Een weergegeven transactie is dus niet automatisch een bevestigde betaling.
Bij het zoeken naar de vertraging bepaalt de laatste voltooide stap het vervolg. Voor ontbrekende handtekeningen moet het bestand terug naar de ondertekenaars; voor een complete maar onverzonden transactie is verzending de ontbrekende handeling. Na verzending geven de netwerk- en walletgegevens de volgende informatie. Bitcoin Core waarschuwt daarbij tegen herhaald handmatig aanbieden aan alle peers, omdat dat informatie over de herkomst kan prijsgeven.






