Coin Brief ENDE

Ein PSBT-Testvektor kommt, weil ein Fehler durchrutschte

Ein Tag kleiner Aenderungen an den PSBT-Spezifikationen brachte eine mit Biss hervor. Pull Request #2275, am 23. September 2026 von Sjors zusammengefuehrt, ergaenzt BIP-174 um einen Combiner-Testvektor fuer PSBT_IN_SIGHASH_TYPE: https://github.com/bitcoin/bips/pull/2275.

Der genannte Zweck ist unverblümt: Der Vektor haette einen bestimmten Fehler in Bitcoin Core gefunden. Daneben haelt der Pull Request fest, was die Spezifikation schon entschieden hatte, die Tests aber nicht abbildeten - Combine ist nicht kommutativ, waehrend die vorhandenen Vektoren es waren. Der erste Commit stellt klar, dass diese Vektoren in beiden Reihenfolgen laufen sollen, mit Raum fuer Ausnahmen, falls eine Konfliktaufloesung je standardisiert wird.

Derselbe Tag brachte begleitende Aufraeumarbeit: eine Changelog-Notiz zu dieser Klarstellung, eine einheitliche Einrueckung der Testvektoren und eine BIP-370-Aenderung dazu, was der Input Finalizer in einem Version-2-Input behaelt.

Ein PSBT-Testvektor kommt, weil ein Fehler durchrutschte
Ein PSBT-Testvektor kommt, weil ein Fehler durchrutschte — Coin Brief

Was das bedeutet

Eine kommutative Testsuite kann eine nicht kommutative Operation nicht pruefen. Wenn Combine(a, b) und Combine(b, a) sich unterscheiden duerfen, sind Vektoren, die nur eine Reihenfolge ausfuehren, genau fuer die Abweichung blind, deretwegen die Regel existiert - und blind in der Richtung, in der zwei Wallets beim Zusammenfuehren derselben Teiltransaktion verschiedene Ergebnisse erhalten.

Testvektoren in einer Spezifikation sind der Interoperabilitaetsvertrag, nicht dessen Dokumentation. Zwei unabhaengige Implementierungen stimmen ueberein, weil sie dieselben Vektoren bestehen; was die Vektoren nicht ausfuehren, stimmt nur zufaellig ueberein. Einen Vektor zu ergaenzen, weil ein Fehler entkam, heisst: Die Spezifikation nimmt eine Lehre auf, welche die Implementierungen bereits bezahlt haben.

⚠️ Es handelt sich um Aenderungen an Spezifikation und Tests. Kein Wallet-Verhalten aendert sich, weil ein Vektor hinzukam, und der in der Diskussion genannte Core-Pull-Request ist eine eigene Arbeit.