Pages:
Author

Topic: Praktische Umsetzung von Multi-Signature-Wetten im Forum - page 2. (Read 595 times)

legendary
Activity: 994
Merit: 1098
An AA rated Bandoneonista
Danke für die Rückmeldung!

Ja, bereits paar mal erfolgreich durchlaufen.
Wenn man dort den eigenen xpub und die der anderen eingibt hast du einen watching-only Zugriff auf die MultiSig Adresse.
Das hat im Grunde die gleiche Funktionalitäten wie die Auswahlmöglichkeit bei einer Standardwallet. xpub -> watching only, xprv -> signierungsfähig

Ich hab' das mit den oben genannten Adressen versucht. Also: 1. Neues Wallet erstellen. 2. Multi-signature wallet auswählen. 2 von 3 auswählen. 3. Use public or private keys auswählen. 4. Jetzt kommt der Dialog Add Cosigner 1. Wenn ich hier den Pubkey 02b81e1f104cfe73bdaeff62181c691cc34ea4360053891ddc42d3b8992c8fc1ca der ersten Adresse eingebe, komme ich schlicht nicht weiter. Der Button Next bleibt ausgegraut.

Was meinst du mit "komplette" Wallets?
Einen Master Private Key habe ich für Multisig in Electrum allerdings noch nie benötigt, da immer über den Seed gegangen.

Auf mich machte das den Eindruck, dass ich nur komplette MultiSig-Wallets einrichten kann - wie im BitcoinBlog beschrieben (und auch in der Electrum-Doku). Vlt. hat Electrum aber z.Z. schlicht einen Bug beim o.g. Vorgehen? Oder - am wahrscheinlichsten - ich mache da noch irgendwas falsch.

Ein Use Case für die Sinnhaftigkeit von "Use public or private keys" wäre, dass der Schiedsrichter nach Eingabe der 3 xpubs der Teilnehmer seine 2 eigenen xprvs dort eintragen kann und dann mit beiden Schlüsseln gleichzeitig signieren kann. (noch nie ausprobiert, also keine Gewähr)

Genau das wollte ich durchspielen. Also zunächst mal mit den drei Adresse oben (PubKey von 1 und 2, PrivKey von 3) und dann erweitert mit einem Schiedsrichter (mit zwei PrivKeys).

Das stimmt - allein aus diesem Grund braucht es imo einen Schiedsrichter/Treuhänder.

Ich sehe eigentlich auch keine andere Lösung. Elaborierter ginge das nur mit komplexeren Smart Contracts, die z.B. die Anzahl der notwendigen Signierungen vom Eingang der entsprechenden Inputs von den entsprechenden Adressen abhängig machten. Dann wären wir aber wohl bei Ethereum.
sr. member
Activity: 592
Merit: 271
@all: Hat jemand von Euch mal Electrum für Multisig verwendet? Man kann beim Anlegen eines Multi-Sig-Wallets auch eine Option ("Use public or private keys") auswählen, aber anschließend kommt irgendwas bzgl. "xpub" (Master Public Key) und "xprv" (Master Private Key), das sich wohl eher auf komplette Wallets bezieht. Erschließt sich mir noch nicht wirklich.

Ja, bereits paar mal erfolgreich durchlaufen.
Wenn man dort den eigenen xpub und die der anderen eingibt hast du einen watching-only Zugriff auf die MultiSig Adresse.
Das hat im Grunde die gleiche Funktionalitäten wie die Auswahlmöglichkeit bei einer Standardwallet. xpub -> watching only, xprv -> signierungsfähig
Was meinst du mit "komplette" Wallets?
Einen Master Private Key habe ich für Multisig in Electrum allerdings noch nie benötigt, da immer über den Seed gegangen.

Das wurde in einem von deinen Links abgehandelt: Man macht 3von5 und der Schiedsrichter bekommt 2 Stimmen.
Ein Use Case für die Sinnhaftigkeit von "Use public or private keys" wäre, dass der Schiedsrichter nach Eingabe der 3 xpubs der Teilnehmer seine 2 eigenen xprvs dort eintragen kann und dann mit beiden Schlüsseln gleichzeitig signieren kann. (noch nie ausprobiert, also keine Gewähr)


EDIT: Ein weiteres "Angriffsszenario" unkooperativer Wettpartner gegen das Setup ohne Schiedsrichter: Sie stellen ihre Public-Keys bereit, zahlen dann aber nicht auf die Wettadresse ein. Damit scammen sie denjenigen, der - z.B. als Ausrichter der Wette - als erster eingezahlt hat. Er bekommt seine Kohle ohne Schiedsrichter schlicht nicht mehr raus. Unterm Strich spricht also vieles dafür, eine Wette nicht ohne Schiedsrichter auszurichten.

Das stimmt - allein aus diesem Grund braucht es imo einen Schiedsrichter/Treuhänder.
legendary
Activity: 994
Merit: 1098
An AA rated Bandoneonista
Na das mit den Multisig funktioniert ja, das wissen wir ja  Grin

Hehe, ja. Smiley - @all: Hat jemand von Euch mal Electrum für Multisig verwendet? Man kann beim Anlegen eines Multi-Sig-Wallets auch eine Option ("Use public or private keys") auswählen, aber anschließend kommt irgendwas bzgl. "xpub" (Master Public Key) und "xprv" (Master Private Key), das sich wohl eher auf komplette Wallets bezieht. Erschließt sich mir noch nicht wirklich.

EDIT: Ein weiteres "Angriffsszenario" unkooperativer Wettpartner gegen das Setup ohne Schiedsrichter: Sie stellen ihre Public-Keys bereit, zahlen dann aber nicht auf die Wettadresse ein. Damit scammen sie denjenigen, der - z.B. als Ausrichter der Wette - als erster eingezahlt hat. Er bekommt seine Kohle ohne Schiedsrichter schlicht nicht mehr raus. Unterm Strich spricht also vieles dafür, eine Wette nicht ohne Schiedsrichter auszurichten.
full member
Activity: 1179
Merit: 210
only hodl what you understand and love!
Hallöchen,

coole Sache, daß du dir die Mühe machst eine einheitliche Agenda aufzustellen. Na das mit den Multisig funktioniert ja, das wissen wir ja  Grin
legendary
Activity: 994
Merit: 1098
An AA rated Bandoneonista
Das wurde in einem von deinen Links abgehandelt: Man macht 3von5 und der Schiedsrichter bekommt 2 Stimmen.
Klar - so naheliegend. Besten Dank für den Hinweis! - Ich hatte die ganze Zeit dazu recherchiert, ob man irgendwie die Private-Keys gewichten kann. Viel zu umständlich gedacht: der Schiedsrichter rückt einfach zwei Publik-Keys raus, damit hat er dann die beiden notwendigen Stimmen.

EDIT: Rechtliche Fragen zum Thema "Wetten" werde ich erstmal nicht behandeln. Das hängt letztlich zu stark von den konkreten Wettbedingungen ab und dem Wohnsitz der Teilnehmer. Deshalb gestrichen.
hero member
Activity: 773
Merit: 531
Das wurde in einem von deinen Links abgehandelt: Man macht 3von5 und der Schiedsrichter bekommt 2 Stimmen.
legendary
Activity: 994
Merit: 1098
An AA rated Bandoneonista
So, der rein technische Teil ist jetzt erstmal fertig. Ich werde noch ein paar Links und Erläuterungen aufnehmen und die letzten Punkte nach etwas weiterer Recherche ergänzen.

Interessant wird es nun, wenn man sich über die konkrete Ausgestaltung der Signierungsanforderungen (n von m) ein paar Gedanken macht. Gehen wir vom obigen Fall einer Wette von drei Personen aus, von denen zwei abschließend signieren müssen. Unterstellen wir dabei ehrenhafte Teilnehmer, die feststellen, dass Teilnehmer A gewonnen hat. A erstellt also eine Transaktion und signiert diese. B oder C signieren ebenfalls. Damit ist die Wette abgeschlossen. Verbünden sich aber B und C gegen A, dann erstellt einfach B eine andere Transaktion, die von C signiert wird. A hat damit zwar die Wette gewonnen, B und C aber das Geld.

Verhindern könnte man das durch einen Schiedsrichter S. Man erstellt dann keine 2-von-3-Multi-Signature-Adresse, sondern eine 3-von-4-Adresse. B und C haben somit keine Möglichkeit, A über den Tisch zu ziehen (sofern sich nicht der Schiedsrichter ebenfalls auf ihre Seite schlägt). B und C können aber gemeinsam, auch gegen den Schiedsrichter, verhindern, dass A seine Kohle bekommt. Beide zeichnen einfach die Transaktion nicht, die A und S signiert haben.

Gibt es dazu Überlegungen?
legendary
Activity: 2618
Merit: 1006
- reserviert -  Huh
legendary
Activity: 994
Merit: 1098
An AA rated Bandoneonista
- reserviert -
legendary
Activity: 994
Merit: 1098
An AA rated Bandoneonista
Übersicht
Ausgangssituation
Grundlagen
Umsetzung mit drei Teilnehmern
Umsetzung mit drei Teilnehmern und Schiedsrichter
Nützliche Links
tl;dr

