Post
Topic
Board Anfänger und Hilfe
Re: [Aufklärung] Bitcoin: Privatsphäre und Anonymität - [7. CoinSwap]
by
cygan
on 17/06/2023, 11:14:14 UTC
7. CoinSwap
zurück zum Inhaltsverzeichnis
Gregory Maxwell16 stellte CoinSwap in dem folgenden Faden erstmals vor:
https://bitcointalk.org/index.php?topic=321228.0
CoinSwap schützt die Transaktionsinformationen zwischen dem Zahler und dem Empfänger. CoinSwap ermöglicht es den beteiligten Parteien, Transaktionen zu machen, indem sie eine Garantie macht, dass keine Partei Bitcoin von anderen Parteien stehlen kann. In CoinSwap, benötigt eine dritte Partei eine Verbindung zwischen Zahler und Empfänger, um auch einige Transaktionen in der CoinSwap Schema machen zu können. Einige Transaktionsmethoden, die in CoinSwap verwendet werden, sind 2-of-2 Escrow und hash-locked Transaktionen.

CoinSwap Protokoll:
Bei diesem Protokoll wird davon ausgegangen, dass alle Parteien über private Kommunikationskanäle verfügen.
Das CoinSwap Protokoll kann wie folgt erklärt werden:
Alice tritt als Zahler auf,
Bob als Empfänger der Zahlung,
und Carol als Vermittler (Treuhänder).

Dieses Protokoll ist in 3 Phasen unterteilt, nämlich Phase 0, Phase 1 und Phase 2.

Phase 0. Richtet die Treuhandkonten und ihre Zeitüberschreitungserstattungen ein.
Phase 1. Wenn Bob bezahlt wird, gibt es keine Möglichkeit für Carol, nicht bezahlt zu werden.
Phase 2. Gebt die Treuhandkonten einfach direkt frei, denn dann sind alle froh, dass kein Betrug möglich ist.

  Alice                        Carol                        Bob
  =====================================================================================
0.Computes TX_0: 2of2{A,C}    |Computes TX_1: 2of2{C,B}    |                           \
1.Send TX_0 TXID ------------>                             |                           |
2.                            |Send TX_1 TXID ------------>                            |
3.                            |Computes TX_0 locked refund |Computes TX_1 locked refund|  
4.               <------------ Send TX_0_refund            |                           | Phase 0
5.                            |               <------------ Send TX_1_refund.          |
6.Announces TX_0 to network   |Announces TX_1 to network   |                           |
7.                            |                            |                           |
8.******    Network confirms TX_0: Alice pays according to 2 of {Alice, Carol}   ******|
9.******     Network confirms TX_1: Carol pays according to 2 of {Carol, Bob}    ******/
A.                            |                            |Selects secret value X     \
B.                            |                            |Computes HX = H(X)         |
C.                            |               <------------ Send HX                    |
D.               <----------------------------------------- Send HX                    |
E.Computes TX_2: TX_0>Carol+X |                            |                           | Phase 1
F.Send TX_2     ------------>                              |                           |
G.                            | Computes TX_3: TX_1>Bob+X  |                           |
H.                            | Send TX_3     ------------>                            |
I.                            |               <------------ Send X                     /
J.                            | Computes TX_4: TX_1>Bob    |                           \
K.                            | Send TX_4     ------------>                            |
L.                            |                            |Signs and announces TX_4   |
M.******       Network confirms TX_4: Carol pays Bob via 2 of {Carol, Bob}       ******|
N.Computes TX_5: TX_0>Carol   |                            |                           | Phase 3
O.Send TX_5      ------------>                             |                           |
P.                            |Signs and announces TX_5    |                           |
Q.******     Network confirms TX_5: Alice pays Carol via 2 of {Alice, Carol}     ******/
  =====================================================================================
CoinSwap Protokoll Diagramm.16

Phase 0
In Phase 0 wird eine Treuhandtransaktion zwischen den Teilnehmern durchgeführt. Alice führt eine Treuhandtransaktion TX_0 durch, bei der es sich um eine 2-von-2-Treuhänderschaft zwischen Alice und Carol mit Alices Bitcoin handelt. Diese Transaktion kann wie folgt gelesen werden:
Alice wird Carol einen bestimmten Betrag an Bitcoin zahlen, wenn Alice und Carol einverstanden sind.
Dann führt Carol auch eine TX_1-Transaktion durch, die eine 2-von-2-Hinterlegung zwischen Carol und Bob unter Verwendung von Carols Bitcoin ist. Diese Transaktion kann wie folgt gelesen werden: Carol wird Bob einen bestimmten Betrag an Bitcoin zahlen, wenn Carol und Bob einverstanden sind.

