Kann mir jemand mit einer Schritt-für-Schritt-Liste helfen, wie man eine 2-von-3-Transaktion mit mehreren Signaturen erstellt?
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:
Es scheint, dass eine teilweise Implementierung existiert. Gavin zitieren :
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).
Holen Sie sich ihre öffentlichen Schlüssel validateaddress
dreimal mit dem RPC-Befehl.
Erstellen Sie dann eine 2-von-3-Multisig-Adresse mit addmultisigaddress
; z.B
bitcoind addmultisigaddress 2 '["044322868cb17d64dcc22185ae2d4493111d73244c3668f8ac79ecc79c0ba8d30a6756d0fa20157 709af3281cc721c7f53321a8cabda29b77900b7e4fe0174b114","..second pubkey..","..third pubkey.."]'
addmultisigaddress
gibt 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.
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.
Eine m-von-n-Multisig-Adresse wird wie folgt erstellt:
n
öffentlichen Schlüssel. 3-of-3
03730a151f545f5dcdb1c6d99fb1251f5c70f216f39ba2681bcf10db16bd582e67
, 03a9bb9d28dfcd2e58ca7b3fa39f4051a6496fc7928f993f1758aeff7c0fee0f03
,03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd
OP_m <bytes-in-Pubkey1> <pubKey1> ... OP_n OP_CHECKMULTISIG
532103730a151f545f5dcdb1c6d99fb1251f5c70f216f39ba2681bcf10db16bd582e672103a9bb9d28dfcd2e58ca7b3fa39f4051a6496fc7928f993f1758aeff7c0fee0f032103a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd53ae
HASH160(<script>)
8b58c2f47cd3000e42c82138f7678dc978bc109a
0x05
Anhängen für P2SH
Adresse im Mainnet : 05<scriptHash>
058b58c2f47cd3000e42c82138f7678dc978bc109a
BASE58CHECK(05<scriptHash>)
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 m
privaten 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.
Erstellen Sie bei Bedarf 3 Schlüsselpaare mit dem Dropdown-Befehl "Neue Adresse".
Verwenden Sie die "Neue Multisig-Adresse" zusammen mit den 3 öffentlichen Schlüsseln, um eine 2-von-3-Adresse zu erstellen.
Die Adresse mit Bitcoin finanzieren.
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.)
Signieren Sie die Transaktion mit einem der privaten Schlüssel und signieren Sie diese Transaktion dann mit einem anderen der privaten Schlüssel.
Senden Sie die Transaktion an das Netzwerk.
Sehr unregelmäßig
Daniel h
Reißer234
Reißer234
Matthias