Ausgangssituation
Nachdem es im Kursverlaufs-Thread immer mal wieder zu der Situation kommt, dass verschiedene Beiträger mit ihren Chartanalysen, Kursphantasien, Wutausbrüchen und FUD-Trollereien am Ende sind, hat es sich als hilfreich erwiesen, einfach einen kleinen Wettspaß zu unternehmen - und auf zukünftige Kurs-Entwicklungen (oder sonstige Ereignisse der Kryptowelt) eine Wette abzuschließen. Frei nach dem Motto: put your money where your mouth is.

Meistens verlaufen solche Wetten unkompliziert, manchmal münden sie in umfänglicher Großzügigkeit, zuweilen kommt es aber auch zu Verwerfungen - seien es nicht hinreichend definierte Wettbedingungen oder bewusste Täuschungsmanöver gänzlich Unbeteiligter.

Dieser Thread hat deshalb das Ziel, einwenig drüber nachzudenken, wie man Wetten im Forum besser formalisieren, dabei Bitcoin-Funktionalitäten sinnvoll nutzen und auch noch etwas über smarte Verträge, die durch das Bitcoin-Protokoll ermöglicht werden, lernen kann. Hierzu gab es schon hier, da und da Umsetzungen, wir fangen also nicht bei Null an.

Grundlagen
Wetten sind ideale Anwendungsfälle für Smart Contracts, sofern sich sämtliche Wettbedingungen und Auszahlungsmodalitäten in einem Algorithmus abbilden lassen, der automatisch die Erfüllungsbedingungen des geschlossenen Vertrages überprüfen und die resultierenden Auszahlungen an die Wettbeteiligten zum vertraglich vereinbarten Zeitpunkt vornehmen kann. Das Bitcoin-Protokoll kann eine solche Abbildung nicht leisten, es verfügt jedoch über eine Teilfunktionalität, sofern man sich einer Multi-Signature-Adresse bedient.

Um Transaktionen von einer Multi-Signature-Adresse durchzuführen, muss eine zuvor definierte Anzahl von Beteiligten (n von m) mit ihren passenden Private-Keys die Transaktion signieren. Für eine Wette hat dies den Vorteil, dass das Vertrauen in deren Einlösung über mehrere Stellen verteilt wird und nicht allein abhängig vom Willen und der Fähigkeit jedes einzelnen Wett-Teilnehmers oder eines Escrows ist. Insofern formalisiert die Verwendung von Multi-Signature-Adressen den Auszahlungsteil der geschlossenen Wette, kann aber nicht den Bedingungsteil derselben realisieren.

Für die Wettpraxis bedeutet dies: Die Wettbedingungen müssen natürlichsprachlich möglichst eindeutig formuliert, die Auszahlungsbedingungen formalisiert werden. Herrscht Einigkeit über die Bedingungen, müssen sich die Teilnehmer zu diesen bekennen. Dies geschieht durch Bekanntmachung des Public-Keys jedes Teilnehmers. Stehen alle Public-Keys sämtlicher Teilnehmer zur Verfügung, generieren sie eine Multi-Signature-Adresse auf dieser Grundlage. Anschließend leistet jeder Teilnehmer eine Transaktion des Wetteinsatzes an diese Adresse.

Umsetzung mit drei Teilnehmern
Die nachfolgende Beispielumsetzung nutzt die API von Bitcoin Core. Parallel wird das Vorgehen über die Python-Konsole von Electrum dokumentiert sowie die Nutzung der Pybitcointools. Ebenfalls wird auf die Nutzung der Online-Implementierung von Coinb.in verwiesen, die recht praktisch ist, zum Signieren jedoch nicht bzw. nur offline verwendet werden sollte. Im BitcoinBlog findet sich eine Beschreibung zur Nutzung von Electrum. Die Multi-Signature-Umsetzung in Electrum basiert auf der Verwendung von Master-Public- und Master-Private-Keys nach BIP32. Erstellt würde also ein gemeinsames Wallet mit einer beliebigen Anzahl von Adressen für alle Teilnehmer. Das Verfahren weicht insofern von der nachfolgend beschriebenen Umsetzung mit den Keys der Einzeladressen ab.

Schritt 1: Public-Keys bereitstellen
Jeder Teilnehmer wählt eine (am besten bislang nicht verwendete) Adresse, über deren Private-Key er verfügt, und stellt den Public-Key dieser allen anderen Beteiligten zur Verfügung. Die Adressen dienen allein zum Signieren der Auszahlung in Schritt 4, nicht der Übersendung oder dem Halten der Wetteinsätze:

Input Teilnehmer 1
Code: (Bitcoind)
validateaddress 15p1QoP2VwHUU2PaFtgEAGuU7Y3p9P59Zd
Code: (Electrum)
getpubkeys("15p1QoP2VwHUU2PaFtgEAGuU7Y3p9P59Zd")
Code: (Pybitcointools)
pybtctool privtopub {myprivkey}

Output Teilnehmer 1
Code: (Public-Key)
02b81e1f104cfe73bdaeff62181c691cc34ea4360053891ddc42d3b8992c8fc1ca

Input Teilnehmer 2
Code: (Bitcoind)
validateaddress 14igQFDVN86HQ2tdo5QTqjTVUhz7Cjb2jV
Code: (Electrum)
getpubkeys("14igQFDVN86HQ2tdo5QTqjTVUhz7Cjb2jV")
Code: (Pybitcointools)
pybtctool privtopub {myprivkey}

Output Teilnehmer 2
Code: (Public-Key)
031ea604b64c7e36131966c9b6e959a12a2a85799a4cff37601ceda61f267e3b14

Input Teilnehmer 3
Code: (Bitcoind)
validateaddress 1KtCSrphdSHVv9yumCGgecju6mBb2isMTR
Code: (Electrum)
getpubkeys("1KtCSrphdSHVv9yumCGgecju6mBb2isMTR")
Code: (Pybitcointools)
pybtctool privtopub {myprivkey}

Output Teilnehmer 3
Code: (Public-Key)
02a3d7a35c6bc98f48ba8037ce22129efb9c497ca70c5362ece181d9dfb31819d9

Bei Nutzung von Electrum kann der Public-Key auch über die Adressliste eingesehen werden. Dazu die Adresse markieren und im Kontextmenü Details auswählen.
 
Schritt 2: Reedem-Script/Multi-Signature-Adresse generieren
Aus den Public-Keys der Teilnehmer sowie den Signierungs-Bedingungen (hier 2 von 3) wird ein Reedem-Script generiert. Der Hash des Scripts ist die Multi-Signature-Adresse, auf die die Wetteinsätze im Schritt 3 übertragen werden (P2SH) :

Input
Code: (Bitcoind)
createmultisig 2 '["02b81e1f104cfe73bdaeff62181c691cc34ea4360053891ddc42d3b8992c8fc1ca", "031ea604b64c7e36131966c9b6e959a12a2a85799a4cff37601ceda61f267e3b14", "02a3d7a35c6bc98f48ba8037ce22129efb9c497ca70c5362ece181d9dfb31819d9"]'
Code: (Electrum)
createmultisig(2, ["02b81e1f104cfe73bdaeff62181c691cc34ea4360053891ddc42d3b8992c8fc1ca", "031ea604b64c7e36131966c9b6e959a12a2a85799a4cff37601ceda61f267e3b14", "02a3d7a35c6bc98f48ba8037ce22129efb9c497ca70c5362ece181d9dfb31819d9"])
Code: (Pybitcointools)
pybtctool mk_multisig_script 02b81e1f104cfe73bdaeff62181c691cc34ea4360053891ddc42d3b8992c8fc1ca 031ea604b64c7e36131966c9b6e959a12a2a85799a4cff37601ceda61f267e3b14 02a3d7a35c6bc98f48ba8037ce22129efb9c497ca70c5362ece181d9dfb31819d9 2 3
pybtctool scriptaddr 522102b81e1f104cfe73bdaeff62181c691cc34ea4360053891ddc42d3b8992c8fc1ca21031ea604b64c7e36131966c9b6e959a12a2a85799a4cff37601ceda61f267e3b142102a3d7a35c6bc98f48ba8037ce22129efb9c497ca70c5362ece181d9dfb31819d953ae

Output
Code: (Adresse)
3ER5NMP4qhEowpf8F1Lwrtyw99GmfJs1my
Code: (Redeem-Script)
522102b81e1f104cfe73bdaeff62181c691cc34ea4360053891ddc42d3b8992c8fc1ca21031ea604b64c7e36131966c9b6e959a12a2a85799a4cff37601ceda61f267e3b142102a3d7a35c6bc98f48ba8037ce22129efb9c497ca70c5362ece181d9dfb31819d953ae

Alternativ kann das MultiSig-Formular von Coinb.in verwendet werden. Ein kurzer Check des Redeem-Scripts zeigt:

Input
Code: (Bitcoind)
decodescript 522102b81e1f104cfe73bdaeff62181c691cc34ea4360053891ddc42d3b8992c8fc1ca21031ea604b64c7e36131966c9b6e959a12a2a85799a4cff37601ceda61f267e3b142102a3d7a35c6bc98f48ba8037ce22129efb9c497ca70c5362ece181d9dfb31819d953ae

