Post
Topic
Board Polski
Re: [Edukacja] Prywatność i anonimowość Bitcoina
by
cygan
on 14/02/2024, 10:13:13 UTC
7. CoinSwap
powrót do spisu treści
Gregory Maxwell16 po raz pierwszy przedstawił CoinSwap w następującym wątku:
https://bitcointalk.org/index.php?topic=321228.0
CoinSwap chroni informacje o transakcjach między płatnikiem a odbiorcą. CoinSwap pozwala zaangażowanym stronom na dokonywanie transakcji, gwarantując, że żadna ze stron nie może ukraść Bitcoinów innym stronom. W CoinSwap strona trzecia wymaga połączenia między płatnikiem a odbiorcą, aby również dokonać niektórych transakcji w schemacie CoinSwap. Niektóre metody transakcji stosowane w CoinSwap to 2-of-2 escrow i transakcje hash-locked.

Protokół CoinSwap:
Protokół ten zakłada, że wszystkie strony mają prywatne kanały komunikacji.
Protokół CoinSwap można wyjaśnić w następujący sposób:
Alice działa jako płatnik,
Bob jako odbiorca płatności,
i Carol jako pośrednik (powiernik).

Protokół ten jest podzielony na 3 fazy, a mianowicie fazę 0, fazę 1 i fazę 2.

Faza 0: Konfiguruje rachunki depozytowe i ich zwroty za przekroczenie czasu.
Faza 1: Jeśli Bob otrzyma zapłatę, nie ma możliwości, by Carol jej nie otrzymała.
Faza 2: Po prostu zwolnij rachunki escrow bezpośrednio, ponieważ wtedy wszyscy są zadowoleni, że nie ma możliwości oszustwa.

  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}     ******/
  =====================================================================================
Schemat protokołu CoinSwap.16

Faza 0
W fazie 0 przeprowadzana jest transakcja escrow między uczestnikami. Alice wykonuje transakcję escrow TX_0, która jest escrow 2 na 2 między Alice i Carol z Bitcoinem Alice. Transakcję tę można odczytać w następujący sposób:
Alice zapłaci Carol określoną kwotę Bitcoinów, jeśli Alice i Carol wyrażą na to zgodę.
Następnie Carol wykonuje również transakcję TX_1, która jest depozytem 2 na 2 między Carol i Bobem przy użyciu Bitcoinów Carol. Transakcję tę można odczytać w następujący sposób: Carol zapłaci Bobowi określoną ilość Bitcoinów, jeśli Carol i Bob wyrażą na to zgodę.

Aby zabezpieczyć tę fazę, Carol dokonuje zwrotu TX_0 z określonym limitem czasowym, aby Alice odzyskała Bitcoiny zapłacone Carol, jeśli coś wydarzy się w przyszłości.
Podobnie jak Alice, Carol również przeprowadza transakcję TX_1_refund, którą Carol wykorzystuje do odzyskania Bitcoinów zapłaconych Bobowi, jeśli coś wydarzy się w przyszłości. Transakcje TX_0_refund i TX_1_refund nie są wysyłane do sieci przez Alice lub Carol. Transakcje wysyłane do sieci Bitcoin w tej fazie to TX_0 i TX_1.

Faza 1
W fazie 1 przygotowywane są gwarancje transakcji dla wszystkich zaangażowanych uczestników. Oznacza to, że jeśli Bob weźmie monety od Carol, Carol może również dokonać płatności od Alice. Schemat transakcji z blokadą hash obsługuje ten schemat.
W tej procedurze Bob wybiera tajne słowo kluczowe X, a następnie oblicza wartość HX, tj. wartość skrótu X przy użyciu wzoru HX=H(X) i wysyła HX do Alice i Carol. Alice tworzy nową transakcję TX_2, która pobiera monety z TX_0 przy użyciu podpisu Carol i wartości X i wypłaca je na adres Carol. Podobnie jak Alicja, Carol tworzy nową transakcję z zaszyfrowanym schematem transakcji TX_3, która pobiera monety z TX_1 przy użyciu podpisu Boba i wartości X i wypłaca je Bobowi.
Jeśli Bob oszukuje w tej fazie i zbiera monety za pomocą TX_3, Carol może akceptować płatności za pomocą TX_2, ponieważ wartość X może być znana, gdy Bob używa TX_3 i publikuje ją w sieci Bitcoin.

Faza 2
Jeśli TX_2 i TX_3 nie zostaną wysłane do sieci Bitcoin, faza 2 może być kontynuowana. W tej fazie Bob przekazuje Carol wartość X, a Carol wykonuje nową transakcję TX_4, która pobiera monety z TX_1 przy użyciu podpisu Boba. Bob może użyć transakcji TX_4, aby otrzymać płatność. Podobnie, Alicja wykonała transakcję TX_5, która pobiera monety z TX_0 przy użyciu podpisu Carol i płaci Carol. Carol może wysłać transakcje TX_5 do sieci Bitcoin, aby otrzymać zapłatę.

Po zakończeniu tego protokołu tylko transakcje TX_4 i TX_5 z TX_0 i TX_1 są wysyłane do sieci Bitcoin, podczas gdy inne transakcje są anulowane i nie są wysyłane do sieci Bitcoin.

CoinSwap jest przykładem metody Zero Knowledge Contingent Payment17, która ma następujące cechy:
1. Transakcja z blokadą hashową
2. Transakcja z blokadą czasową
3. Transakcja powiernicza 2-z-2

W przypadku CoinSwap każdy krok protokołu musi zostać wykonany we właściwej kolejności, aby zakończyć bezpieczną i gwarantowaną transakcję bez zaufanej strony.

Referencje:
16. gmaxwell, CoinSwap: Transaction graph disjoint trustless trading
17. Bitcoin Wiki. (2011, Wrzesień 28, 2015), Zero Knowledge Contingent Payment
 -   Dimaz A.W. & Oscar D., Blockchain dari Bitcoin untuk Dunia, Strony 105-107, 2017: Jasakom
 -   Dalsze referencje zobacz artykuł #1