Multisig vs. Multi-Input-Transaktionssignierung

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?

Werden die beiden Eingänge beide von der Multisig-Adresse ausgegeben?

Antworten (2)

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.

  • Sie können die Gelder zwischen A und B aufteilen. Beispielsweise könnten Sie A und B jeweils 0,5 Bitcoins in zwei separaten Ausgaben geben. Wenn sie etwas kaufen müssen, das mehr als 0,5 Bitcoins wert ist, müssen sie ihre Ausgaben als Eingaben für dieselbe Transaktion kombinieren. Bei Artikeln mit weniger als 0,5 Bitcoins können A und B jedoch unabhängig voneinander handeln, um Artikel zu kaufen (oder das Geld zu stehlen!).
  • Sie können A und B gemeinsam den 1 Bitcoin in einer 2 von 2 Multisig-Adresse geben. Jetzt müssen sie jedem Kauf zustimmen, um aus den Mitteln des Parteikomitees ausgeben zu können.

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

Das war eigentlich nicht die Antwort, die ich suche. Wie unterscheiden sich diese beiden auf der Implementierungsebene: 1) erfordert zwei Schlüssel zum Signieren 2) erfordert, dass jede Eingabe separat signiert wird. Was ich meine, ist, dass am Ende eine nicht signierte Rohtransaktion vorhanden ist, die signiert werden sollte. Wie würde sich das Signierverfahren zwischen diesen beiden Szenarien unterscheiden?
@Shayanbahal, klärt das das auf?
Das war wirklich gut, danke. Nur in Bezug auf den letzten Teil (HINWEIS) ist mir nicht ganz klar, was Sie mit "Sie sollten wahrscheinlich Pay-to-Script-Hash-Multisig-Adresse und Pay-to-Pubkey-Hash-Adressen anstelle der rohen Multisig- und Pay- to-pubkey scriptPubKeys, die ich in diesem Beispiel verwendet habe."
@Shayanbahal, die Antwort auf all diese Dinge liegt wahrscheinlich außerhalb des Rahmens dieser Frage. Diese Antwort sollte helfen, den Unterschied zwischen Raw-Multisig und P2SH-Multisig zu erklären. Die Bitcoin-Entwicklerdokumentation ist ebenfalls hilfreich. Und stellen Sie sicher, dass Sie die Antworten auf Ihre Fragen mit dem grünen Häkchen markieren. :)

Transaktion von a Multisig Bitcoin address(beginnend mit 3) erfordert Unterschrift von N von M

  • M stellt die Anzahl der Parteien dar, denen es erlaubt ist, UTXO (Eingabe der Transaktion) zu entsperren. Im Fall von 2-2 müssen beide Unterschriften von beiden Parteien beteiligt sein, um eine gültige Transaktion zu erstellen
  • N ist die Anzahl der Eigentümer (bekannt als threshold), deren digitale Unterschrift erforderlich ist, um eine gültige Transaktion zu unterzeichnen

Dies Multi input transactionist 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

  1. Die Standard-Bitcoin-Adresse signiert die Transaktion mit 1 Eingabe

    • erfordert eine digitale Signatur mit gültigem privatem Schlüssel
  2. Standard-Bitcoin-Adresse signiert Transaktionen mit mehr als 1 Eingabe (Multi-Input-Transaktion)

    • erfordert eine digitale Signatur für jeden UTXO mit gültigem privatem Schlüssel
  3. Multisig-Bitcoin-Adresse signiert Transaktion mit 1 Eingabe

    • erfordert eine digitale Signatur ab Schwellenwert
  4. Multisig-Bitcoin-Adresse unterzeichnet Transaktion mit mehr als 1 Eingabe (Multi-Input-Transaktion)

    • erfordert eine digitale Signatur für jeden UTXO nach Schwellenwert

Bis zu diesem Zeitpunkt ALL UTXOgehören Sie dem Unterzeichner der Transaktion. Jetzt enthalten Transaktionen UTXO für mehr als 1 Bitcoin-Adresse.

  1. Zwei Standard-Bitcoin-Adressen signieren eine Transaktion mit jeweils 1 UTXO (Multi-Input-Transaktion)

    • erfordert eine digitale Signatur für jeden UTXO durch einen entsprechenden gültigen privaten Schlüssel

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.

  1. Zwei Multisig-Bitcoin-Adressen signieren eine Transaktion mit jeweils 1 UTXO (Multi-Input-Transaktion)

    • erfordert eine digitale Signatur für jedes UTXO durch einen entsprechenden gültigen privaten Schlüssel des Schwellenwerts

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.

  1. Option 5 und 6 kombiniert.

Ex. Die Transaktion besteht aus UTXO für 1 oder mehr Standard-Bitcoin-Adresse und 1 oder mehr Multisig-Bitcoin-Adresse.