Wie kann ich eine 2-von-3-Transaktion mit mehreren Signaturen erstellen?

Kann mir jemand mit einer Schritt-für-Schritt-Liste helfen, wie man eine 2-von-3-Transaktion mit mehreren Signaturen erstellt?

Es ist erwähnenswert, dass diese andere Frage bitcoin.stackexchange.com/questions/3557/… kein Duplikat zu sein scheint, da sie sich auf die Bitcoin-Client-App bezieht
Meinen Sie damit, die Rohtransaktion zu erstellen, oder meinen Sie nur, dass Sie eine solche Transaktion senden möchten? Wenn ersteres, dann schauen Sie in OP_CHECKMULTISIG und BIP-11 nach; Wenn letzteres der Fall ist, möchten Sie vielleicht eine Online-Geldbörse wie blockchain.info verwenden, von der ich glaube, dass sie dies erledigt.
Es ist ein Jahr her, dass diese Frage gestellt wurde. Was gibt? Siehe auch bitcointalk.org/index.php?topic=195168.0
Um eine Multisig-Transaktion zu erstellen, die einfachste mir bekannte API: dev.blockcypher.com/#multisig

Antworten (4)

Tatsächlich wird sowohl das Empfangen von Geldern als auch das Ausgeben von Geldern von einer Multi-Sig-Adresse bereits unterstützt.

Sie finden den Code dazu, plus Kommentare, von Gavin:

TwoOfThree.sh

Es scheint, dass eine teilweise Implementierung existiert. Gavin zitieren :

Generieren Sie eine Multisig-Adresse:

  1. Sammeln (oder generieren) Sie 3 Bitcoin-Adressen, auf welchen Computern auch immer Sie teilnehmen werden, indem Sie die RPC-Befehle getnewaddress oder getaccountaddress verwenden (oder von der GUI kopieren und einfügen).

  2. Holen Sie sich ihre öffentlichen Schlüssel validateaddressdreimal mit dem RPC-Befehl.

  3. Erstellen Sie dann eine 2-von-3-Multisig-Adresse mit addmultisigaddress; z.B

    bitcoind addmultisigaddress 2 '["044322868cb17d64dcc22185ae2d4493111d73244c3668f8ac79ecc79c0ba8d30a6756d0fa20157 709af3281cc721c7f53321a8cabda29b77900b7e4fe0174b114","..second pubkey..","..third pubkey.."]'

addmultisigaddressgibt die Multisignaturadresse zurück. Seien Sie ein wenig vorsichtig, die öffentlichen Schlüssel sind rohe Hexadezimalzahlen und enthalten keine Prüfsummen wie Bitcoin-Adressen. Sie können dann Gelder in diese 2-von-3-Transaktion senden, indem Sie die normalen RPC-Befehle sendtoaddress/sendmany oder die GUI (oder irgendetwas, das aktualisiert wurde, um Multisig-Adressen zu erkennen) verwenden.

Ausgaben von einer Multisig-Adresse:

Dies ist noch nicht implementiert (RPC-Aufrufmechanismus). Sie könnten alle Adressen in einer Brieftasche sammeln und dann das Geld ausgeben.

Aktualisierung März 2014

Multisig ist immer noch schwierig. Ich glaube, die SX-Bibliothek ist ein einfaches Werkzeug (von Leuten wie Vitalik Buterin und Amir Taaki) für die Arbeit mit Multisig, aber ich habe das nicht selbst getestet.

Multisig ist nicht mehr schwer. Siehe meine neue Antwort unten

Eine m-von-n-Multisig-Adresse wird wie folgt erstellt:

  1. Sammeln Sie alle nöffentlichen Schlüssel.
    zB 3-of-3
    03730a151f545f5dcdb1c6d99fb1251f5c70f216f39ba2681bcf10db16bd582e67 , 03a9bb9d28dfcd2e58ca7b3fa39f4051a6496fc7928f993f1758aeff7c0fee0f03,03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd
  2. Erstellen Sie das Multisig-Skript,
    OP_m <bytes-in-Pubkey1> <pubKey1> ... OP_n OP_CHECKMULTISIG
    z. 532103730a151f545f5dcdb1c6d99fb1251f5c70f216f39ba2681bcf10db16bd582e672103a9bb9d28dfcd2e58ca7b3fa39f4051a6496fc7928f993f1758aeff7c0fee0f032103a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd53ae
  3. Hash das Skript HASH160(<script>)
    zB
    8b58c2f47cd3000e42c82138f7678dc978bc109a
  4. 0x05Anhängen für P2SHAdresse im Mainnet : 05<scriptHash>
    zB
    058b58c2f47cd3000e42c82138f7678dc978bc109a
  5. Base58Check anwenden: BASE58CHECK(05<scriptHash>)
    zB
    3EPpBU7fXq1PfG6JkLnJNUUmEGcSr9rdmh

Sie können Bitcoin an diese Adresse senden, aber um sie auszugeben, müssen Sie das scriptSig: 0 <sigM> ... <script>where <sigM>von jedem der mprivaten Schlüssel signieren.

Siehe Bitcoin Wiki – Skript für Opcodes, Bitcoin Wiki – Adresspräfixe und Bitcoin Wiki – Transaktion für Multisig -Skriptformat P2SH.

Der einfachste Weg, eine Multi-Signatur-2-von-3-Transaktion zu erstellen, ist mit Coinb.in.

  1. Erstellen Sie bei Bedarf 3 Schlüsselpaare mit dem Dropdown-Befehl "Neue Adresse".

  2. Verwenden Sie die "Neue Multisig-Adresse" zusammen mit den 3 öffentlichen Schlüsseln, um eine 2-von-3-Adresse zu erstellen.

  3. Die Adresse mit Bitcoin finanzieren.

  4. Erstellen Sie eine neue Transaktion, indem Sie das „Einlösungsskript“ aus Schritt 3 einfügen und die Empfängeradressen und Beträge definieren. (Alle nicht ausgegebenen Eingaben, die keiner Empfangsadresse zugeordnet sind, werden als Transaktionsgebühren verwendet. Wenn eine Änderung gewünscht wird, fügen Sie diese in eine neue Ausgabeadresse ein, indem Sie auf das „+“ klicken.)

  5. Signieren Sie die Transaktion mit einem der privaten Schlüssel und signieren Sie diese Transaktion dann mit einem anderen der privaten Schlüssel.

  6. Senden Sie die Transaktion an das Netzwerk.

Ich habe hier ein Video erstellt, das diese Schritte dokumentiert: youtube.com/watch?v=oUSVmLegj8k