Zum Inhalt springen
buybitcoinsmart

Glossar / Adressen und Schlüssel

P2SH-Multisig

Was ist P2SH-Multisig?
P2SH-Multisig verbirgt ein m-von-n-Redeem-Skript hinter einer 3-Adresse, und die Obergrenze von 520 Byte für das Skript beschränkt es auf fünfzehn öffentliche Schlüssel.

Spezifiziert im BIP-16.

Ein 2-von-3-Redeem-Skript ist 105 Byte groß: ein Opcode für 2, drei komprimierte Schlüssel à 33 Byte mit ihren Push-Präfixen, ein Opcode für 3 und OP_CHECKMULTISIG. Das Ausgeben einer Eingabe kostet rund 297 vBytes, etwa das Dreifache einer nativen SegWit-Eingabe mit einem einzigen Schlüssel. Dies war von 2012 bis zu dem Zeitpunkt, an dem Witness-Daten ihren Rabatt erhielten, die übliche Regelung für gemeinsame Verwahrung.

Wie es funktioniert

Ein P2SH-Multisig-Redeem-Skript listet das Quorum direkt auf: die Anzahl der erforderlichen Signaturen, dann jeden beteiligten öffentlichen Schlüssel, dann die Gesamtzahl der Schlüssel und dann OP_CHECKMULTISIG. Niemand sieht es, solange die Coins unausgegeben bleiben, denn die Ausgabe ist nur an ihren 20 Byte großen Hash gebunden.

Die Obergrenze von fünfzehn Schlüsseln ist Arithmetik, keine erfundene Regel. Fünfzehn komprimierte Schlüssel zu je 34 Byte, den Push-Präfix mitgerechnet, ergeben 510 Byte; fügt man die beiden Zähl-Opcodes und OP_CHECKMULTISIG hinzu, kommt man auf 513, was innerhalb der Grenze von 520 Byte für ein einzelnes Stack-Element liegt. Ein sechzehnter Schlüssel passt nicht hinein. Die Konsensregeln von Bitcoin erlauben OP_CHECKMULTISIG mit bis zu 20 Schlüsseln, aber ein P2SH-Redeem-Skript kann physisch nicht so viele tragen.

Im Ausgabepfad steckt eine alte Eigenheit. OP_CHECKMULTISIG nimmt ein Element mehr vom Stack, als es verwendet, ein Fehler aus der ursprünglichen Implementierung, der ohne einen Hard Fork nie entfernt werden konnte. Unterzeichner umgehen ihn, indem sie zuerst ein Dummy-Element auf den Stack legen, und BIP-147 schrieb vor, dass dieses Element leer sein muss, was zusammen mit SegWit im Block 481.824 aktiviert wurde. Eine vollständige Eingabe liest sich daher so: leerer Push, Signatur, Signatur, Redeem-Skript.

Wo es vorkommt

Zwischen 2013 und 2018 aufgebaute Unternehmens-Treasuries, Nachlassregelungen und Cold Storage von Börsen sind größtenteils P2SH-Multisig. Die Treuhand auf älteren Peer-to-Peer-Marktplätzen nutzte 2-von-3, wobei die Plattform den dritten Schlüssel hielt, wodurch sich ein Streit beilegen ließ, ohne dass einer der beiden Händler die Coins allein steuerte.

Die Backup-Anforderung überrascht viele. Jeder Mitunterzeichner benötigt die erweiterten öffentlichen Schlüssel aller anderen Mitunterzeichner oder einen Deskriptor, der sie festhält, denn das Redeem-Skript lässt sich nicht aus einer einzigen Seed-Phrase rekonstruieren. Wer zwei von drei privaten Schlüsseln und keinen der öffentlichen Schlüssel hat, kann nicht ausgeben. Schreiben Sie den Deskriptor zusammen mit den Seed-Backups auf, und testen Sie eine Wiederherstellung, bevor die Regelung etwas enthält, das Ihnen wichtig ist.

Neue Quoren werden heute stattdessen mit P2WSH oder Taproot gebaut, weil das Ausgeben derselben Regelung deutlich weniger kostet und diese nicht auf fünfzehn Schlüssel begrenzt ist. Bestehende P2SH-Tresore funktionieren weiterhin genau wie zuvor, und es gibt keine erzwungene Migration.

P2SH-Multisig vs. Multisig

Multisig ist die Regelung, und P2SH-Multisig ist eine Art, sie aufzuschreiben. Dieselbe 2-von-3-Anforderung kann in einer Bare-Multisig-Ausgabe aus den frühesten Regeln von Bitcoin liegen, in einem P2SH-Redeem-Skript, in einem P2WSH-Witness-Skript oder, unter Taproot, in einem einzigen zusammengefassten Schlüssel, der wie eine gewöhnliche Zahlung ausgegeben wird und überhaupt kein Quorum offenlegt. Die Wahl von P2SH ist eine Entscheidung über Gebühren, die Obergrenze von fünfzehn Schlüsseln und die Tatsache, dass Ihre gesamte Signaturregelung öffentlich bekannt wird, sobald Sie das erste Mal Coins bewegen.

Nicht zu verwechseln mit

Häufig gestellte Fragen

Wie viele Schlüssel kann ein P2SH-Multisig enthalten?

Fünfzehn. Ein Redeem-Skript ist ein einzelnes Stack-Element und darf 520 Byte nicht überschreiten, und fünfzehn komprimierte Schlüssel mit ihren Push-Präfixen plus die umgebenden Opcodes ergeben 513 Byte. Die Konsensregeln von Bitcoin erlauben zwanzig Schlüssel, aber hier passen sie nicht hinein.

Was muss ich für ein P2SH-Multisig sichern?

Ihre Seed-Phrase und die erweiterten öffentlichen Schlüssel aller anderen Mitunterzeichner oder einen Deskriptor, der alle festhält. Ohne die anderen öffentlichen Schlüssel lässt sich das Redeem-Skript nicht wiederherstellen, und die Coins bleiben stecken, obwohl Sie Ihren eigenen Schlüssel haben.

Weiterlesen

Verwandte Begriffe

Mehr zum Thema Adressen und Schlüssel

Diese Seite auf Englisch lesen