Nehmen wir an, wir haben eine 2 von 2 Multisig-Adresse, von der wir ausgeben möchten, also sollte die Transaktion von beiden privaten Schlüsseln signiert werden.
Nehmen wir nun an, wir haben eine Transaktion mit zwei Eingaben, also sollte die Transaktion wieder von beiden privaten Schlüsseln der Eingaben signiert werden.
Wie unterscheiden sich diese beiden in der Implementierung? Auch auf konzeptioneller Ebene? Sind diese Verfahren gleich?
Sie sind ziemlich unterschiedliche Dinge und repräsentieren sehr unterschiedliche Anwendungsfälle.
Stellen Sie sich vor, Sie sind der Leiter des Parteiplanungskomitees und Sie haben zwei Arbeiter (A und B), die Ihnen helfen, Artikel für die Partei zu kaufen. Sie erhalten 1 Bitcoin, um die Party zu finanzieren.
Sie haben zwei Möglichkeiten.
Zusammenfassen:
Ausgabe einer 2/2 Multisig-Ausgabe:
Verbringt zuvor ein einziges UTXO und benötigt zwei Schlüssel zum Signieren.
Mehrere Eingaben ausgeben:
Gibt zuvor mehrere UTXOs aus und erfordert, dass jede Eingabe separat signiert wird.
In Bezug auf die Unterzeichnung dieser Art von Transaktionen müssen sie etwas anders durchgeführt werden.
Beim Signieren einer Eingabe, die eine 2/2-Multisig-Ausgabe ausgibt, wird die Transaktion von den beiden Schlüsseln signiert und sie werden in die gleichen scriptSig
der einen Eingabe codiert. Die Transaktion wird erst gültig, wenn beide Schlüssel mit gültigen Signaturen signiert wurden.
Angenommen, der scriptPubKey der vorherigen 2/2-Multisig-Ausgabe lautet:
OP_2 {pubkey1} {pubkey2} OP_2 OP_CHECKMULTISIG
Das scriptSig, um diese Ausgabe auszugeben, wäre:
{pubkey1's signature} {pubkey2's signature}
Beachten Sie, wie sie sich in der scriptSig der gleichen Eingabe befinden.
Wenn Sie zwei verschiedene Eingaben signieren, vorausgesetzt, dass ihre vorherigen scriptPubKeys ungefähr so aussehen:
{pubkey1} OP_CHECKSIG
und
{pubkey2} OP_CHECKSIG
Dann hätten die beiden Eingaben scripSigs in diesem Format (jeweils):
{pubkey1 signature}
und
{pubkey2 signature}
HINWEIS: Ich habe einfache scriptPubKeys verwendet, um zu versuchen, klar zu machen, wie es im Allgemeinen funktioniert, aber Sie sollten wahrscheinlich Pay-to-Script-Hash-Multisig-Adressen und Pay-to-Pubkey-Hash-Adressen anstelle der rohen Multisig- und Pay-Adressen verwenden -to-pubkey scriptPubKeys, die ich in diesem Beispiel verwendet habe.
Transaktion von a Multisig Bitcoin address
(beginnend mit 3) erfordert Unterschrift von N von M
threshold
), deren digitale Unterschrift erforderlich ist, um eine gültige Transaktion zu unterzeichnenDies Multi input transaction
ist jedoch eine Art von Transaktion, bei der die Eingabe UTXO von 1 oder mehr entweder Standard- oder Multisig-Bitcoin-Adressen beinhaltet.
Folgende Zustände können auftreten
Die Standard-Bitcoin-Adresse signiert die Transaktion mit 1 Eingabe
Standard-Bitcoin-Adresse signiert Transaktionen mit mehr als 1 Eingabe (Multi-Input-Transaktion)
Multisig-Bitcoin-Adresse signiert Transaktion mit 1 Eingabe
Multisig-Bitcoin-Adresse unterzeichnet Transaktion mit mehr als 1 Eingabe (Multi-Input-Transaktion)
Bis zu diesem Zeitpunkt ALL UTXO
gehören Sie dem Unterzeichner der Transaktion. Jetzt enthalten Transaktionen UTXO für mehr als 1 Bitcoin-Adresse.
Zwei Standard-Bitcoin-Adressen signieren eine Transaktion mit jeweils 1 UTXO (Multi-Input-Transaktion)
Ex. Die Transaktion beinhaltet 2 UTXO für 2 separate Standard-Bitcoin-Adressen, um eine gültige Transaktion zu erstellen, muss Adresse A UTXO(A) und Adresse B UTXO(B) signieren. Die Transaktion kann jetzt 1 Ausgang haben, wodurch die Gebühren viel niedriger sind als in dem Szenario, in dem für jede Bitcoin-Adresse eine separate Transaktion erstellt wird.
Zwei Multisig-Bitcoin-Adressen signieren eine Transaktion mit jeweils 1 UTXO (Multi-Input-Transaktion)
Ex. Die Transaktion beinhaltet 2 UTXO für 2 separate Multisig-Bitcoin-Adressen, um eine gültige Transaktion zu erstellen, muss der Schwellenwert von Adresse A UTXO(A) und der Schwellenwert von Adresse B UTXO(B) unterzeichnen.
Ex. Die Transaktion besteht aus UTXO für 1 oder mehr Standard-Bitcoin-Adresse und 1 oder mehr Multisig-Bitcoin-Adresse.
Nick Odell
Morsecoder