Output
Code: (Dekodiertes Script)
{
  "asm": "2 02b81e1f104cfe73bdaeff62181c691cc34ea4360053891ddc42d3b8992c8fc1ca 031ea604b64c7e36131966c9b6e959a12a2a85799a4cff37601ceda61f267e3b14 02a3d7a35c6bc98f48ba8037ce22129efb9c497ca70c5362ece181d9dfb31819d9 3 OP_CHECKMULTISIG",
  "reqSigs": 2,
  "type": "multisig",
  "addresses": [
    "15p1QoP2VwHUU2PaFtgEAGuU7Y3p9P59Zd",
    "14igQFDVN86HQ2tdo5QTqjTVUhz7Cjb2jV",
    "1KtCSrphdSHVv9yumCGgecju6mBb2isMTR"
  ],
  "p2sh": "3ER5NMP4qhEowpf8F1Lwrtyw99GmfJs1my"
}

Electrum und Pybitcointools scheinen keine Möglichkeit vorzusehen, Redeem-Scripts zu decodieren. Es kann alternativ auf die Validierungsfunktion von Coinb.in zurückgegriffen werden.

Schritt 3: Einzahlung der Wetteinsätze
Jeder Teilnehmer überträgt den vereinbarten Betrag auf die in Schritt 2 generierte Multi-Signature-Adresse (für dieses Beispiel drei Mal 0.001 BTC innerhalb einer Transaktion):

  f3fdded77a5adf6fd1e7d2dcabb3cdb22f687226e61b111f29ed8226d846b859

Schritt 4: Erstellung der Transaktion an den Gewinner
Nach Feststellung des Wettergebnisses wird eine Transaktion an die Zieladresse des Gewinners erstellt. Zur Veranschaulichung gehen 0.00275 BTC an den Gewinner, 0.00025 BTC werden als Transaktionsgebühr verwendet:
 
Input
Code: (Bitcoind)
createrawtransaction '[{"txid":"f3fdded77a5adf6fd1e7d2dcabb3cdb22f687226e61b111f29ed8226d846b859", "vout":2}, {"txid":"f3fdded77a5adf6fd1e7d2dcabb3cdb22f687226e61b111f29ed8226d846b859", "vout":0}, {"txid":"f3fdded77a5adf6fd1e7d2dcabb3cdb22f687226e61b111f29ed8226d846b859", "vout":1}]' '{"3Gp2Jhyy5N5dTqPkXjhSS8vmKttSysNnMK":0.00275}'
Code: (Pybitcointools)
pybtctool mktx f3fdded77a5adf6fd1e7d2dcabb3cdb22f687226e61b111f29ed8226d846b859:2 f3fdded77a5adf6fd1e7d2dcabb3cdb22f687226e61b111f29ed8226d846b859:0 f3fdded77a5adf6fd1e7d2dcabb3cdb22f687226e61b111f29ed8226d846b859:1 3Gp2Jhyy5N5dTqPkXjhSS8vmKttSysNnMK:275000

Output
Code: (Unsignierte Transaktion)
010000000359b846d82682ed291f111be62672682fb2cdb3abdcd2e7d16fdf5a7ad7defdf30000000000ffffffff59b846d82682ed291f111be62672682fb2cdb3abdcd2e7d16fdf5a7ad7defdf30100000000ffffffff59b846d82682ed291f111be62672682fb2cdb3abdcd2e7d16fdf5a7ad7defdf30200000000ffffffff01383204000000000017a914a5dd1e12f6be37452b2488620cbbb16931cdbbfe8700000000

Alternativ kann das Transaktions-Formular von Coinb.in verwendet werden.

Schritt 5: Signierung der Transaktion an den Gewinner
Der sicherheitskritische Teil der Umsetzung ist die Signierung der Transaktion durch zwei von drei der Teilnehmer. Hierzu dienen die Private-Keys der in Schritt 1 bereitgestellten Adressen. Zunächst signiert der Teilnehmer 1 die in Schritt 4 erstellte Transaktion:

Input Teilnehmer 1
Code: (Bitcoind)
signrawtransaction '010000000359b846d82682ed291f111be62672682fb2cdb3abdcd2e7d16fdf5a7ad7defdf30000000000ffffffff59b846d82682ed291f111be62672682fb2cdb3abdcd2e7d16fdf5a7ad7defdf30100000000ffffffff59b846d82682ed291f111be62672682fb2cdb3abdcd2e7d16fdf5a7ad7defdf30200000000ffffffff01383204000000000017a914a5dd1e12f6be37452b2488620cbbb16931cdbbfe8700000000' '[{"txid":"f3fdded77a5adf6fd1e7d2dcabb3cdb22f687226e61b111f29ed8226d846b859", "vout":2, "scriptPubKey":"a914a5dd1e12f6be37452b2488620cbbb16931cdbbfe87", "redeemScript":"522102b81e1f104cfe73bdaeff62181c691cc34ea4360053891ddc42d3b8992c8fc1ca21031ea604b64c7e36131966c9b6e959a12a2a85799a4cff37601ceda61f267e3b142102a3d7a35c6bc98f48ba8037ce22129efb9c497ca70c5362ece181d9dfb31819d953ae"}, {"txid":"f3fdded77a5adf6fd1e7d2dcabb3cdb22f687226e61b111f29ed8226d846b859", "vout":0, "scriptPubKey":"a914a5dd1e12f6be37452b2488620cbbb16931cdbbfe87", "redeemScript":"522102b81e1f104cfe73bdaeff62181c691cc34ea4360053891ddc42d3b8992c8fc1ca21031ea604b64c7e36131966c9b6e959a12a2a85799a4cff37601ceda61f267e3b142102a3d7a35c6bc98f48ba8037ce22129efb9c497ca70c5362ece181d9dfb31819d953ae"}, {"txid":"f3fdded77a5adf6fd1e7d2dcabb3cdb22f687226e61b111f29ed8226d846b859", "vout":1, "scriptPubKey":"a914a5dd1e12f6be37452b2488620cbbb16931cdbbfe87", "redeemScript":"522102b81e1f104cfe73bdaeff62181c691cc34ea4360053891ddc42d3b8992c8fc1ca21031ea604b64c7e36131966c9b6e959a12a2a85799a4cff37601ceda61f267e3b142102a3d7a35c6bc98f48ba8037ce22129efb9c497ca70c5362ece181d9dfb31819d953ae"}]' '["{myprivkey}"]

Output
Code: (Mit Private-Key 1 signierte Transaktion)
010000000359b846d82682ed291f111be62672682fb2cdb3abdcd2e7d16fdf5a7ad7defdf302000000b500483045022100db7111070928b3e2133ce8e892ae0a4bd4f60a09909922a666b63aa2ceecc687022003de0e357abdb54f31b959921cd750d1f20a71e66e4bc6d23d2aed273e3f6c5e014c69522102b81e1f104cfe73bdaeff62181c691cc34ea4360053891ddc42d3b8992c8fc1ca21031ea604b64c7e36131966c9b6e959a12a2a85799a4cff37601ceda61f267e3b142102a3d7a35c6bc98f48ba8037ce22129efb9c497ca70c5362ece181d9dfb31819d953aeffffffff59b846d82682ed291f111be62672682fb2cdb3abdcd2e7d16fdf5a7ad7defdf300000000b500483045022100c0b8087f88d01fddfc16ca725cdc94e3397a6aabc82048376f7422efd86d11f502200b328883bd85d8bf014da31c71a447620702894cdb424a30ada27d555d9a06c1014c69522102b81e1f104cfe73bdaeff62181c691cc34ea4360053891ddc42d3b8992c8fc1ca21031ea604b64c7e36131966c9b6e959a12a2a85799a4cff37601ceda61f267e3b142102a3d7a35c6bc98f48ba8037ce22129efb9c497ca70c5362ece181d9dfb31819d953aeffffffff59b846d82682ed291f111be62672682fb2cdb3abdcd2e7d16fdf5a7ad7defdf301000000b40047304402205978fa53489429eba7bad690550b0b32bc24e44fb08c1d5ba365d524405ed8ef02203abb5f6b06882af826b84ca9946e9f4d30c7287059e6cedf1ba510d637741e78014c69522102b81e1f104cfe73bdaeff62181c691cc34ea4360053891ddc42d3b8992c8fc1ca21031ea604b64c7e36131966c9b6e959a12a2a85799a4cff37601ceda61f267e3b142102a3d7a35c6bc98f48ba8037ce22129efb9c497ca70c5362ece181d9dfb31819d953aeffffffff01383204000000000017a914a5dd1e12f6be37452b2488620cbbb16931cdbbfe8700000000

Anschließend signiert Teilnehmer 3 analog die von Teilnehmer 1 signierte Transaktion:

