Blockchain/Niveau IV · Tiefer ins Protokoll/4.2 Upgrades/Lektion 3
Teilweise signierte Transaktionen (PSBT)
Der Container, der es einem Fremden ermöglicht zu überprüfen, was ein Gerät signiert
MaterialienEine Hardware-Wallet mit PSBT-UnterstützungBitcoin Core-Software mit verfügbarem Befehl „decodepsbt“Ein Air-Gapped-Computer oder -Gerät
Neugier
- Warum benötigt eine unfertige Transaktion mehr Daten als die fertige?
- Warum benötigte jede Hardware-Wallet einst ihr eigenes Format für unsignierte Transaktionen?
- Wie kann ein Nutzer einen neuen Output hinzufügen, nachdem die ursprüngliche Vorlage bereits erstellt ist?
Erkunden
- Eine gewöhnliche Rohtransaktion ist ein kompaktes, fertiges Artefakt, bereit für den Broadcast. Eine Partially Signed Bitcoin Transaction (PSBT), 2017 von Andrew Chow in BIP174 definiert, ist etwas anderes: ein Container, der eine unfertige Transaktion zusammen mit allen Metadaten enthält, die später zu ihrer Fertigstellung nötig sind. Sie kennt drei Zustände: vollständig aufgebaut, aber unsigniert; teilweise signiert, wobei einige Inputs erledigt sind und andere noch ausstehen; oder vollständig signiert und bereit zur Extraktion als Raw-Hex. Dieses Format erlaubt es einem nicht vertrauenswürdigen Programm, eine Vorlage zu erzeugen, die ein vertrauenswürdiges Gerät prüfen kann, ohne dass dieses Gerät Netzwerkzugang benötigt.
- Der PSBT-Ablauf definiert sechs Rollen: Creator, Updater, Signer, Combiner, Finalizer und Extractor (Version 2 fügt eine siebte hinzu, den Constructor). Nachdem ein Creator die Transaktion erstellt hat, fügt ein Updater die vorherigen Outputs, die ausgegeben werden, deren Scripts und die Ableitungspfade der Schlüssel hinzu, damit ein Signer genau prüfen kann, was er freigibt – einschließlich Beträgen und Gebühr. Diese ausdrückliche Einbindung von Metadaten macht die Datei deutlich weniger kompakt als die Standardserialisierung, ist aber unverzichtbar, denn so können Hardware-Wallets die Struktur der Transaktion prüfen, ohne sich mit einer internetverbundenen Node verbinden zu müssen, die kompromittiert sein oder Schadsoftware ausführen könnte.
- Interoperabilität ist der wichtigste Treiber für PSBTs. Bevor es diesen Standard gab, nutzten verschiedene Wallet-Programme inkompatible Methoden, um Daten zwischen einer Hot Wallet und einem Cold-Storage-Gerät auszutauschen, was zu einem Vendor-Lock-in führte. BIP174 löste dieses Problem, indem es eine universelle Sprache schuf; heute kann ein Koordinator wie Sparrow dieselbe PSBT per USB, SD-Karte oder QR-Code an Signiergeräte verschiedener Hersteller übergeben. Das macht herstellerübergreifendes Multisig praktikabel: Jeder Signer fügt der Datei seine Signatur hinzu, und kein privater Schlüssel verlässt jemals sein Gerät.
- Version 0 von PSBT hat eine starre strukturelle Einschränkung: Einmal erstellt, ist die globale unsignierte Transaktion festgelegt. Version 0 speichert eine vollständige unsignierte Transaktion in einem globalen Feld, sodass nach der Erstellung keine Inputs oder Outputs mehr hinzugefügt werden können. Diese Starrheit bedeutete: Wer mit dem Aufbau einer komplexen Transaktion mehrerer Parteien begann und merkte, dass ein zusätzlicher Wechselgeld-Output nötig war, musste den gesamten Vorgang verwerfen und mit einer neuen Vorlage ganz von vorn beginnen.
- BIP370 führt PSBT Version 2 ein, um dieses Problem der Unveränderlichkeit zu lösen. In Version 2 werden alle Informationen zu einem bestimmten Input oder Output in genau diesem Feld zusammengefasst, statt auf lokale und globale Daten verteilt zu werden. Die Teilnehmer können dann nach der Erstellung weitere Inputs oder Outputs hinzufügen, sofern die „modifiable“-Flags der PSBT dies zulassen. Das vereinfacht die Zusammenarbeit, weil beim Blick auf einen einzelnen Input alle zugehörigen Daten direkt dort vorliegen – was die Prüfung durch Hardware-Geräte erleichtert und das Risiko verringert, dass Zustände auseinanderlaufen.
- Praktische Anwendungen reichen vom Signieren mit Hardware-Wallets bis zu gemeinschaftlichen Transaktionen wie Payjoin und Coinjoin, bei denen die Teilnehmer PSBTs hin- und herreichen, bis alle signiert haben. Für einen normalen Nutzer bedeutet das: Er kann eine Transaktion auf dem Smartphone erstellen, eine Hardware-Wallet anschließen, um sie sicher offline zu signieren, und anschließend die fertige Rohtransaktion für den Broadcast extrahieren – wobei jedes Gerät genau sieht, was es signiert.
Kernfakten
- BIP174 definiert Version 0 von PSBT, die ein globales, unsigniertes Transaktionsfeld erfordert, das nach der Erstellung nicht mehr geändert werden kann.
- BIP370 definiert Version 2 (PSBTv2), die es ermöglicht, nach der Erstellung Inputs und Outputs hinzuzufügen, indem die Daten in den jeweiligen Feldern zusammengefasst werden.
- Eine PSBT ist absichtlich weniger kompakt als die Standardserialisierung, weil sie umfangreiche Metadaten zur Prüfung durch Signiergeräte speichert.
- Der ursprüngliche Ablauf umfasst sechs Rollen: Creator, Updater, Signer, Combiner, Finalizer und Extractor.
- PSBTs fördern die Interoperabilität zwischen unterschiedlicher Wallet-Software und Hardware-Signiergeräten.
- Koordinatoren wie Sparrow und Signiergeräte wie Coldcard tauschen PSBTs per Datei oder QR-Code aus.
Übung neun, sechs, drei, eins
9SammelnListen Sie 9 verschiedene Rollen oder Zustände im Lebenszyklus einer Bitcoin-Transaktion auf, von der ersten Erstellung bis zum endgültigen Broadcast.
6GruppierenGruppieren Sie die 9 in 6 Kategorien, je nachdem, ob es um das Hinzufügen von Daten, die Prüfung der Struktur, das Anbringen kryptografischer Signaturen, das Zusammenführen von Beiträgen, das Vervollständigen des Formats oder den Broadcast des Ergebnisses geht.
3VerdichtenReduzieren Sie die 6 Gruppen auf 3 Kernfunktionen, die jedes Transaktionsmanagement-System ausführen muss, um Sicherheit und Interoperabilität zu gewährleisten.
1KristallisierenSchreiben Sie 1 Satz, der erklärt, warum eine unfertige Transaktion mehr Daten benötigt als eine fertige.
Faktcheck
Datumsangaben, Zahlen und Behauptungen wurden mit den unten aufgeführten veröffentlichten Quellen abgeglichen.