Zum Inhalt springen
buybitcoinsmart

Glossar / Wallets und Verwahrung

PSBT-Version 2

Auch bekannt als PSBTv2.

Was ist PSBT-Version 2?
PSBT-Version 2 ist das Format für teilweise signierte Transaktionen, das die feste unsignierte Transaktion weglässt, sodass ein Teilnehmer auch nach dem Erstellen der Datei noch Eingänge und Ausgänge hinzufügen kann.

Spezifiziert im BIP-370.

Version 0 legt die Menge der Eingänge und Ausgänge bei der Erstellung fest; Version 2 verschiebt jedes Detail stattdessen in Maps je Eingang und je Ausgang. BIP-370 wurde am 14. Januar 2021 zugewiesen und überspringt die Nummer 1, da das Format von BIP-174 Version 0 ist und umgangssprachlich Version 1 genannt wurde. Für einen Halter ist Version 2 nur in einer Signatursitzung von Bedeutung, in der ein anderer Teilnehmer einer Transaktion, die Sie bereits begonnen haben, Coins hinzufügt.

Funktionsweise

PSBT-Version 2 behält den äußeren Container von BIP-174 bei und ordnet neu, was darin liegt. Zwei Regeln definieren die Umstellung: PSBT_GLOBAL_UNSIGNED_TX muss fehlen, und PSBT_GLOBAL_VERSION muss vorhanden und auf 2 gesetzt sein.

Was die entfernte Transaktion früher trug, wird auf zwölf neue Felder verteilt. Fünf sind global: Transaktionsversion (0x02), Fallback-Locktime (0x03), Anzahl der Eingänge (0x04), Anzahl der Ausgänge (0x05) und ein Byte mit veränderbaren Flags (0x06). Fünf sitzen an jedem Eingang: die 32 Byte lange vorherige txid (0x0e), der Index des ausgegebenen Ausgangs (0x0f), die Sequenznummer (0x10) und zwei erforderliche Locktimes, eine zeitstempelbasiert bei oder über 500000000 (0x11), eine höhenbasiert darunter und über null (0x12). Ausgänge erhalten zwei, den Betrag in Satoshis als 64 Bit große vorzeichenbehaftete Little-Endian-Ganzzahl (0x03) und das Skript (0x04).

Das Byte mit den veränderbaren Flags leistet die eigentliche Arbeit. Bit 0 sagt, dass Eingänge noch hinzugefügt oder entfernt werden dürfen, Bit 1 sagt dasselbe für Ausgänge, und Bit 2 hält fest, dass eine Signatur bereits mit SIGHASH_SINGLE signiert wurde, sodass ihre Paarung aus Eingang und Ausgang erhalten bleiben muss. Ein Unterzeichner muss diese Bits laufend einschränken: Eine Signatur, die SIGHASH_ANYONECANPAY nicht verwendet, löscht Bit 0, und eine, die SIGHASH_NONE nicht verwendet, löscht Bit 1. Die Erlaubnis, weiter zu bearbeiten, erlischt von selbst, sobald Signaturen eintreffen, statt von der guten Kinderstube des nächsten Halters abzuhängen.

BIP-370 klärt die beiden Fragen, die die fehlende Transaktion offen ließ. Die Locktime wird der größte Wert, auf den sich die Eingänge einigen, mit Rückgriff auf das globale Feld oder auf 0, wenn dieses fehlt, und eine höhenbasierte Anforderung gewinnt jeden Gleichstand. Die Identität wird die txid, die Sie erhalten, wenn Sie die Felder zusammensetzen und dabei jede Sequenznummer auf 0 zwingen, da die Sequenz später noch bearbeitet werden kann.

Wo sie auftritt

PSBT-Version 2 führt eine Rolle ein, für die BIP-174 keine Entsprechung hat, den Constructor. Ein Creator öffnet die Datei mit 0 Eingängen und 0 Ausgängen und gibt sie weiter; der Constructor fügt sie hinzu, nachdem er die veränderbaren Flags geprüft hat. Ein Creator, der Beiträge erwartet, muss außerdem die Transaktionsversion auf mindestens 2 setzen, damit Funktionen, die darauf aufbauen, etwa OP_CHECKSEQUENCEVERIFY, verfügbar bleiben.

Version 2 verwendet die Serialisierung von BIP-174 weiter, sodass eine Datei von außen gleich aussieht, und die Trennung ist beabsichtigt: Von den 24 ungültigen Testvektoren im BIP sind 13 gewöhnliche Dateien der Version 0, die wegen eines falsch platzierten Feldes oder einer falsch platzierten Versionsnummer abgelehnt werden. Die Umwandlung läuft bergab, da sich eine Datei der Version 2 aus ihren eigenen Feldern als eine der Version 0 neu aufbauen lässt. Die Referenzimplementierung ist Pull Request 21283 von Bitcoin Core, und der BIP-Kopf verzeichnet den Status als Deployed.

Von den 41 Wallet-Bewertungen auf dieser Website erwähnen zwei PSBTs, Sparrow (bewertet mit 4,7) und BlueWallet (4,2), und keine nennt eine Version. Gehen Sie von Version 0 aus, sofern die Software nichts anderes sagt, und testen Sie ein unbekanntes Werkzeug mit einem kleinen Betrag, bevor es den Rest verarbeitet.

PSBT-Version 2 vs. die Transaktionsversionsnummer

PSBT-Version 2 nummeriert das Dateiformat, während die Transaktionsversionsnummer die Transaktion nummeriert, die darin zusammengesetzt wird. Beide liegen in derselben globalen Map, und BIP-370 sagt klar, dass sie nicht dasselbe Feld sind. PSBT_GLOBAL_VERSION ist in jeder Datei der Version 2 gleich 2; PSBT_GLOBAL_TX_VERSION ist eine vorzeichenbehaftete 32 Bit große Ganzzahl für die Transaktion, die aufgebaut wird, und BIP-370 verlangt, dass sie mindestens 2 beträgt, wenn der Creator Beiträge erwartet, weshalb die beiden verwechselt werden. Ändern Sie die erste, und ältere Parser lehnen die Datei ab. Ändern Sie die zweite, und Sie ändern, nach welchen Konsensregeln die Ausgabe beurteilt wird.

Nicht zu verwechseln mit

Häufig gestellte Fragen

Brauche ich PSBT-Version 2, um eine Hardware-Wallet zu nutzen?

Nein. Version 0, das Format, das BIP-174 definiert hat, deckt eine gewöhnliche Ausgabe ab, bei der Eingänge und Ausgänge feststehen, bevor eine Signatur beginnt. Version 2 lohnt sich erst, wenn ein anderer Teilnehmer einer Transaktion, die Sie bereits begonnen haben, Coins hinzufügen muss.

Warum gibt es keine PSBT-Version 1?

Die Nummer wurde bewusst übersprungen. Das Format von BIP-174 ist Version 0, wurde aber umgangssprachlich Version 1 genannt, als BIP-370 entworfen wurde, sodass das neue Format die Nummer 2 erhielt, statt zwei Dinge namens Version 1 zu hinterlassen.

Kann Software der Version 0 eine Datei der Version 2 öffnen?

In der derzeitigen Form nicht. BIP-370 macht die beiden Formate über das globale Versionsfeld absichtlich unvereinbar, obwohl sich eine Datei der Version 2 in eine der Version 0 umwandeln lässt, indem die unsignierte Transaktion aus ihren Feldern aufgebaut wird.

Weiterlesen

Quellen

Zuletzt geprüft am 6. September 2026.

Verwandte Begriffe

Mehr zum Thema Wallets und Verwahrung

Diese Seite auf Englisch lesen