Output
Code: (Mit Private-Key 3 signierte Transaktion von 1)
010000000359b846d82682ed291f111be62672682fb2cdb3abdcd2e7d16fdf5a7ad7defdf302000000fdfe0000483045022100db7111070928b3e2133ce8e892ae0a4bd4f60a09909922a666b63aa2ceecc687022003de0e357abdb54f31b959921cd750d1f20a71e66e4bc6d23d2aed273e3f6c5e01483045022100f1e18083a370bb4267e41d01fa791af4f2d1ded91af51490301fe69d8ec7c2ac02204a375b1aa9d4a1573ffbe8a3b53c4c5f3d3c353304952881a3a545be7ecc229f014c69522102b81e1f104cfe73bdaeff62181c691cc34ea4360053891ddc42d3b8992c8fc1ca21031ea604b64c7e36131966c9b6e959a12a2a85799a4cff37601ceda61f267e3b142102a3d7a35c6bc98f48ba8037ce22129efb9c497ca70c5362ece181d9dfb31819d953aeffffffff59b846d82682ed291f111be62672682fb2cdb3abdcd2e7d16fdf5a7ad7defdf300000000fdfd0000483045022100c0b8087f88d01fddfc16ca725cdc94e3397a6aabc82048376f7422efd86d11f502200b328883bd85d8bf014da31c71a447620702894cdb424a30ada27d555d9a06c10147304402203bf222cb3a662f99aed033696e79361c6a776991d1722dc730aa15fd183f38b2022005d821a34759606fcb689b7d8509ebaedd33d479a4cc899bdc7041c608e8b932014c69522102b81e1f104cfe73bdaeff62181c691cc34ea4360053891ddc42d3b8992c8fc1ca21031ea604b64c7e36131966c9b6e959a12a2a85799a4cff37601ceda61f267e3b142102a3d7a35c6bc98f48ba8037ce22129efb9c497ca70c5362ece181d9dfb31819d953aeffffffff59b846d82682ed291f111be62672682fb2cdb3abdcd2e7d16fdf5a7ad7defdf301000000fdfd000047304402205978fa53489429eba7bad690550b0b32bc24e44fb08c1d5ba365d524405ed8ef02203abb5f6b06882af826b84ca9946e9f4d30c7287059e6cedf1ba510d637741e7801483045022100dcdb492f0ffc5ee4c72bf9523a8efbf90be10678f87d07c795994a63faefd29f02206509209d474acacd78ac8c217dbebd7e132f3b1dae92dcb0e3cb931e589602db014c69522102b81e1f104cfe73bdaeff62181c691cc34ea4360053891ddc42d3b8992c8fc1ca21031ea604b64c7e36131966c9b6e959a12a2a85799a4cff37601ceda61f267e3b142102a3d7a35c6bc98f48ba8037ce22129efb9c497ca70c5362ece181d9dfb31819d953aeffffffff01383204000000000017a914a5dd1e12f6be37452b2488620cbbb16931cdbbfe8700000000

Ein kurzer Check der von zwei Teilnehmern signierten Transaktion an den Gewinner zeigt:

Input
Code: (bitcoind)
decoderawtransaction 010000000359b846d82682ed291f111be62672682fb2cdb3abdcd2e7d16fdf5a7ad7defdf302000000fdfe0000483045022100db7111070928b3e2133ce8e892ae0a4bd4f60a09909922a666b63aa2ceecc687022003de0e357abdb54f31b959921cd750d1f20a71e66e4bc6d23d2aed273e3f6c5e01483045022100f1e18083a370bb4267e41d01fa791af4f2d1ded91af51490301fe69d8ec7c2ac02204a375b1aa9d4a1573ffbe8a3b53c4c5f3d3c353304952881a3a545be7ecc229f014c69522102b81e1f104cfe73bdaeff62181c691cc34ea4360053891ddc42d3b8992c8fc1ca21031ea604b64c7e36131966c9b6e959a12a2a85799a4cff37601ceda61f267e3b142102a3d7a35c6bc98f48ba8037ce22129efb9c497ca70c5362ece181d9dfb31819d953aeffffffff59b846d82682ed291f111be62672682fb2cdb3abdcd2e7d16fdf5a7ad7defdf300000000fdfd0000483045022100c0b8087f88d01fddfc16ca725cdc94e3397a6aabc82048376f7422efd86d11f502200b328883bd85d8bf014da31c71a447620702894cdb424a30ada27d555d9a06c10147304402203bf222cb3a662f99aed033696e79361c6a776991d1722dc730aa15fd183f38b2022005d821a34759606fcb689b7d8509ebaedd33d479a4cc899bdc7041c608e8b932014c69522102b81e1f104cfe73bdaeff62181c691cc34ea4360053891ddc42d3b8992c8fc1ca21031ea604b64c7e36131966c9b6e959a12a2a85799a4cff37601ceda61f267e3b142102a3d7a35c6bc98f48ba8037ce22129efb9c497ca70c5362ece181d9dfb31819d953aeffffffff59b846d82682ed291f111be62672682fb2cdb3abdcd2e7d16fdf5a7ad7defdf301000000fdfd000047304402205978fa53489429eba7bad690550b0b32bc24e44fb08c1d5ba365d524405ed8ef02203abb5f6b06882af826b84ca9946e9f4d30c7287059e6cedf1ba510d637741e7801483045022100dcdb492f0ffc5ee4c72bf9523a8efbf90be10678f87d07c795994a63faefd29f02206509209d474acacd78ac8c217dbebd7e132f3b1dae92dcb0e3cb931e589602db014c69522102b81e1f104cfe73bdaeff62181c691cc34ea4360053891ddc42d3b8992c8fc1ca21031ea604b64c7e36131966c9b6e959a12a2a85799a4cff37601ceda61f267e3b142102a3d7a35c6bc98f48ba8037ce22129efb9c497ca70c5362ece181d9dfb31819d953aeffffffff01383204000000000017a914a5dd1e12f6be37452b2488620cbbb16931cdbbfe8700000000
Code: (Electrum)
deserialize("010000000359b846d82682ed291f111be62672682fb2cdb3abdcd2e7d16fdf5a7ad7defdf302000000fdfe0000483045022100db7111070928b3e2133ce8e892ae0a4bd4f60a09909922a666b63aa2ceecc687022003de0e357abdb54f31b959921cd750d1f20a71e66e4bc6d23d2aed273e3f6c5e01483045022100f1e18083a370bb4267e41d01fa791af4f2d1ded91af51490301fe69d8ec7c2ac02204a375b1aa9d4a1573ffbe8a3b53c4c5f3d3c353304952881a3a545be7ecc229f014c69522102b81e1f104cfe73bdaeff62181c691cc34ea4360053891ddc42d3b8992c8fc1ca21031ea604b64c7e36131966c9b6e959a12a2a85799a4cff37601ceda61f267e3b142102a3d7a35c6bc98f48ba8037ce22129efb9c497ca70c5362ece181d9dfb31819d953aeffffffff59b846d82682ed291f111be62672682fb2cdb3abdcd2e7d16fdf5a7ad7defdf300000000fdfd0000483045022100c0b8087f88d01fddfc16ca725cdc94e3397a6aabc82048376f7422efd86d11f502200b328883bd85d8bf014da31c71a447620702894cdb424a30ada27d555d9a06c10147304402203bf222cb3a662f99aed033696e79361c6a776991d1722dc730aa15fd183f38b2022005d821a34759606fcb689b7d8509ebaedd33d479a4cc899bdc7041c608e8b932014c69522102b81e1f104cfe73bdaeff62181c691cc34ea4360053891ddc42d3b8992c8fc1ca21031ea604b64c7e36131966c9b6e959a12a2a85799a4cff37601ceda61f267e3b142102a3d7a35c6bc98f48ba8037ce22129efb9c497ca70c5362ece181d9dfb31819d953aeffffffff59b846d82682ed291f111be62672682fb2cdb3abdcd2e7d16fdf5a7ad7defdf301000000fdfd000047304402205978fa53489429eba7bad690550b0b32bc24e44fb08c1d5ba365d524405ed8ef02203abb5f6b06882af826b84ca9946e9f4d30c7287059e6cedf1ba510d637741e7801483045022100dcdb492f0ffc5ee4c72bf9523a8efbf90be10678f87d07c795994a63faefd29f02206509209d474acacd78ac8c217dbebd7e132f3b1dae92dcb0e3cb931e589602db014c69522102b81e1f104cfe73bdaeff62181c691cc34ea4360053891ddc42d3b8992c8fc1ca21031ea604b64c7e36131966c9b6e959a12a2a85799a4cff37601ceda61f267e3b142102a3d7a35c6bc98f48ba8037ce22129efb9c497ca70c5362ece181d9dfb31819d953aeffffffff01383204000000000017a914a5dd1e12f6be37452b2488620cbbb16931cdbbfe8700000000")
Code: (Pybitcointools)
pybtctool deserialize 010000000359b846d82682ed291f111be62672682fb2cdb3abdcd2e7d16fdf5a7ad7defdf302000000fdfe0000483045022100db7111070928b3e2133ce8e892ae0a4bd4f60a09909922a666b63aa2ceecc687022003de0e357abdb54f31b959921cd750d1f20a71e66e4bc6d23d2aed273e3f6c5e01483045022100f1e18083a370bb4267e41d01fa791af4f2d1ded91af51490301fe69d8ec7c2ac02204a375b1aa9d4a1573ffbe8a3b53c4c5f3d3c353304952881a3a545be7ecc229f014c69522102b81e1f104cfe73bdaeff62181c691cc34ea4360053891ddc42d3b8992c8fc1ca21031ea604b64c7e36131966c9b6e959a12a2a85799a4cff37601ceda61f267e3b142102a3d7a35c6bc98f48ba8037ce22129efb9c497ca70c5362ece181d9dfb31819d953aeffffffff59b846d82682ed291f111be62672682fb2cdb3abdcd2e7d16fdf5a7ad7defdf300000000fdfd0000483045022100c0b8087f88d01fddfc16ca725cdc94e3397a6aabc82048376f7422efd86d11f502200b328883bd85d8bf014da31c71a447620702894cdb424a30ada27d555d9a06c10147304402203bf222cb3a662f99aed033696e79361c6a776991d1722dc730aa15fd183f38b2022005d821a34759606fcb689b7d8509ebaedd33d479a4cc899bdc7041c608e8b932014c69522102b81e1f104cfe73bdaeff62181c691cc34ea4360053891ddc42d3b8992c8fc1ca21031ea604b64c7e36131966c9b6e959a12a2a85799a4cff37601ceda61f267e3b142102a3d7a35c6bc98f48ba8037ce22129efb9c497ca70c5362ece181d9dfb31819d953aeffffffff59b846d82682ed291f111be62672682fb2cdb3abdcd2e7d16fdf5a7ad7defdf301000000fdfd000047304402205978fa53489429eba7bad690550b0b32bc24e44fb08c1d5ba365d524405ed8ef02203abb5f6b06882af826b84ca9946e9f4d30c7287059e6cedf1ba510d637741e7801483045022100dcdb492f0ffc5ee4c72bf9523a8efbf90be10678f87d07c795994a63faefd29f02206509209d474acacd78ac8c217dbebd7e132f3b1dae92dcb0e3cb931e589602db014c69522102b81e1f104cfe73bdaeff62181c691cc34ea4360053891ddc42d3b8992c8fc1ca21031ea604b64c7e36131966c9b6e959a12a2a85799a4cff37601ceda61f267e3b142102a3d7a35c6bc98f48ba8037ce22129efb9c497ca70c5362ece181d9dfb31819d953aeffffffff01383204000000000017a914a5dd1e12f6be37452b2488620cbbb16931cdbbfe8700000000

