7. CoinSwap
înapoi la Cuprins
Gregory Maxwell16 introduce CoinSwap pentru prima oară în acest topic:
https://bitcointalk.org/index.php?topic=321228.0
CoinSwap are rolul de a proteja informațiile despre tranzacția dintre un plătitor și un destinatar. CoinSwap permite participanților implicați să realizeze tranzacții prin implicarea uneii garanții că niciun participant nu poate fura bitcoin de la altul. În cadrul CoinSwap este necesar un terț ca punte de legătură între plătitor și destinatar, iar tranzacțiile trebuie să respecte schema CoinSwap. Unele metode de tranzacționare CoinSwap includ escrow de tip 2-din-2 și tranzacții încuiate prin hash.
Protocolul CoinSwap:
În cadrul acestui protocol se presupune că toți participanții au acces la canale private de cumonicare.
Protocolul CoinSwap poate fi explicat astfel:
Alice este plătitor,
Bob este destinatarul plății,
Carol este intermediar (escrow).
Acest protocol se împarte în 3 etape, numite faza 0, faza 1 și faza 2.
Faza 0. Se setează cine este escrow și modul de rambursare a banilor în caz de întârziere.
Faza 1. Asigură că, dacă Bob este plătit, este imposibil să nu fie plătită și Carol.
Faza 2. Se eliberează conturile deținute de escrow, deoarece toată lumea este bucuroasă și trișatul nu este posibil.
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} ******/
=====================================================================================
Diagrama Protocolului CoinSwap16
Faza 0
În faza 0 se realizează procesul de inițiere a tranzacției escrow între participanți. Alice creează tranzacția escrow TX_0, care este un escrow de tip 2-din-2 între Alice și Carol, folosind fondurile bitcoin ale lui Alice. Această tranzacție poate fi citită astfel: Alice îi va plăti o anumită sumă de bitcoin lui Carol, dacă Alice și Carol se pun de acord..
Apoi, Carol realizează și ea o tranzacție, TX_1, care este una de tip escrow 2-din-2 escrow între Carol și Bob, folosind fondurile bitcoin ale lui Carol. Această tranzacție poate fi citită astfel: Carol îi va plăti o anumită sumă de bitcoin lui Bob, dacă Bob și Carol se pun de acord..
Pentru securizarea fazei, Carol creează o rambursare pentru TX_0, cu o limită temporală specifică, aceasta având rolul de a asigura faptul că Alice va primi înapoi suma de bitcoin plătită către Carol, dacă se întâmplă ceva neprevăzut.
Analog, Carol creează și o rambursare pentru TX_1, aceasta având rolul de a-i asigura lui Carol banii pe care i-a plătit lui Bob, dacă se întâmplă ceva neprevăzut. Tranzacțiile TX_0_refund și TX_1_refund nu sunt propagate în rețea de Alice și Carol. În acest moment, tranzacțiile transmise în rețeaua Bitcoin sunt TX_0 și TX_1.
Faza 1
Faza 1 pregătește garanțiile pentru toți participanții implicați. Aceasta înseamnă că, dacă Bob primește monedele de la Carol, atunci Carol poate efectua plata de la Alice. Schema este susținută prin intermediul unei tranzacții încuiate prin hash.
În cadrul schemei, Bob alege cuvântul secret X, apoi calculează valoarea HX, care este valoarea hash a lui X, folosind formula HX=H(X) și trimițând HX lui Alice și Carol. Alice creează o tranzacție nouă, TX_2, care va lua monedele din TX_0 folosind semnătura lui Carol și valoarea X, efectuându-se apoi plata către adresa lui Carol. Similar lui Alice, Carol creează o tranzacție nouă, cu o schemă de tranzacție TX_3 cu hash încuiat, care va prelua monedele din TX_1 folosind semnătura lui Bob și valoarea X, efectuându-se apoi plata către Bob.
În această fază, dacă Bob trișează și preia monedele folosind TX_3, atunci Carol poate lua plățile folosind TX_2, deoarece valoarea lui X poate fi cunoscută când Bob utilizează TX_3 și o publică în rețeaua Bitcoin.
Faza 2
Dacă TX_2 și TX_3 nu sunt propagate în rețea, atunci faza 2 poate fi continuată. În această fază, Bob îi spune lui Carol valoarea lui X, iar Carol realizează o nouă tranzacție, TX_4, care ia monedele din TX_1 folosind semnătura lui Bob. Bob poate utiliza tranzacția TX_4 pentru a primi plata. Ulterior, Alice creează tranzacția TX_5, care preia monedele din TX_0 folosind semnătura lui Carol pentru a o plăti pe Carol. Carol poate propaga tranzacția TX_5 în rețea și poate încasa plata.
Dacă tot procesul este completat, doar tranzacțiile TX_4 și TX_5, care folosesc TX_0 și TX_1, sunt propagate în rețea, iar celelalte tranzacții sunt șterse.
CoinSwap este un exemplu de metodă de Plată Condiționată cu Zero Cunoștințe17 și are următoarele caracteristici:
1. tranzacții încuiate prin hash
2. tranzacții blocate temporal
3. Tranzacții escrow de tip 2-din-2
În cadrul CoinSwap fiecare pas al protocolului trebuie să urmeze ordinea corectă, pentru a produce o tranzacție sigură și garantată, fără a apela la un intermediar de încredere.
Referințe:
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, pg. 105-107, 2017: Jasakom
- Alte referințe: vezi postarea #1