Diese Methode beschreibt, wie Sie ein 2-aus-3-Multisig erstellen.
Ich habe gehört, dass es eine inhärente Grenze für die Anzahl der Multisig-Teile gibt, die auf 3 begrenzt ist.
Funktioniert die oben beschriebene Standardmethode zum Generieren und Ausgeben von Multisig-Adressen mit mehr als 3 Teilen? Was ist die Grenze? Wie man das umgeht und größere Multisigs mit Bitcoin erstellt/ausgibt (praktische Anleitung wäre wünschenswert)
Wir müssen die Einschränkungen für Gültigkeit und Standardität unterscheiden . Die erste wird durch die Konsensregeln bestimmt (die sich ohne Hard Fork nicht ändern können). Die zweiten werden durch lokale Relay- und Mining-Richtlinien bestimmt, die im Referenzclient implementiert sind, und können sich von Version zu Version ändern.
Darüber hinaus müssen wir rohes Multisig (ein einfaches, auf OP_CHECKMULTISIG basierendes Skript) und P2SH -Multisig (wobei das OP_CHECKMULTISIG-Skript nur bei der Ausgabe angezeigt wird) unterscheiden.
Da schließlich Skripte öffentliche Schlüssel enthalten, hängt ihre Größe von ihrer Länge ab. Es gibt sowohl komprimierte (33 Bytes) als auch unkomprimierte (65 Bytes) Schlüssel, je nachdem, welche Version einer Brieftasche verwendet wurde, um sie zu generieren.
Jede m-von-n-Kombination ist gültig (bis zu n=20), aber die Standarditätsregeln erlauben nur bis zu n=3.
Diese Einschränkung wird beim Senden erzwungen (dh das Senden an ein 2-von-4-Multisig wird nicht als Standard angesehen).
Gültigkeitsregeln erfordern, dass das P2SH-Einlöseskript höchstens 520 Byte groß ist. Da das Einlöseskript [m pubkey1 pubkey2 ... n OP_CHECKMULTISIG] ist, folgt daraus, dass die Länge aller öffentlichen Schlüssel zusammen plus die Anzahl der öffentlichen Schlüssel 517 nicht überschreiten darf.
Für die Standardität hängt es von der Version ab. Bis v0.9.* erforderte der Referenzclient, dass das Gesamtausgabeskript höchstens 500 Byte groß war.
In 0.10 werden diese Standardregeln wahrscheinlich gelockert, sodass die Gültigkeitsgrenzen (15 von 15 für komprimierte Schlüssel, 7 von 7 für unkomprimierte Schlüssel) erreicht werden können.
Außerdem werden für P2SH Standarditäts- und Gültigkeitsbeschränkungen nur beim Ausgeben angewendet (da das Ausgabenskript nur zu diesem Zeitpunkt angezeigt wird). Dies kann bedeuten, dass das Senden Ihrer Münzen an ein P2SH-Skript sie unwiederbringlich verlieren kann (insbesondere wenn eine Gültigkeitsregel verletzt wird).
von 0 von 0 bis 20 von 20
https://blockchain.info/tx/970b435253b69cde8207b3245d7723bb24861fd7ab3cfe361f45ae8de085ac52 ist eine 0-von-0-P2SH-Einlösung
https://blockchain.info/tx/da738e29f64e90ae46dcc3e6b4154041d6324abbe7919e722d486a4a3148b7dc wenn 20 von 20 Bare Multisig-Einlösung
https://blockchain.info/tx/552026dade1c9385e4693a4e82f07080d8d1950fc822346f95a0dc1e0a833465 ist 15 von 15 p2sh-Einlösung
Ich habe kürzlich Multi-Sig-Ausgaben für Dartcoin implementiert , wobei ich die BitcoinJ- Implementierung als Referenz verwendet habe.
Es scheint, dass der Referenzclient maximal 3 Schlüssel für Multisig-Transaktionen hat. Das tatsächliche Limit ist jedoch 16. Dieses Limit ist nicht willkürlich (wie das 3-Tasten-Limit), sondern ist auf das harte Limit des Skriptlimits zurückzuführen.
Die Verwendung von mehr als 3 Tasten funktioniert genauso wie mit 3 Tasten. Wie Sie im Code sehen können, besteht die Ausgabe nur aus der Anzahl der von Ihnen bereitgestellten Schlüssel (n) und dem Schwellenwert für die Ausgaben (m).
Wir haben p2sh-Multisigs bis zu 8 von 15 getestet. Über 15 verursachte Bitcoin Probleme.
Sie können unseren Code hier überprüfen, um zu sehen, wie es gemacht wird:
https://github.com/orisi/orisi
Hier gibt es auch eine Projektdiskussion mit einigen interessanten Leckerbissen:
https://bitcointalk.org/index.php?topic=645589.0
Derzeit besteht das Problem darin, dass alles über 3 von 3 die Standardtransaktionsgröße überschreitet und wir es durch den Eligius-Pool schieben müssen. Aber von Leuten, die in dem Thread sagten, gibt es eine Möglichkeit, die Tasten zu komprimieren und sogar 8 von 15 st zu machen
Laut dem folgenden Artikel von Vitalik Buterin können Sie theoretisch eine von drei, fünf von fünf oder sechs von elf Multisig-Adressen haben, es kommt nur vor, dass zwei von drei die nützlichste Kombination ist.
almel