Output
Code: (Dekodierte Transaktion)
{
  "txid": "c88ee8da1de3ba70a5b131e116fd5f8090b13780e7341b8c764ed690de2ee58d",
  "hash": "c88ee8da1de3ba70a5b131e116fd5f8090b13780e7341b8c764ed690de2ee58d",
  "version": 1,
  "size": 931,
  "vsize": 931,
  "locktime": 0,
  "vin": [
    {
      "txid": "f3fdded77a5adf6fd1e7d2dcabb3cdb22f687226e61b111f29ed8226d846b859",
      "vout": 2,
      "scriptSig": {
        "asm": "0 3045022100db7111070928b3e2133ce8e892ae0a4bd4f60a09909922a666b63aa2ceecc687022003de0e357abdb54f31b959921cd750d1f20a71e66e4bc6d23d2aed273e3f6c5e[ALL] 3045022100f1e18083a370bb4267e41d01fa791af4f2d1ded91af51490301fe69d8ec7c2ac02204a375b1aa9d4a1573ffbe8a3b53c4c5f3d3c353304952881a3a545be7ecc229f[ALL] 522102b81e1f104cfe73bdaeff62181c691cc34ea4360053891ddc42d3b8992c8fc1ca21031ea604b64c7e36131966c9b6e959a12a2a85799a4cff37601ceda61f267e3b142102a3d7a35c6bc98f48ba8037ce22129efb9c497ca70c5362ece181d9dfb31819d953ae",
        "hex": "00483045022100db7111070928b3e2133ce8e892ae0a4bd4f60a09909922a666b63aa2ceecc687022003de0e357abdb54f31b959921cd750d1f20a71e66e4bc6d23d2aed273e3f6c5e01483045022100f1e18083a370bb4267e41d01fa791af4f2d1ded91af51490301fe69d8ec7c2ac02204a375b1aa9d4a1573ffbe8a3b53c4c5f3d3c353304952881a3a545be7ecc229f014c69522102b81e1f104cfe73bdaeff62181c691cc34ea4360053891ddc42d3b8992c8fc1ca21031ea604b64c7e36131966c9b6e959a12a2a85799a4cff37601ceda61f267e3b142102a3d7a35c6bc98f48ba8037ce22129efb9c497ca70c5362ece181d9dfb31819d953ae"
      },
      "sequence": 4294967295
    },
    {
      "txid": "f3fdded77a5adf6fd1e7d2dcabb3cdb22f687226e61b111f29ed8226d846b859",
      "vout": 0,
      "scriptSig": {
        "asm": "0 3045022100c0b8087f88d01fddfc16ca725cdc94e3397a6aabc82048376f7422efd86d11f502200b328883bd85d8bf014da31c71a447620702894cdb424a30ada27d555d9a06c1[ALL] 304402203bf222cb3a662f99aed033696e79361c6a776991d1722dc730aa15fd183f38b2022005d821a34759606fcb689b7d8509ebaedd33d479a4cc899bdc7041c608e8b932[ALL] 522102b81e1f104cfe73bdaeff62181c691cc34ea4360053891ddc42d3b8992c8fc1ca21031ea604b64c7e36131966c9b6e959a12a2a85799a4cff37601ceda61f267e3b142102a3d7a35c6bc98f48ba8037ce22129efb9c497ca70c5362ece181d9dfb31819d953ae",
        "hex": "00483045022100c0b8087f88d01fddfc16ca725cdc94e3397a6aabc82048376f7422efd86d11f502200b328883bd85d8bf014da31c71a447620702894cdb424a30ada27d555d9a06c10147304402203bf222cb3a662f99aed033696e79361c6a776991d1722dc730aa15fd183f38b2022005d821a34759606fcb689b7d8509ebaedd33d479a4cc899bdc7041c608e8b932014c69522102b81e1f104cfe73bdaeff62181c691cc34ea4360053891ddc42d3b8992c8fc1ca21031ea604b64c7e36131966c9b6e959a12a2a85799a4cff37601ceda61f267e3b142102a3d7a35c6bc98f48ba8037ce22129efb9c497ca70c5362ece181d9dfb31819d953ae"
      },
      "sequence": 4294967295
    },
    {
      "txid": "f3fdded77a5adf6fd1e7d2dcabb3cdb22f687226e61b111f29ed8226d846b859",
      "vout": 1,
      "scriptSig": {
        "asm": "0 304402205978fa53489429eba7bad690550b0b32bc24e44fb08c1d5ba365d524405ed8ef02203abb5f6b06882af826b84ca9946e9f4d30c7287059e6cedf1ba510d637741e78[ALL] 3045022100dcdb492f0ffc5ee4c72bf9523a8efbf90be10678f87d07c795994a63faefd29f02206509209d474acacd78ac8c217dbebd7e132f3b1dae92dcb0e3cb931e589602db[ALL] 522102b81e1f104cfe73bdaeff62181c691cc34ea4360053891ddc42d3b8992c8fc1ca21031ea604b64c7e36131966c9b6e959a12a2a85799a4cff37601ceda61f267e3b142102a3d7a35c6bc98f48ba8037ce22129efb9c497ca70c5362ece181d9dfb31819d953ae",
        "hex": "0047304402205978fa53489429eba7bad690550b0b32bc24e44fb08c1d5ba365d524405ed8ef02203abb5f6b06882af826b84ca9946e9f4d30c7287059e6cedf1ba510d637741e7801483045022100dcdb492f0ffc5ee4c72bf9523a8efbf90be10678f87d07c795994a63faefd29f02206509209d474acacd78ac8c217dbebd7e132f3b1dae92dcb0e3cb931e589602db014c69522102b81e1f104cfe73bdaeff62181c691cc34ea4360053891ddc42d3b8992c8fc1ca21031ea604b64c7e36131966c9b6e959a12a2a85799a4cff37601ceda61f267e3b142102a3d7a35c6bc98f48ba8037ce22129efb9c497ca70c5362ece181d9dfb31819d953ae"
      },
      "sequence": 4294967295
    }
  ],
  "vout": [
    {
      "value": 0.00275000,
      "n": 0,
      "scriptPubKey": {
        "asm": "OP_HASH160 a5dd1e12f6be37452b2488620cbbb16931cdbbfe OP_EQUAL",
        "hex": "a914a5dd1e12f6be37452b2488620cbbb16931cdbbfe87",
        "reqSigs": 1,
        "type": "scripthash",
        "addresses": [
          "3Gp2Jhyy5N5dTqPkXjhSS8vmKttSysNnMK"
        ]
      }
    }
  ]
}

Zur Prüfung kann ebenfalls auf die Validierungsfunktion von Coinb.in zurückgegriffen werden.

Schritt 6: Broadcast der Transaktion an den Gewinner
Abschließend wird die Transaktion im Netzwerk verteilt:

