Was sind die Grenzen von m und n in m-aus-n-Multisig-Adressen?

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)

Dieser Beitrag enthält eine Schritt-für-Schritt-Anleitung zum Erstellen und Ausgeben einer Multisig-Adresse. bitcoin.stackexchange.com/questions/6100/…

Antworten (5)

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.

Rohes Multisig

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).

P2SH Multisig

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 komprimierte öffentliche Schlüssel bedeutet dies bis zu n=15
  • Für unkomprimierte bis zu n=7.

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.

  • Für komprimierte Schlüssel bedeutet dies m*73 + n*34 <= 496 (bis zu 1 von 12, 2 von 10, 3 von 8 oder 4 von 6).
  • Für unkomprimierte Schlüssel bedeutet dies m*73 + n*66 <= 496 (bis zu 1 von 6, 2 von 5, 3 von 4).

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).

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).

Bei der Verwendung von P2SH (das OP ist angesichts der verknüpften Methode) gibt es keine Begrenzung auf 3 Schlüssel. Dies wird nur für Raw-Multisig erzwungen.
Was ist das Limit, wenn Sie eine P2SH-Multisig-Adresse erstellen? Ich denke, es hängt von der Größe der Eingabe ab, die Sie erstellen müssen, um sie auszugeben.
Welche Methode wird also verwendet, P2SH oder Raw? bitcoin.stackexchange.com/questions/3712/…
P2SH. Wann immer es um eine "Multisig-Adresse" geht, wissen Sie, dass es sich um P2SH handelt.

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.

http://bitcoinmagazine.com/11108/multisig-future-bitcoin/

Er gab diese als willkürliche Beispiele an, er meinte nicht, dass dies die einzig möglichen Optionen sind ...