Zum Inhalt springen
buybitcoinsmart

Glossar / Adressen und Schlüssel

P2WSH

Auch bekannt als Pay-to-Witness-Script-Hash, SegWit-Skript-Hash.

Was ist P2WSH?
P2WSH bindet Coins an ein SHA-256-Commitment von 32 Bytes auf ein Witness-Skript und gibt Verträgen dadurch deutlich mehr Raum als P2SH sowie einen Rabatt auf das Skript, wenn es offengelegt wird.

Spezifiziert im BIP-141.

Pay to witness script hash ist die SegWit-Ausgabe der Version 0 für alles, was komplizierter ist als ein einzelner Schlüssel, und wird als bc1q-Adresse mit 62 Zeichen geschrieben. Bitcoin Core leitet eine Transaktion weiter, deren Witness-Skript 3.600 Bytes erreicht und deren Witness bis zu 100 Stack-Elemente enthält, während ein P2SH-Redeem-Skript bei 520 Bytes endet. Dieser zusätzliche Raum ist der Grund, warum ernsthafte Verträge hierher gewechselt sind.

Wie es funktioniert

Eine P2WSH-Ausgabe ist das Byte 0x00 für Witness-Version 0, gefolgt von einem Push von 32 Bytes, insgesamt 34 Bytes. Diese 32 Bytes sind ein einfacher SHA-256 des serialisierten Witness-Skripts, nicht das RIPEMD-160 eines SHA-256, wie es an anderen Stellen in Bitcoin verwendet wird.

Diese Wahl ist bewusst getroffen. Ein Commitment mit 160 Bit bietet ungefähr 80 Bit Kollisionsresistenz, was unangenehm ist, wenn eine Gegenseite dabei hilft, auszuwählen, was in das Skript eingeht, und nach zwei Skripten mit demselben Hash suchen könnte. Ein Commitment mit 256 Bit beseitigt diese Sorge. Das Einzel-Schlüssel-P2WPKH behält den kürzeren Hash, weil nur eine Partei den Schlüssel wählt, und die Adresse ist dadurch 20 Zeichen kürzer.

Beim Ausgeben werden die Argumente auf den Witness-Stack gelegt und mit dem serialisierten Skript abgeschlossen. Ein Node hasht diesen letzten Eintrag, vergleicht ihn mit dem Commitment und führt dann das Skript mit dem aus, was übrig bleibt. Die Weiterleitungsrichtlinie von Bitcoin Core legt die Grenzen in policy.h fest: 3.600 Bytes für das Skript, 100 Elemente auf dem Stack und 80 Bytes pro Element.

Die Gebühren erklären den Wechsel. Eine 2-von-3-Transaktion benötigt hier etwa 104,5 vbytes, weil beide Signaturen und das gesamte 105 Byte große Skript im Witness mit einer Gewichtseinheit pro Byte mitgeführt werden. Dieselbe Richtlinie kostet unter P2SH etwa 297 vbytes. Die Konsensobergrenze von 20 Schlüsseln bei OP_CHECKMULTISIG ist ebenfalls erreichbar, da zwanzig Schlüssel weniger als 700 Bytes belegen.

Wo sie auftritt

Jeder Lightning-Kanal wird über eine P2WSH-Ausgabe im Verhältnis 2 von 2 finanziert, was sie zu einem der häufigsten Skripttypen in der Chain macht, obwohl nur wenige Menschen jemals die Adresse eintippen. Institutionelle Verwahrung, Miniscript-Richtlinien und zeitlich gesperrte Erbklauseln verwenden sie ebenfalls.

In einem Block-Explorer ist eine nicht ausgegebene P2WSH-Ausgabe eine bc1q-Zeichenkette mit 62 Zeichen und nichts weiter. Sie sieht gleich aus, ob sie zwei oder zwanzig Schlüssel schützt, und die Bedingungen werden erst sichtbar, wenn die Coins bewegt werden.

Sicherungen müssen das Skript enthalten. Eine Seed-Phrase erzeugt Schlüssel neu, keine beliebigen Skripte, bewahren Sie daher den Deskriptor oder die genauen Skript-Bytes zusammen mit der Seed-Phrase auf und bestätigen Sie, dass Sie daraus wiederherstellen können, bevor die Adresse echtes Geld enthält.

P2WSH vs. Witness-Skript

P2WSH ist die Ausgabe; das Witness-Skript ist der Inhalt, auf den sie sich festlegt. Die Ausgabe enthält 32 Bytes Hash und nichts weiter, sie vermittelt also keine Informationen über die damit verbundenen Bedingungen, und nichts vom Skript erscheint on-chain, bis eine Transaktion es veröffentlicht. Die Verpflichtung ist dadurch einseitig. Ein Absender benötigt nur die Adresse und kann bezahlen, ohne irgendetwas zu verstehen. Der Empfänger benötigt die genauen Skript-Bytes für immer, denn ihr Verlust macht die Coins unausgebbar, egal wie viele private Schlüssel überleben.

Nicht zu verwechseln mit

Häufig gestellte Fragen

Warum ist eine P2WSH-Adresse länger als eine gewöhnliche bc1q-Adresse?

Weil sie einen Hash von 32 Bytes statt von 20 Bytes kodiert, was 62 Zeichen statt 42 ergibt. Das längere Commitment verwendet einfachen SHA-256, wodurch Kollisionen außer Reichweite bleiben, wenn mehrere Parteien beim Aufbau des Skripts mitwirken.

Brauche ich P2WSH für eine gewöhnliche Wallet?

Nein. Eine Wallet mit einem einzigen Schlüssel verwendet P2WPKH oder Taproot und berührt es nie. P2WSH ist wichtig für Multisig-Tresore, die Finanzierung von Lightning-Kanälen und jede Ausgaberichtlinie, die als Skript geschrieben werden muss.

Weiterlesen

Verwandte Begriffe

Mehr zum Thema Adressen und Schlüssel

Diese Seite auf Englisch lesen