7. CoinSwap
back to table of contents
Gregory Maxwell16 a introduit pour la première fois CoinSwap dans le fil de discussion suivant :
https://bitcointalk.org/index.php?topic=321228.0
CoinSwap protégera les informations de transaction entre le payeur et le bénéficiaire. CoinSwap permet aux parties impliquées de réaliser des transactions en impliquant une garantie qui empêche toute partie de voler des bitcoins à d'autres parties. Dans CoinSwap, une tierce partie est nécessaire en tant que liaison entre le payeur et le bénéficiaire, et certaines transactions doivent également être effectuées dans le schéma CoinSwap. Certaines méthodes de transaction utilisées dans CoinSwap comprennent l'escrow 2-sur-2 et les transactions hash-locked.
Protocole CoinSwap :
Dans ce protocole, on suppose que toutes les parties disposent de canaux de communication privés.
Le protocole CoinSwap peut être expliqué comme suit :
Alice agit en tant que payeur,
Bob en tant que bénéficiaire du paiement,
et Carol en tant qu'intermédiaire (escrow).
Phase 0. Met en place les escrows et leurs remboursements temporaires.
Phase 1. Fait en sorte que si Bob est payé, il n'y a aucun moyen pour Carol de ne pas être payé.
Phase 2. Libère simplement les escrows directement parce que tout le monde est convaincu que la tricherie n'est pas possible.
Alice Carol Bob
=====================================================================================
0.Calcule TX_0 : 2-sur-2{A,C} |Calcule TX_1 : 2-sur-2{C,B} | \
1.Envoye TX_0 TXID ------------> | |
2. |Envoye TX_1 TXID ------------> |
3. |Calcule le remboursement bloqué TX_0 |Calcule le remboursement bloqué TX_1 |
4. <------------ Envoie le remboursement TX_0 | | Phase 0
5. | <------------ Envoie le remboursement TX_1. |
6.Annonce TX_0 au réseau |Annonce TX_1 au réseau | |
7. | | |
8.****** Le réseau confirme TX_0 : Alice paie selon 2 de {Alice, Carol} ******|
9.****** Le réseau confirme TX_1 : Carol paie selon 2 de {Carol, Bob} ******/
A. | |Sélectionne la valeur secrète X \
B. | |Calcule HX = H(X) |
C. | <------------ Envoie HX |
D. <----------------------------------------- Envoie HX |
E.Calcule TX_2 : TX_0>Carol+X | | | Phase 1
F.Envoye TX_2 ------------> | |
G. | Calcule TX_3 : TX_1>Bob+X | |
H. | Envoye TX_3 ------------> |
I. | <------------ Envoie X /
J. | Calcule TX_4 : TX_1>Bob | \
K. | Envoye TX_4 ------------> |
L. | |Signe et annonce TX_4 |
M.****** Le réseau confirme TX_4 : Carol paie Bob via 2 de {Carol, Bob} ******|
N.Calcule TX_5 : TX_0>Carol | | | Phase 3
O.Envoye TX_5 ------------> | |
P. |Signe et annonce TX_5 | |
Q.****** Le réseau confirme TX_5 : Alice paie Carol via 2 de {Alice, Carol} ******/
=====================================================================================
Diagramme du Protocole CoinSwap.16
Phase 0
Dans la phase 0, il y a tout le processus de création d'une transaction escrow entre les participants. Alice crée une transaction escrow TX_0 qui est un escrow 2-sur-2 entre Alice et Carol en utilisant les BTC d'Alice. Cette transaction peut être lue comme suit :
"Alice paiera une certaine quantité de bitcoins à Carol si Alice et Carol sont d'accord."
Ensuite, Carol crée également une transaction TX_1, qui est un escrow 2-sur-2 entre Carol et Bob en utilisant les bitcoins de Carol. Cette transaction peut être lue comme suit : "Carol paiera une certaine quantité de bitcoins à Bob si Carol et Bob sont d'accord."
Pour sécuriser cette phase, Carol crée un remboursement TX_0 avec une limite de temps spécifique, qui fera en sorte qu'Alice récupère les bitcoins payés à Carol si quelque chose se passe dans le futur.
Tout comme Alice, Carol crée également TX_1_refund, qui fera en sorte que Carol récupère les bitcoins payés à Bob si quelque chose se passe dans le futur. Les transactions TX_0_refund et TX_1_refund ne sont pas envoyées au réseau par Alice ou Carol. Les transactions envoyées au réseau Bitcoin à cette étape sont TX_0 et TX_1.
Phase 1
La phase 1 prépare des garanties de transaction pour toutes les parties impliquées. Cela signifie que si Bob prend des pièces de Carol, Carol peut également effectuer des paiements à partir d'Alice. Un schéma de transaction hash-locked prend en charge ce schéma.
Dans ce schéma, Bob choisit le mot-clé secret X, puis calcule la valeur HX, qui est la valeur de hachage de X avec la formule HX=H(X) et envoie HX à Alice et Carol. Alice crée une nouvelle transaction TX_2 qui prendra des pièces de TX_0 en utilisant la signature de Carol et la valeur X et les paiera à l'adresse de Carol. Tout comme Alice, Carol crée une nouvelle transaction avec un schéma de transaction TX_3 hash-locked qui prendra des pièces de TX_1 en utilisant la signature de Bob et la valeur X et les paiera à Bob.
Dans cette phase, si Bob triche et prend des pièces en utilisant TX_3, alors Carol peut recevoir des paiements en utilisant TX_2 car la valeur de X peut être connue lorsque Bob utilise TX_3 et la publie sur le réseau Bitcoin.
Phase 2
Si TX_2 et TX_3 ne sont pas envoyées au réseau Bitcoin, alors la phase 2 peut être poursuivie. Dans cette phase, Bob dit à Carol la valeur de X, et Carol crée une nouvelle transaction TX_4 qui prendra des pièces de TX_1 en utilisant la signature de Bob. Bob peut utiliser la transaction TX_4 pour recevoir un paiement. Tout comme cela, Alice a créé une transaction TX_5 qui prendra des pièces de TX_0 en utilisant la signature de Carol et les paiera à Carol. Carol peut envoyer les transactions TX_5 au réseau Bitcoin pour être payée.
Si ce protocole est complet, seules les transactions TX_4 et TX_5 utilisant TX_0 et TX_1 sont envoyées au réseau Bitcoin, tandis que les autres transactions sont supprimées et ne sont pas envoyées au réseau Bitcoin.
CoinSwap est un exemple de la méthode de paiement contingent à connaissance nulle17 qui a les caractéristiques suivantes :
1. Transaction hash-locked
2. Transaction verrouillée dans le temps
3. Transaction escrow 2-sur-2
Dans CoinSwap, chaque étape du protocole doit suivre le bon ordre pour produire une transaction sûre.
Référence :
16. gmaxwell, CoinSwap: Transaction graph disjoint trustless trading
17. Bitcoin Wiki. (28 septembre 2015), Zero Knowledge Contingent Payment
- Dimaz A.W. & Oscar D., Blockchain dari Bitcoin untuk Dunia, pages 105-107, 2017 : Jasakom
- Autres références voir le post #1