Da es inzwischen auch die ersten Probleme mit Escrow (Treuhandabwicklung) gibt, habe ich mich entschlossen, ein Multisig Escrow anzubieten. Dabei ist der Kerngedanke, dass der Escrower/Treuhänder nur noch in strittigen Fällen eingreifen kann, selbst aber nicht über den Bitcoin Betrag verfügen kann wie beim herkömmlichen Escrow.
Um die Durchführung einfach zu halten, schlage ich eine 2-aus-3 Abwicklung vor. Es wird eine Treuhandadresse (Multisig Address) eingerichtet, für die es 3 Verfügungsberechtigte gibt: Der Käufer, der Verkäufer und der Escrower/Treuhänder. Überweisungen, die von dieser Adresse ausgehen, können von 2 dieser 3 Parteien gemeinsam verfügt werden. Der Käufer überweist den Kaufbetrag auf das Treuhandkonto (eine Multisigadresse). Ist z.B. der Warenaustausch oder die Dienstleistung abgewickelt, unterschreiben der Käufer und der Verkäufer eine ausgehende Transaktion womit der Verkäufer sein Geld bekommt. Im Betrugsfall kann entweder der Treuhänder/Escrower zusammen mit dem Käufer oder aber mit dem Verkäufer das Geld freigeben. Keine der drei Parteien kann alleine über die Summe auf dem Treuhandkonto verfügen.
Für die Abwicklung stehen inzwischen ein paar einfache Werkzeuge zur Verfügung. Diese sind Open Source und nutzen nur soweit es notwendig ist den Online-Zugang. Ausserdem lassen sich die Werkzeuge auch durch andere Ersetzen.
Vorgeschlagene Werkzeuge:
Vorgehensweise:
- Jede Partei wählt oder erzeugt einen privaten Schlüssel. Erzeugung mit a) New -> New Address oder b) Einzelnes Wallet -> Neues Wallet Erstellen. Vorhandene Schlüssel sollten im Wallet Import Format (WIF) vorliegen. Diese Schlüssel haben die Form 5... / L... / K... (z.B. 5HqoZTAUW2DBLm5FM4BcjpyB9xJ45fpx7RmXcV1E4daa9bnEvDT <- diesen hier nicht benutzen! - L.../K... sind komprimierte Schlüssel). Diese Schlüssel/Adressen müssen zum unterschreiben genutzt werden es. Sie werden üblicherweise nicht als Empfangsadresse für eine Überweisung genutzt.
- Daraus kann nun der unkomprimierte öffentliche Anteil gewonnen werden. In a) wird dieser mitgeliefert. Ansonsten kann man diesen mit b) Walletdetails aus dem WIF Schlüssel errechnen lassen. Dieser öffentliche Anteil hat die Form 04... (z.B. 04A2556FC15DB1D5FA1E2FCBAFBB9E379660BA611F2F66649C77C37FDD7D1152E0247FCACEDB7C6 A96A9017613C2563B0EDCA8CE180176A45BBD8B39A86C7BD564) bzw. 02... oder 03... für komprimierte Schlüssel.
- Eine Partei sammelt nun alle 3 öffentlichen Anteile ein und erzeugt mit a) New -> MultiSig Address die MultiSig Adresse. Unter 'Enter the amount of signatures required to release the coins' wird 2 angegeben. Die erzeugte MultiSig Address 3... und das Redeem Script wird nun an die anderen Parteien weitergegeben.
- Mit a) Verify kann nun jede Partei das Redeem Script überprüfen. Wichtig ist, dass die Multisig Adresse stimmt, sich der eigene öffentliche Anteil unter den Schlüsseln befindet, genau 3 Adressen vorhanden sind und eine gültige Transaktion mit 2 Schlüsseln erstellt werden kann.
- Der Käufer überweist nun den vereinbarten Betrag mit einer Fee an die erzeugte Multisig Address. Die Fee (Vorschlag 0.0001 BTC) dient dazu, dass die Auszahlung an den Käufer nicht zu lange benötigt.
- Sobald der Betrag auf der Multisig Address eingegangen ist, kann der Verkäufer seinen Teil des Geschäfts erfüllen. Über den dort liegenden Betrag können nur noch zwei der drei Parteien gemeinam verfügen.
- Wenn das Geschäft abgewickelt ist, wird mit a) New -> Transaction die Auszahlung vorbereitet. Dazu wird das Redeem Script und eine Auszahlungsadresse benötigt.
- Die erzeugte Transaction wird nun an die notwendigen Parteien verteilt. Wenn alles sauber gelaufen ist, sind das der Käufer und der Verkäufer.
- Der erste signiert die Transaction mit a) Sign und dem Schlüssel der im ersten Schritt erzeugt oder benutzt wurde.
- Die Signed Transaction wird nun der zweiten Partei übermittelt. Diese unterschreibt sie ebenfalls mit a) Sign. Die zweite Signed Transaction enthält nun alle notwendigen Signaturen und wird mit a) Broadcast übermittelt. Sobald die Transaktion vom Bitcoin Netzwerk bestätigt wird, ist das Geschäft abgeschlossen.
Umd die Durchführung zu unterstützen biete ich meine folgende Adresse für die Escrow/Treuhandabwicklung an. Falls sich Käufer/Verkäufer nicht einigen können, kann ich (mit entsprechenden Nachweisen!) die jeweilige Partei dann mit meiner Signatur unterstützen. Ich selbst kann ohne den Käufer oder den Verkäufer nicht über den Betrag auf dem Treuhandkonto verfügen. Allgemein erwarte ich, dass sich Käufer und Verkäufer selbst einigen und ich hier erst gar nicht eingreifen muss! Kosten fallen für meinen Teil, der üblicherweise mit der Bereitstellung der Treuhandadresse erledigt ist, nicht an.
Mein öffentlicher Anteil (der komprimierte Schlüssel führt zu kleineren Redeem Scripts):
02a4b5d388eac33c8065474f101cd7b969b3e18818a741f8900d4cb97f43cc646a
Ähnlich wie Bitcoin selbst, sehe ich das erst mal als Experiment. Je nachdem wie es sich entwickelt, könnte ich mir in Zukunft auch eine weitere Automatisierung vorstellen, um das ganze noch benutzerfreundlicher zu gestalten.