Code: (bitcoind)
sendrawtransaction 010000000359b846d82682ed291f111be62672682fb2cdb3abdcd2e7d16fdf5a7ad7defdf302000000fdfe0000483045022100db7111070928b3e2133ce8e892ae0a4bd4f60a09909922a666b63aa2ceecc687022003de0e357abdb54f31b959921cd750d1f20a71e66e4bc6d23d2aed273e3f6c5e01483045022100f1e18083a370bb4267e41d01fa791af4f2d1ded91af51490301fe69d8ec7c2ac02204a375b1aa9d4a1573ffbe8a3b53c4c5f3d3c353304952881a3a545be7ecc229f014c69522102b81e1f104cfe73bdaeff62181c691cc34ea4360053891ddc42d3b8992c8fc1ca21031ea604b64c7e36131966c9b6e959a12a2a85799a4cff37601ceda61f267e3b142102a3d7a35c6bc98f48ba8037ce22129efb9c497ca70c5362ece181d9dfb31819d953aeffffffff59b846d82682ed291f111be62672682fb2cdb3abdcd2e7d16fdf5a7ad7defdf300000000fdfd0000483045022100c0b8087f88d01fddfc16ca725cdc94e3397a6aabc82048376f7422efd86d11f502200b328883bd85d8bf014da31c71a447620702894cdb424a30ada27d555d9a06c10147304402203bf222cb3a662f99aed033696e79361c6a776991d1722dc730aa15fd183f38b2022005d821a34759606fcb689b7d8509ebaedd33d479a4cc899bdc7041c608e8b932014c69522102b81e1f104cfe73bdaeff62181c691cc34ea4360053891ddc42d3b8992c8fc1ca21031ea604b64c7e36131966c9b6e959a12a2a85799a4cff37601ceda61f267e3b142102a3d7a35c6bc98f48ba8037ce22129efb9c497ca70c5362ece181d9dfb31819d953aeffffffff59b846d82682ed291f111be62672682fb2cdb3abdcd2e7d16fdf5a7ad7defdf301000000fdfd000047304402205978fa53489429eba7bad690550b0b32bc24e44fb08c1d5ba365d524405ed8ef02203abb5f6b06882af826b84ca9946e9f4d30c7287059e6cedf1ba510d637741e7801483045022100dcdb492f0ffc5ee4c72bf9523a8efbf90be10678f87d07c795994a63faefd29f02206509209d474acacd78ac8c217dbebd7e132f3b1dae92dcb0e3cb931e589602db014c69522102b81e1f104cfe73bdaeff62181c691cc34ea4360053891ddc42d3b8992c8fc1ca21031ea604b64c7e36131966c9b6e959a12a2a85799a4cff37601ceda61f267e3b142102a3d7a35c6bc98f48ba8037ce22129efb9c497ca70c5362ece181d9dfb31819d953aeffffffff01383204000000000017a914a5dd1e12f6be37452b2488620cbbb16931cdbbfe8700000000
Code: (Electrum)
broadcast("010000000359b846d82682ed291f111be62672682fb2cdb3abdcd2e7d16fdf5a7ad7defdf302000000fdfe0000483045022100db7111070928b3e2133ce8e892ae0a4bd4f60a09909922a666b63aa2ceecc687022003de0e357abdb54f31b959921cd750d1f20a71e66e4bc6d23d2aed273e3f6c5e01483045022100f1e18083a370bb4267e41d01fa791af4f2d1ded91af51490301fe69d8ec7c2ac02204a375b1aa9d4a1573ffbe8a3b53c4c5f3d3c353304952881a3a545be7ecc229f014c69522102b81e1f104cfe73bdaeff62181c691cc34ea4360053891ddc42d3b8992c8fc1ca21031ea604b64c7e36131966c9b6e959a12a2a85799a4cff37601ceda61f267e3b142102a3d7a35c6bc98f48ba8037ce22129efb9c497ca70c5362ece181d9dfb31819d953aeffffffff59b846d82682ed291f111be62672682fb2cdb3abdcd2e7d16fdf5a7ad7defdf300000000fdfd0000483045022100c0b8087f88d01fddfc16ca725cdc94e3397a6aabc82048376f7422efd86d11f502200b328883bd85d8bf014da31c71a447620702894cdb424a30ada27d555d9a06c10147304402203bf222cb3a662f99aed033696e79361c6a776991d1722dc730aa15fd183f38b2022005d821a34759606fcb689b7d8509ebaedd33d479a4cc899bdc7041c608e8b932014c69522102b81e1f104cfe73bdaeff62181c691cc34ea4360053891ddc42d3b8992c8fc1ca21031ea604b64c7e36131966c9b6e959a12a2a85799a4cff37601ceda61f267e3b142102a3d7a35c6bc98f48ba8037ce22129efb9c497ca70c5362ece181d9dfb31819d953aeffffffff59b846d82682ed291f111be62672682fb2cdb3abdcd2e7d16fdf5a7ad7defdf301000000fdfd000047304402205978fa53489429eba7bad690550b0b32bc24e44fb08c1d5ba365d524405ed8ef02203abb5f6b06882af826b84ca9946e9f4d30c7287059e6cedf1ba510d637741e7801483045022100dcdb492f0ffc5ee4c72bf9523a8efbf90be10678f87d07c795994a63faefd29f02206509209d474acacd78ac8c217dbebd7e132f3b1dae92dcb0e3cb931e589602db014c69522102b81e1f104cfe73bdaeff62181c691cc34ea4360053891ddc42d3b8992c8fc1ca21031ea604b64c7e36131966c9b6e959a12a2a85799a4cff37601ceda61f267e3b142102a3d7a35c6bc98f48ba8037ce22129efb9c497ca70c5362ece181d9dfb31819d953aeffffffff01383204000000000017a914a5dd1e12f6be37452b2488620cbbb16931cdbbfe8700000000")
Code: (Pybitcointools)
pybtctool pushtx 010000000359b846d82682ed291f111be62672682fb2cdb3abdcd2e7d16fdf5a7ad7defdf302000000fdfe0000483045022100db7111070928b3e2133ce8e892ae0a4bd4f60a09909922a666b63aa2ceecc687022003de0e357abdb54f31b959921cd750d1f20a71e66e4bc6d23d2aed273e3f6c5e01483045022100f1e18083a370bb4267e41d01fa791af4f2d1ded91af51490301fe69d8ec7c2ac02204a375b1aa9d4a1573ffbe8a3b53c4c5f3d3c353304952881a3a545be7ecc229f014c69522102b81e1f104cfe73bdaeff62181c691cc34ea4360053891ddc42d3b8992c8fc1ca21031ea604b64c7e36131966c9b6e959a12a2a85799a4cff37601ceda61f267e3b142102a3d7a35c6bc98f48ba8037ce22129efb9c497ca70c5362ece181d9dfb31819d953aeffffffff59b846d82682ed291f111be62672682fb2cdb3abdcd2e7d16fdf5a7ad7defdf300000000fdfd0000483045022100c0b8087f88d01fddfc16ca725cdc94e3397a6aabc82048376f7422efd86d11f502200b328883bd85d8bf014da31c71a447620702894cdb424a30ada27d555d9a06c10147304402203bf222cb3a662f99aed033696e79361c6a776991d1722dc730aa15fd183f38b2022005d821a34759606fcb689b7d8509ebaedd33d479a4cc899bdc7041c608e8b932014c69522102b81e1f104cfe73bdaeff62181c691cc34ea4360053891ddc42d3b8992c8fc1ca21031ea604b64c7e36131966c9b6e959a12a2a85799a4cff37601ceda61f267e3b142102a3d7a35c6bc98f48ba8037ce22129efb9c497ca70c5362ece181d9dfb31819d953aeffffffff59b846d82682ed291f111be62672682fb2cdb3abdcd2e7d16fdf5a7ad7defdf301000000fdfd000047304402205978fa53489429eba7bad690550b0b32bc24e44fb08c1d5ba365d524405ed8ef02203abb5f6b06882af826b84ca9946e9f4d30c7287059e6cedf1ba510d637741e7801483045022100dcdb492f0ffc5ee4c72bf9523a8efbf90be10678f87d07c795994a63faefd29f02206509209d474acacd78ac8c217dbebd7e132f3b1dae92dcb0e3cb931e589602db014c69522102b81e1f104cfe73bdaeff62181c691cc34ea4360053891ddc42d3b8992c8fc1ca21031ea604b64c7e36131966c9b6e959a12a2a85799a4cff37601ceda61f267e3b142102a3d7a35c6bc98f48ba8037ce22129efb9c497ca70c5362ece181d9dfb31819d953aeffffffff01383204000000000017a914a5dd1e12f6be37452b2488620cbbb16931cdbbfe8700000000

Alternativ kann das Broadcast-Formular von coinb.in verwendet werden. Die Wette ist abgeschlossen, sobald die Transaktion in einen Block aufgenommen und bestätigt wurde:

  c88ee8da1de3ba70a5b131e116fd5f8090b13780e7341b8c764ed690de2ee58d

Umsetzung mit drei Teilnehmern und Schiedsrichter
Das zuvor beschriebene Vorgehen sichert ab, dass die Durchführung der mit der Wette verbundenen Zahlungen nicht in der jeweiligen Hand der einzeln Beteiligten liegt, sondern nur zwei der drei beteiligten Personen die Zahlung gemeinsam autorisieren können. Was aber nun, wenn die beiden Verlierer sich gegen den Gewinner zusammentun - und sich einfach dessen Einsatz untereinander aufteilen? Hier kommt die Rolle eines unabhängigen Schiedsrichters ins Spiel. Der Schiedsrichter ist selbst nicht an der Wette beteiligt, sondern wacht unabhängig über die korrekte Abwicklung derselben.

Hierzu generiert man eine Multi-Signatur-Adresse, die nicht mit zwei der drei vorhandenen Private-Keys signiert werden muss, sondern mit drei von fünf. Die drei Wett-Teilnehmer stellen dazu wie oben beschrieben ihre Public-Keys bereit, der Schiedsrichter stellt zusätzlich seinen Public-Key. Unter zweifacher Verwendung des Public-Keys des Schiedsrichters wird anschließend das Redeem-Script samt Multi-Signature-Adresse (hier 3 von 5) berechnet. Sollten sich die Verlierer in dieser Konstellation unkooperativ verhalten, dann reicht der Private-Key des Gewinners zusammen mit dem Private-Key des Schiedsrichters, um die Transaktion zu autorisieren.

Die nachfolgende Beschreibung basiert auf der zuvor ausgeführten mit drei Teilnehmern ohne Schiedsrichter. Es werden nur noch die jeweiligen Outputs angegeben, auf eine nochmalige Beschreibung der einzelnen Schritte verzichtet.

