Що таке змішування монет та технологія CoinJoin
Головна сторінка
Статті
Що таке змішування монет та технологія CoinJoin

Що таке змішування монет та технологія CoinJoin

Просунутий рівень
Опубліковано Mar 25, 2020Оновлено Dec 28, 2022
6m

Вступ

Bitcoin часто називають цифровими грошима, але це сумнівне порівняння. Якщо Аліса заплатить Бобу десять доларів готівкою, Боб гадки не матиме, звідки взялися ці гроші. Якщо пізніше він віддасть їх Керол, вона не дізнається, що Аліса колись володіла цими грошима.
Bitcoin відрізняється своєю відкритою природою. Історія будь-якої монети (точніше, виходу невитрачених транзакцій або UTXO) може бути з легкістю переглянута будь-ким. Ця концепція схожа із записом суми угоди та імен сторін при кожній транзакції. 
Тим не менш, псевдонім публічної адреси гарантує, що особа користувача не буде легко розкрита. Але Bitcoin не є повністю приватним. Аналіз блокчейну стає все більш витонченим і здатним все більш ефективно зв'язувати адреси з особистими даними. Поряд з іншими методами відстеження певні організації можуть деанонімізувати криптокористувачів. Щоб уникнути цього, з часом з'явилися технології розриву зв'язків між транзакціями.


Що таке змішування монет?

У широкому значенні змішування монет може означати будь-яку активність, пов'язану із заплутуванням історії коштів та заміною їх даних. Однак у сфері криптовалют змішування монет зазвичай означає послугу, що надається третьою стороною. Як правило, постачальники послуг беруть монети користувачів (і невелику комісію), а повертають монети, які не мають прив'язки до надісланих. Ці послуги також відомі як тумблери або міксери.

Безпека та анонімність таких централізованих сервісів, звичайно, під питанням. Користувачі не мають гарантій, що вони отримають свої кошти назад і що вони не будуть зіпсовані якимось чином. Крім того, при використанні міксера варто звернути увагу на те, що адреси інтелектуальної власності та Bitcoin можуть реєструватися третьою стороною. У результаті користувачі відмовляються від контролю над своїми коштами, сподіваючись отримати назад незв'язані кошти.

Більш цікавий підхід існує у вигляді транзакцій CoinJoin, які забезпечують більший ступінь секретності. Тобто після CoinJoin жодні докази не можуть упевнено пов'язати користувача з його попередніми транзакціями. Багато рішень CoinJoin є децентралізованою альтернативою міксерам. Незважаючи на те, що у схемі може бути координатор, користувачам не потрібно жертвувати зберіганням своїх коштів.


Що таке CoinJoin?

Транзакції CoinJoin були спочатку запропоновані розробником Bitcoin, Gregory Maxwell, у 2013 році. Він дав короткий опис того, як структуровані такі транзакції та того, як може бути досягнуто зростання рівня конфіденційності без зміни протоколу.
Суть CoinJoin – об'єднання коштів декількох користувачів в одну транзакцію. Перш ніж ми пояснимо, як (і чому), давайте подивимось на структуру базової транзакції.

Bitcoin транзакції складаються з входів та виходів. Коли користувач хоче здійснити транзакцію, він бере свої UTXO як вхідні дані, вказує вихідні дані та підписує вхідні дані. Важливо підкреслити, що кожен вхід підписується самостійно і користувачі можуть встановлювати кілька виходів (зняття на різні адреси).



Якщо ми подивимося на цю транзакцію, що складається з чотирьох входів (0,2 BTC кожен) та двох виходів (0,7 BTC та 0,09 BTC), ми можемо зробити декілька різних припущень. По-перше, ми спостерігаємо, як відбувається платіж – відправник надсилає комусь кошти та повертає собі частину. Оскільки використовуються чотири входи, більший вихід, ймовірно, призначений для одержувача. Зауважте, що у виходах не вистачає 0.01 BTC – це винагорода майнеру.

Також можливо, що відправник хоче створити великий UTXO з дрібніших, тому він об'єднує менші вхідні дані, щоб отримати бажаний результат 0,7 BTC.

Інше припущення, яке ми можемо зробити, – кожен вхід підписаний самостійно. Ця транзакція може мати до чотирьох різних сторін, які підписують входи. І в цьому полягає принцип, який робить CoinJoin ефективним.


Як працює CoinJoin?

Ідея полягає в тому, що брати участь у транзакції будуть декілька сторін, вносячи кошти та вказуючи бажаний вихід. Оскільки входи стають об'єднаними, стає неможливо точно сказати, який вхід якому користувачеві належить. Розглянемо схему нижче:



Тут у нас є чотири учасники, які хочуть розірвати зв'язок між транзакціями. Вони об'єднуються між собою (або через спеціального координатора), щоб оголосити входи та виходи, які хотіли б увімкнути. 

Координатор отримує всю інформацію, включає дані до транзакції, і кожен учасник підписує її перед тим, як надіслати до мережі. Як тільки користувачі її підтверджують, транзакція може бути змінена, не ставши недійсною. Тому немає ризику, що координатор втече із коштами. 

Така транзакція служить чимось на зразок чорної скриньки для змішування монет. Пам'ятайте, що ми ефективно знищуємо UTXO для створення нового. Єдиний зв'язок між старим і новим UTXO, який ми маємо – це сама транзакція, але ми не можемо розрізнити її учасників. У кращому випадку ми можемо сказати, що учасник надав один із виходів і є, можливо, новим власником кінцевого виходу.

Але навіть це не гарантовано. Хто скаже, дивлячись на наведену вище транзакцію, що в ній чотири учасники? Може це одна людина надсилає свої кошти на чотири адреси? Можливо дві людини роблять дві окремі покупки і повертають по 0,2 BTC кожен на свою адресу? Або дві людини роблять дві окремі покупки та повертають по 0,2 BTC на свої адреси? Ми не можемо бути впевненими.


Конфіденційність через заперечення

Самого факту існування реалізації CoinJoin достатньо, щоб поставити під сумнів методи, що використовуються для аналізу транзакцій. У більшості випадків ви можете зрозуміти, що було використано CoinJoin, але не можете дізнатися, кому було переказано кошти. Зі зростанням популярності CoinJoin, припущення про те, що вхідні дані належать одному користувачеві, стало необґрунтованим, що призвело до різкого масового підвищення конфіденційності екосистеми.

Ми сказали, що транзакція з попереднього прикладу мала набір анонімності з чотирьох входів, одержувачем яких міг бути будь-який із чотирьох залучених учасників. Чим більший набір анонімності, тим менша ймовірність того, що транзакції можуть бути пов'язані з їх первинним власником. Нові реалізації CoinJoin дозволяють користувачам надійно поєднувати свої вхідні дані з десятками інших, забезпечуючи високий рівень заперечення. Нещодавно була успішно виконана транзакція на 100 осіб.


Заключні думки

Інструменти для змішування монет є важливим доповненням до арсеналу будь-якого користувача, який серйозно ставиться до конфіденційності. На відміну від запропонованих оновлень конфіденційності (таких як конфіденційні транзакції), наші варіанти сумісні з поточним протоколом. 

Для тих, хто довіряє надійності та методології третіх сторін, простим рішенням буде використання послуг змішування. Для тих, хто віддає перевагу прозорим і некастодіальним сервісам, в якості альтернативи підходить CoinJoin. Це може бути зроблено вручну для технічно підкованих користувачів або за допомогою програмних інструментів, які абстрагуються від складніших механізмів. Вже зараз існує декілька таких інструментів, популярність яких тільки зростає в міру того, як користувачі прагнуть більшої конфіденційності.