Um diese Phase abzusichern, macht Carol eine TX_0-Rückerstattung mit einem bestimmten Zeitlimit, so dass Alice die an Carol gezahlten Bitcoin zurückerhält, falls in der Zukunft etwas passiert.
Genau wie Alice führt auch Carol die Transaktion TX_1_refund durch, mit der Carol die an Bob gezahlten Bitcoin zurückerhält, falls in Zukunft etwas passiert. Die Transaktionen TX_0_refund und TX_1_refund werden nicht von Alice oder Carol an das Netzwerk gesendet. Die Transaktionen, die in dieser Phase an das Bitcoin-Netzwerk gesendet werden, sind TX_0 und TX_1.

Phase 1
In Phase 1 werden Transaktionsgarantien für alle beteiligten Teilnehmer vorbereitet. Das heißt, wenn Bob Münzen von Carol nimmt, kann Carol auch Zahlungen von Alice leisten. Ein hash-locked Transaktionsschema unterstützt dieses Schema.
Bei diesem Verfahren wählt Bob das geheime Schlüsselwort X, berechnet dann den HX-Wert, d. h. den Hash-Wert von X mit der Formel HX=H(X) und sendet HX an Alice und Carol. Alice erstellt eine neue Transaktion TX_2, die Münzen von TX_0 unter Verwendung von Carols Unterschrift und X-Wert nimmt und an Carols Adresse auszahlt. Genau wie Alice erstellt Carol eine neue Transaktion mit dem Hash-verschlüsselten Transaktionsschema TX_3, die Münzen von TX_1 unter Verwendung von Bobs Signatur und des Werts X entgegennimmt und an Bob auszahlt.
Wenn Bob in dieser Phase betrügt und Münzen mit TX_3 aufnimmt, kann Carol Zahlungen mit TX_2 entgegennehmen, da der Wert von X bekannt sein kann, wenn Bob TX_3 verwendet und ihn im Bitcoin Netzwerk veröffentlicht.

Phase 2
Wenn TX_2 und TX_3 nicht an das Bitcoin Netzwerk gesendet werden, kann Phase 2 fortgesetzt werden. In dieser Phase teilt Bob Carol den Wert von X mit, und Carol führt eine neue Transaktion TX_4 durch, die Münzen von TX_1 unter Verwendung von Bobs Signatur nimmt. Bob kann die Transaktion TX_4 verwenden, um die Zahlung zu erhalten. Genauso hat Alice eine Transaktion TX_5 durchgeführt, die Münzen von TX_0 unter Verwendung von Carols Unterschrift entnimmt und an Carol bezahlt. Carol kann TX_5-Transaktionen an das Bitcoin Netzwerk senden, um bezahlt zu werden.

Wenn dieses Protokoll vollständig ist, werden nur TX_4- und TX_5-Transaktionen mit TX_0 und TX_1 an das Bitcoin Netzwerk gesendet, während andere Transaktionen gelöscht und nicht an das Bitcoin Netzwerk gesendet werden.

CoinSwap ist ein Beispiel für die Zero Knowledge Contingent Payment Methode17, die die folgenden Merkmale aufweist:
1. Hashgesperrte Transaktion
2. Zeitgesperrte Transaktion
3. 2-von-2 Treuhandtransaktion

Bei CoinSwap muss jeder Schritt des Protokolls in der richtigen Reihenfolge erfolgen, um eine sichere und garantierte Transaktion ohne eine vertrauenswürdige Partei durchzuführen.

Referenzen:
16. gmaxwell, CoinSwap: Transaction graph disjoint trustless trading
17. Bitcoin Wiki. (2011, September 28, 2015), Zero Knowledge Contingent Payment
 -   Dimaz A.W. & Oscar D., Blockchain dari Bitcoin untuk Dunia, Seiten 105-107, 2017: Jasakom
 -   Weitere Referenzen siehe Beitrag #1