Schritt 1: Public-Keys bereitstellen
Zusätzlich zu den drei Public-Keys der Teilnehmer stellt der Schiedsrichter einen Public-Key:

Code: (Public-Key)
0369f10478917b0f3ba61fa35c6b3246cb9890ce82d35d2cd2fe78516f904e9f7e

Schritt 2: Reedem-Script/Multi-Signature-Adresse generieren
Aus den Public-Keys der Teilnehmer und des Schiedsrichters sowie den Signierungs-Bedingungen (hier 3 von 5) wird das Reedem-Script und die Multi-Signature-Adresse berechnet:

Code: (Adresse)
3K3aUH4HwWshjDZLe9Zi17JyygorWSJUqH
Code: (Redeem-Script)
532102b81e1f104cfe73bdaeff62181c691cc34ea4360053891ddc42d3b8992c8fc1ca21031ea604b64c7e36131966c9b6e959a12a2a85799a4cff37601ceda61f267e3b142102a3d7a35c6bc98f48ba8037ce22129efb9c497ca70c5362ece181d9dfb31819d9210369f10478917b0f3ba61fa35c6b3246cb9890ce82d35d2cd2fe78516f904e9f7e210369f10478917b0f3ba61fa35c6b3246cb9890ce82d35d2cd2fe78516f904e9f7e55ae

Code: (Dekodiertes Script)
{
  "asm": "3 02b81e1f104cfe73bdaeff62181c691cc34ea4360053891ddc42d3b8992c8fc1ca 031ea604b64c7e36131966c9b6e959a12a2a85799a4cff37601ceda61f267e3b14 02a3d7a35c6bc98f48ba8037ce22129efb9c497ca70c5362ece181d9dfb31819d9 0369f10478917b0f3ba61fa35c6b3246cb9890ce82d35d2cd2fe78516f904e9f7e 0369f10478917b0f3ba61fa35c6b3246cb9890ce82d35d2cd2fe78516f904e9f7e 5 OP_CHECKMULTISIG",
  "reqSigs": 3,
  "type": "multisig",
  "addresses": [
    "15p1QoP2VwHUU2PaFtgEAGuU7Y3p9P59Zd",
    "14igQFDVN86HQ2tdo5QTqjTVUhz7Cjb2jV",
    "1KtCSrphdSHVv9yumCGgecju6mBb2isMTR",
    "1EAFJKGB4LuSuHq5ZXrYEKMDdwZcoBtVLN",
    "1EAFJKGB4LuSuHq5ZXrYEKMDdwZcoBtVLN"
  ],
  "p2sh": "3K3aUH4HwWshjDZLe9Zi17JyygorWSJUqH"
}

Schritt 3: Einzahlung der Wetteinsätze
Jeder Teilnehmer überträgt den vereinbarten Betrag auf die in Schritt 2 generierte Multi-Signature-Adresse (drei Mal 0.001 BTC):

  607e5189ac78a411d78d6599b6d79f369e93e7fd6a8b134fa6eb57bc3043c10e

  caf80f64ba96c58db00c377288fd674baa4515e67934bd32230def956b6b75fd

  65d64c1df21b8e4be545310dab18c9c3a0c6cdfa0c756deb7a2b40f3522cdedc

Schritt 4: Erstellung der Transaktion an den Gewinner
Nach Feststellung des Wettergebnisses wird eine Transaktion an die Zieladresse des Gewinners erstellt. Zur Veranschaulichung gehen 0.00275 BTC an den Gewinner, 0.00025 BTC werden als Transaktionsgebühr verwendet:

Code: (Unsignierte Transaktion)
02000000030ec14330bc57eba64f138b6afde7939e369fd7b699658dd711a478ac89517e600100000000fffffffffd756b6b95ef0d2332bd3479e61545aa4b67fd8872370cb08dc596ba640ff8ca0000000000ffffffffdcde2c52f3402b7aeb6d750cfacdc6a0c3c918ab0d3145e54b8e1bf21d4cd6650000000000ffffffff01383204000000000017a914cf9b35930cb2d32980e1c293bf2a9e0e588113878700000000

Die Verlierer wollen sich damit aber nicht abfinden und erstellen schlicht eine andere Transaktion, mit der sie sich den Wetteinsatz untereinander aufteilen und auf ihre Signieradressen überweisen wollen (und dabei noch die Transaktionsgebühren vergessen, da jeder 0.0015 BTC bekommen soll):

Code: (Unsignierte Transaktion)
0100000003fd756b6b95ef0d2332bd3479e61545aa4b67fd8872370cb08dc596ba640ff8ca00000000ad532102b81e1f104cfe73bdaeff62181c691cc34ea4360053891ddc42d3b8992c8fc1ca21031ea604b64c7e36131966c9b6e959a12a2a85799a4cff37601ceda61f267e3b142102a3d7a35c6bc98f48ba8037ce22129efb9c497ca70c5362ece181d9dfb31819d9210369f10478917b0f3ba61fa35c6b3246cb9890ce82d35d2cd2fe78516f904e9f7e210369f10478917b0f3ba61fa35c6b3246cb9890ce82d35d2cd2fe78516f904e9f7e55aeffffffff0ec14330bc57eba64f138b6afde7939e369fd7b699658dd711a478ac89517e6001000000ad532102b81e1f104cfe73bdaeff62181c691cc34ea4360053891ddc42d3b8992c8fc1ca21031ea604b64c7e36131966c9b6e959a12a2a85799a4cff37601ceda61f267e3b142102a3d7a35c6bc98f48ba8037ce22129efb9c497ca70c5362ece181d9dfb31819d9210369f10478917b0f3ba61fa35c6b3246cb9890ce82d35d2cd2fe78516f904e9f7e210369f10478917b0f3ba61fa35c6b3246cb9890ce82d35d2cd2fe78516f904e9f7e55aeffffffffdcde2c52f3402b7aeb6d750cfacdc6a0c3c918ab0d3145e54b8e1bf21d4cd66500000000ad532102b81e1f104cfe73bdaeff62181c691cc34ea4360053891ddc42d3b8992c8fc1ca21031ea604b64c7e36131966c9b6e959a12a2a85799a4cff37601ceda61f267e3b142102a3d7a35c6bc98f48ba8037ce22129efb9c497ca70c5362ece181d9dfb31819d9210369f10478917b0f3ba61fa35c6b3246cb9890ce82d35d2cd2fe78516f904e9f7e210369f10478917b0f3ba61fa35c6b3246cb9890ce82d35d2cd2fe78516f904e9f7e55aeffffffff02f0490200000000001976a91428ca5267ddb6438533a5b913249c0316ecf9b3f188acf0490200000000001976a914cf21085d0680987de4718c63e1d27689e7fe82f588ac00000000

Schritt 5: Signierung der Transaktion an den Gewinner
Alle Teilnehmer signieren ihre jeweiligen Transaktionen. Der Gewinner mit einer Signatur, die beiden Verlieren mit ihren beiden.

Code: (Signierte Transaktion des Gewinners)
02000000030ec14330bc57eba64f138b6afde7939e369fd7b699658dd711a478ac89517e6001000000f900483045022100f1f75d833f9cc91d45376685f5756c0d319b6362243c385dd6e0769f2cea4cb50220418491fa1bf90d02abca0447681b26bac185d4a2a64d8a2f6f7a16fe39dcf930014cad532102b81e1f104cfe73bdaeff62181c691cc34ea4360053891ddc42d3b8992c8fc1ca21031ea604b64c7e36131966c9b6e959a12a2a85799a4cff37601ceda61f267e3b142102a3d7a35c6bc98f48ba8037ce22129efb9c497ca70c5362ece181d9dfb31819d9210369f10478917b0f3ba61fa35c6b3246cb9890ce82d35d2cd2fe78516f904e9f7e210369f10478917b0f3ba61fa35c6b3246cb9890ce82d35d2cd2fe78516f904e9f7e55aefffffffffd756b6b95ef0d2332bd3479e61545aa4b67fd8872370cb08dc596ba640ff8ca00000000f800473044022062abe0047b20726ced98050187ed37d195586da74c4f5a4e7f70aa456cc65e98022065d40db17deef1fd9e7a6fb6a3b766507e8a373cc7fc3b203550cc15f773b8d9014cad532102b81e1f104cfe73bdaeff62181c691cc34ea4360053891ddc42d3b8992c8fc1ca21031ea604b64c7e36131966c9b6e959a12a2a85799a4cff37601ceda61f267e3b142102a3d7a35c6bc98f48ba8037ce22129efb9c497ca70c5362ece181d9dfb31819d9210369f10478917b0f3ba61fa35c6b3246cb9890ce82d35d2cd2fe78516f904e9f7e210369f10478917b0f3ba61fa35c6b3246cb9890ce82d35d2cd2fe78516f904e9f7e55aeffffffffdcde2c52f3402b7aeb6d750cfacdc6a0c3c918ab0d3145e54b8e1bf21d4cd66500000000f900483045022100d51a2dbd996e69b452ee8fc3b987aec952c9d9bca6d6bd7ab4eef3083cd651dc0220209db65fec66ec7b74b66a7871b7f6b815524b8349f2efee90d622d1cfc558d7014cad532102b81e1f104cfe73bdaeff62181c691cc34ea4360053891ddc42d3b8992c8fc1ca21031ea604b64c7e36131966c9b6e959a12a2a85799a4cff37601ceda61f267e3b142102a3d7a35c6bc98f48ba8037ce22129efb9c497ca70c5362ece181d9dfb31819d9210369f10478917b0f3ba61fa35c6b3246cb9890ce82d35d2cd2fe78516f904e9f7e210369f10478917b0f3ba61fa35c6b3246cb9890ce82d35d2cd2fe78516f904e9f7e55aeffffffff01383204000000000017a914cf9b35930cb2d32980e1c293bf2a9e0e588113878700000000

