Що таке міксування монет і CoinJoin?

· 5 min read

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

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

Втім, відсутність імен у публічних адресах не дає легко розкрити особи користувачів. І все ж Bitcoin не є повністю приватним. Аналітика блокчейну стає дедалі витонченішою й дедалі успішніше повʼязує адреси з особами. Крім технік спостереження, розкрити особи користувачів криптовалют може й підрозділ, який працює саме над цим. Щоб цьому запобігти, з роками зʼявилися техніки, що розривають звʼязки між транзакціями.

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

Загалом міксування монет — це операції, покликані приховати кошти, обмінявши їх на інші. Але у світі криптовалют цим терміном часто називають послуги, які надають треті сторони. Такі сервіси беруть монети користувача (і невелику комісію) і повертають йому будь-які інші монети, не повʼязані з надісланими. Ці послуги також відомі як тамблери або міксери.

Звісно, до безпеки та приватності таких централізованих сервісів є запитання. Немає жодних гарантій, що міксер поверне кошти або що повернуті монети не мають проблемної історії транзакцій. Ще один момент, який варто врахувати: третя сторона може зафіксувати IP-адреси й біткоїн-адреси. Урешті-решт користувач довіряє свої кошти комусь іншому в надії отримати назад незвʼязані монети.

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

Що таке CoinJoin?

Транзакції CoinJoin уперше запропонував розробник Bitcoin Ґреґорі Максвелл у 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 на свої адреси? Чи четверо надсилають кошти новим людям або самим собі? Дати точні відповіді на ці питання ми не можемо.

Приватність через заперечуваність

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

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

Підсумки

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

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

міксування монет coinjoin приватність bitcoin utxo аналіз блокчейну