7. CoinSwap
повернутися до змісту
Грегорі Максвелл 16 в наступній темі вперше представив CoinSwap:
https://bitcointalk.org/index.php?topic=321228.0
CoinSwap захищає інформацію про транзакції між платником і одержувачем. CoinSwap дозволяє сторонам здійснювати транзакції, залучаючи гарантію того, що жодна зі сторін не зможе вкрасти біткоїни в інших сторін. У CoinSwap необхідна третя сторона, яка виступає в якості сполучної ланки між платником і одержувачем, а також деякі транзакції повинні здійснюватися за схемою CoinSwap. Деякі методи транзакцій, що використовуються в CoinSwap, включають ескроу-транзакції 2-з-2 і транзакції з хеш-блокуванням.
Протокол CoinSwap:
У цьому протоколі передбачається, що всі сторони мають приватні канали зв'язку.
Протокол CoinSwap можна пояснити наступним чином:
Alice виступає в ролі платника,
Bob - одержувачем платежу,
а Carol - як посередник (ескроу).
Цей протокол поділяється на 3 фази, а саме: фаза 0, фаза 1 і фаза 2.
Фаза 0. Налаштування ескроу та повернення коштів за ними після закінчення терміну дії.
Фаза 1. Робить так, що якщо Bob отримає гроші, то Carol не зможе їх не отримати.
Фаза 2. Просто випускає ескроу безпосередньо, тому що всі задоволені тим, що шахрайство неможливе.
Alice Carol Bob
=====================================================================================
0.Обчислює TX_0: 2of2{A,C} |Обчислює TX_1: 2of2{C,B} | \
1.Відправка TX_0 TXID ------------> | |
2. |Відправка TX_1 TXID ------------> |
3. |Обчислює TX_0 заблоковане повернення |Обчислює TX_1 заблоковане повернення|
4. <------------ Відправка TX_0_refund | | Фаза 0
5. | <------------ Відправка TX_1_refund. |
6.Оголошення TX_0 у мережі |Оголошення TX_1 у мережі | |
7. | | |
8.****** Мережа підтверджує TX_0: Alice pays according to 2 of {Alice, Carol} ******|
9.****** Мережа підтверджує TX_1: Carol pays according to 2 of {Carol, Bob} ******/
A. | |Selects secret value X \
B. | |Обчислює HX = H(X) |
C. | <------------ Відправка HX |
D. <----------------------------------------- Відправка HX |
E.Обчислює TX_2: TX_0>Carol+X | | | Фаза 1
F.Відправка TX_2 ------------> | |
G. | Обчислює TX_3: TX_1>Bob+X | |
H. | Відправка TX_3 ------------> |
I. | <------------ Відправка X /
J. | Обчислює TX_4: TX_1>Bob | \
K. | Відправка TX_4 ------------> |
L. | |Підпис та Оголошення TX_4 |
M.****** Мережа підтверджує TX_4: Carol pays Bob via 2 of {Carol, Bob} ******|
N.Обчислює TX_5: TX_0>Carol | | | Фаза 3
O.Відправка TX_5 ------------> | |
P. |Підпис та оголошення TX_5 | |
Q.****** Мережа підтверджує TX_5: Alice pays Carol via 2 of {Alice, Carol} ******/
=====================================================================================
Схема протоколу CoinSwap.16
Фаза 0
У фазі 0 відбувається процес здійснення транзакції умовного депонування між учасниками. Аліса здійснює ескроу-транзакцію TX_0, яка є ескроу-транзакцією 2-з-2 між Алісою та Керол, використовуючи біткоїни Аліси. Цю транзакцію можна прочитати так:
"Аліса виплатить Керол певну суму біткоїнів, якщо Аліса і Керол домовляться".
Потім Керол також здійснює транзакцію TX_1, яка є ескроу 2-з-2 між Керол і Бобом, використовуючи біткоїн Керол. Цю транзакцію можна прочитати так: "Керол заплатить певну суму біткоїнів Бобу, якщо Керол і Боб домовляться".
Щоб убезпечити цю фазу, Керол робить повернення TX_0 з певним часовим лімітом, що змусить Алісу повернути біткоїни, сплачені Керол, якщо щось станеться в майбутньому.
Так само, як і Аліса, Керол також робить TX_1_refund, що дозволить Керол отримати назад біткоїн, сплачений Бобу, якщо щось станеться в майбутньому. Транзакції TX_0_refund і TX_1_refund не відправляються в мережу ні Алісою, ні Керол. Транзакції, відправлені в мережу біткоїнів на цьому етапі - TX_0 і TX_1.
Фаза 1
Фаза 1 готує гарантії транзакцій для всіх учасників. Це означає, що якщо Боб отримує монети від Керол, то Керол також може здійснювати платежі від Аліси. Схема транзакцій з хеш-блокуванням підтримує цю схему.
У цій схемі Боб вибирає секретне ключове слово X, потім обчислює значення HX, яке є хеш-значенням X за формулою HX=H(X), і відправляє HX Алісі і Керол. Аліса створює нову транзакцію TX_2, яка бере монети з TX_0, використовуючи підпис Керол і значення X, і відправляє їх на адресу Керол. Так само як і Аліса, Керол створює нову транзакцію з хеш-блокуванням TX_3, яка візьме монети з TX_1, використовуючи підпис Боба і значення X, і виплатить їх Бобу.
На цьому етапі, якщо Боб шахраює і забирає монети за допомогою TX_3, то Керол може отримувати платежі за допомогою TX_2, оскільки значення X може бути відоме, коли Боб використовує TX_3 і публікує його в мережі Біткоїн.
Фаза 2
Якщо TX_2 і TX_3 не відправлені в мережу Біткоїн, то фаза 2 може бути продовжена. На цій фазі Боб повідомляє Керол значення X, а Керол робить нову транзакцію TX_4, яка забирає монети з TX_1, використовуючи підпис Боба. Боб може використати транзакцію TX_4 для отримання оплати. Так само Аліса зробила транзакцію TX_5, яка забирає монети з TX_0, використовуючи підпис Керол, і заплатила Керол. Керол може відправити транзакцію TX_5 в мережу біткоїнів, щоб отримати оплату.
Якщо цей протокол завершений, тільки транзакції TX_4 і TX_5, що використовують TX_0 і TX_1, відправляються в мережу Bitcoin, в той час як інші транзакції видаляються і не відправляються в мережу Bitcoin.
CoinSwap є прикладом методу Zero Knowledge Contingent Payment17, який має наступні особливості:
1. Транзакція заблокована хешем
2. Блокування транзакції за часом
3. Ескроу-транзакція 2-з-2
У CoinSwap кожен крок протоколу повинен слідувати правильному порядку, щоб створити безпечну і гарантовану транзакцію без довіреної сторони.
Посилання:
16. gmaxwell, CoinSwap: графік транзакцій роз'єднує безвідповідальну торгівлю
17. Bitcoin Wiki. (2011, September 28, 2015), Умовний платіж із нульовим розголошенням
- Dimaz A.W. & Oscar D., Блокчейн Bitcoin для світу, сторінки 105-107, 2017: Jasakom
- Інші посилання подивіться на пост #1