Code: (Signierte Transaktion der Verlierer)
0100000003fd756b6b95ef0d2332bd3479e61545aa4b67fd8872370cb08dc596ba640ff8ca00000000fd420100483045022100c34c778e38a2da1a8d8e1440c265b788568f605301cfd92a34b8969cf201240702207f307a932ec3cc236d4f336d782277258e74ba707a8a0701bff3a312c356bfc101483045022100d9798001c7c613b4c773b1c3cdb4264f083c873f175f4a7866752340bb4ccdbc0220660f42e36ef7df7167ecf7662c6c313a57920dbf4bce3fe81efeae76752ec3ec014cad532102b81e1f104cfe73bdaeff62181c691cc34ea4360053891ddc42d3b8992c8fc1ca21031ea604b64c7e36131966c9b6e959a12a2a85799a4cff37601ceda61f267e3b142102a3d7a35c6bc98f48ba8037ce22129efb9c497ca70c5362ece181d9dfb31819d9210369f10478917b0f3ba61fa35c6b3246cb9890ce82d35d2cd2fe78516f904e9f7e210369f10478917b0f3ba61fa35c6b3246cb9890ce82d35d2cd2fe78516f904e9f7e55aeffffffff0ec14330bc57eba64f138b6afde7939e369fd7b699658dd711a478ac89517e6001000000fd41010047304402202eaca7cb06fe73b6dfa79efa82d59b47e9c399a023ffee4a004eaae04d481331022042e32448cf8db2abd0713dcbc0ab6bfd5ad320478dd1cbd77dba9a5f9540154a01483045022100f67df084933ee2cd3fa440fb4e7d8411f3d9f771e353dbaf28c8027bcdee33b1022002adef25c71c925088ddbfd58287edd258add61b7c8ff931b07327cdf775e325014cad532102b81e1f104cfe73bdaeff62181c691cc34ea4360053891ddc42d3b8992c8fc1ca21031ea604b64c7e36131966c9b6e959a12a2a85799a4cff37601ceda61f267e3b142102a3d7a35c6bc98f48ba8037ce22129efb9c497ca70c5362ece181d9dfb31819d9210369f10478917b0f3ba61fa35c6b3246cb9890ce82d35d2cd2fe78516f904e9f7e210369f10478917b0f3ba61fa35c6b3246cb9890ce82d35d2cd2fe78516f904e9f7e55aeffffffffdcde2c52f3402b7aeb6d750cfacdc6a0c3c918ab0d3145e54b8e1bf21d4cd66500000000fd420100483045022100fdbcfcdea80f92713b5741970cfa8d62e46cf2304d2b44148112e5768f3bf96802200d68f81bd4b3189407b2a554263c34b3d50ec16152bd4518b2248937ed4001e701483045022100e121506523dc48db1cdd1ece2f47e33d088031c46ae4843364a1b7b28a705d3a02204fac2aef36b37508fdf8d591f9c516d476fc0cf74b1cb91de525402ea896d4ee014cad532102b81e1f104cfe73bdaeff62181c691cc34ea4360053891ddc42d3b8992c8fc1ca21031ea604b64c7e36131966c9b6e959a12a2a85799a4cff37601ceda61f267e3b142102a3d7a35c6bc98f48ba8037ce22129efb9c497ca70c5362ece181d9dfb31819d9210369f10478917b0f3ba61fa35c6b3246cb9890ce82d35d2cd2fe78516f904e9f7e210369f10478917b0f3ba61fa35c6b3246cb9890ce82d35d2cd2fe78516f904e9f7e55aeffffffff02f0490200000000001976a91428ca5267ddb6438533a5b913249c0316ecf9b3f188acf0490200000000001976a914cf21085d0680987de4718c63e1d27689e7fe82f588ac00000000

Beide Transaktionen sind ungültig, da sie die Script-Bedingungen nicht erfüllen (keine enthält drei notwendige Signaturen). Versucht man sie im Netzwerk zu verteilen, werden sie von den Knoten abgelehnt. Der Schiedsrichter signiert deshalb die Transaktion des Gewinners:

Code: (Signierte Transaktion durch den Schiedsrichter)
02000000030ec14330bc57eba64f138b6afde7939e369fd7b699658dd711a478ac89517e6001000000fd890100483045022100f1f75d833f9cc91d45376685f5756c0d319b6362243c385dd6e0769f2cea4cb50220418491fa1bf90d02abca0447681b26bac185d4a2a64d8a2f6f7a16fe39dcf93001473044022065a494a0f2915ca84bdbfce4a3dda32478b947e5e2d40b1fe7ec91f72bcf82dd02203d11cc71693b393d2f95e76da61671f8dad03180b5c8b750e7dfc96a2657af8d01473044022065a494a0f2915ca84bdbfce4a3dda32478b947e5e2d40b1fe7ec91f72bcf82dd02203d11cc71693b393d2f95e76da61671f8dad03180b5c8b750e7dfc96a2657af8d014cad532102b81e1f104cfe73bdaeff62181c691cc34ea4360053891ddc42d3b8992c8fc1ca21031ea604b64c7e36131966c9b6e959a12a2a85799a4cff37601ceda61f267e3b142102a3d7a35c6bc98f48ba8037ce22129efb9c497ca70c5362ece181d9dfb31819d9210369f10478917b0f3ba61fa35c6b3246cb9890ce82d35d2cd2fe78516f904e9f7e210369f10478917b0f3ba61fa35c6b3246cb9890ce82d35d2cd2fe78516f904e9f7e55aefffffffffd756b6b95ef0d2332bd3479e61545aa4b67fd8872370cb08dc596ba640ff8ca00000000fd880100473044022062abe0047b20726ced98050187ed37d195586da74c4f5a4e7f70aa456cc65e98022065d40db17deef1fd9e7a6fb6a3b766507e8a373cc7fc3b203550cc15f773b8d90147304402202c18c10c8816e9d1974049cf07a4ced41828bbf692411d6f0e9eb96b1af5a69d0220597d7577f867065f58157b195aed8987bc102d313a0be273166ea2a7e00f258c0147304402202c18c10c8816e9d1974049cf07a4ced41828bbf692411d6f0e9eb96b1af5a69d0220597d7577f867065f58157b195aed8987bc102d313a0be273166ea2a7e00f258c014cad532102b81e1f104cfe73bdaeff62181c691cc34ea4360053891ddc42d3b8992c8fc1ca21031ea604b64c7e36131966c9b6e959a12a2a85799a4cff37601ceda61f267e3b142102a3d7a35c6bc98f48ba8037ce22129efb9c497ca70c5362ece181d9dfb31819d9210369f10478917b0f3ba61fa35c6b3246cb9890ce82d35d2cd2fe78516f904e9f7e210369f10478917b0f3ba61fa35c6b3246cb9890ce82d35d2cd2fe78516f904e9f7e55aeffffffffdcde2c52f3402b7aeb6d750cfacdc6a0c3c918ab0d3145e54b8e1bf21d4cd66500000000fd890100483045022100d51a2dbd996e69b452ee8fc3b987aec952c9d9bca6d6bd7ab4eef3083cd651dc0220209db65fec66ec7b74b66a7871b7f6b815524b8349f2efee90d622d1cfc558d70147304402204f7771c6dbde9b1197f68ca14f0bb9abafd214ce27be5ec69064a462ebe55261022061ae00f95787528936d4b3a91333b6a3bd59838e36512e95b2309674614d7ad70147304402204f7771c6dbde9b1197f68ca14f0bb9abafd214ce27be5ec69064a462ebe55261022061ae00f95787528936d4b3a91333b6a3bd59838e36512e95b2309674614d7ad7014cad532102b81e1f104cfe73bdaeff62181c691cc34ea4360053891ddc42d3b8992c8fc1ca21031ea604b64c7e36131966c9b6e959a12a2a85799a4cff37601ceda61f267e3b142102a3d7a35c6bc98f48ba8037ce22129efb9c497ca70c5362ece181d9dfb31819d9210369f10478917b0f3ba61fa35c6b3246cb9890ce82d35d2cd2fe78516f904e9f7e210369f10478917b0f3ba61fa35c6b3246cb9890ce82d35d2cd2fe78516f904e9f7e55aeffffffff01383204000000000017a914cf9b35930cb2d32980e1c293bf2a9e0e588113878700000000

Schritt 6: Broadcast der Transaktion an den Gewinner
Abschließend wird die Transaktion im Netzwerk verteilt:

  77004c571569f355474988c0bee82a178459c1b8b4d42d6d504e331358b97e80

Nützliche Links

tl;dr
1) Bedingungen vereinbaren. 2) Schiedsrichter gewinnen. 3) Keys bereitstellen. 4) Einsätze einzahlen. 5) Gewinner festlegen. 6) Kohle kassieren.
Pages:
Jump to: