63 / 736CJ

CoinJoin

Спільна транзакція для захисту приватності

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

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

Анна платить за послугу й не хоче, щоб одержувач легко простежив решту її коштів. Але Bitcoin не має приватної банківської виписки: історія його транзакцій публічна. Транзакція витрачає попередні невитрачені виходи, які називаються UTXO, та створює нові. Вихід містить суму й умови, за яких її можна витратити. Якщо звичайний платіж використовує кілька таких виходів, аналітик часто припускає, що ними керує одна людина. Це спосіб оцінки, тобто евристика, а не доказ. CoinJoin порушує припущення, об’єднуючи кількох власників у транзакції. Минуле не переписується; змінюється впевненість, із якою з публічних даних можна виводити зв’язки. [1]

У спрощеному прикладі Анна та Павло мають по одному виходу на 100 500 sat. Sat — скорочення від satoshi, найменшої одиниці біткоїна. Вони погоджують транзакцію, де кожен отримує новий вихід на 100 000 sat, а решта 1 000 sat стає спільною мережевою комісією. Навчальний приклад не включає додаткової оплати сервісу. Координатор або гаманці, що взаємодіють, готують пропозицію. Цифровий підпис — це згода, яку можна перевірити й для якої використовують приватний ключ: секретні дані, що дають змогу підписувати. Сам ключ при цьому не розкривається. Кожен перевіряє адресу власного виходу, суму, комісії та всі умови, а лише потім підписує свої входи. Сам координатор не має ні ключів, ні права витрачати чужі кошти. Якщо потрібного підпису не буде, цю транзакцію неможливо завершити як дійсну. Проте захист передбачає справне програмне забезпечення та перевірену пропозицію: підписання переказу на адресу шахрая зруйнує цей захист. [1] [5]

У прикладі спостерігач, який бачить лише блокчейн, знаходить два нові виходи однакової вартості. Сама сума не показує, який належить Анні, а який Павлові. Це не означає автоматичної ймовірності один до двох чи гарантованої анонімності: спостерігач може знати одну адресу або мати іншу підказку. У реальних транзакціях зіставленню допомагають впізнавана решта, різні суми, типи виходів чи час операцій. Множина анонімності — це кандидати, яких спостерігач не розрізняє, а не просто кількість зареєстрованих учасників раунду. Оцінка гаманця спирається на певну модель і не обіцяє, що саме знає кожен спостерігач. [1] [4]

Можливість украсти гроші та можливість щось дізнатися — різні можливості. Простий координатор може знати зв’язки входів і виходів; інші протоколи приховують їх криптографічними методами. Мають значення й мережеві дані, зокрема IP-адреси та час з’єднань. Ще одна проблема — Sybil Attack: один противник видає себе за багатьох учасників, знає власні виходи й зменшує невизначеність щодо решти. Учасник також може відмовитися підписувати та зірвати раунд. Тому важливі конкретні правила участі й захист від перевантаження або саботажу, які називають DoS. Велика кількість входів сама цих питань не вирішує. [1] [4]

Пізніше Анна використовує новий вихід разом із коштами, виведеними з біржі, яка знає її особу. Так вона може дати спостерігачеві новий зв’язок там, де раніше намагалася створити невизначеність. Подібно діють повторне використання адрес або об’єднання кількох виходів в один — консолідація. Coin Control дозволяє вибирати, які UTXO гаманець витрачатиме, і допомагає розділяти різні контексти. Але це не кнопка абсолютної приватності. Одержувач може знати платника, а сервіс — зберігати власні записи. Тому захист продовжується після успішного раунду й не зводиться до вигляду однієї транзакції. [5]

Спочатку визнач, які відомості та від кого хочеш захистити. Допитливий одержувач, координатор і мережевий спостерігач мають різні можливості. Далі перевір, хто зберігає ключі, що підписує застосунок, які витрати стягує та як поводиться з отриманими виходами. Сервіс, якому ти спершу передаєш кошти на зберігання, має іншу модель довіри, ніж некастодіальний CoinJoin. CoinJoin не додає особливого правила Bitcoin: вузли перевіряють звичайну транзакцію та її умови. Вузол — це комп’ютер із програмою, яка перевіряє транзакції та блоки Bitcoin. CoinJoin не прибирає записи біржі чи одержувача й не обіцяє певного ставлення конкретного сервісу до платежу. Розуміння цих меж корисніше новачкові за позначку «анонімно» в застосунку. [1] [5]

Gregory Maxwell публічно пояснив CoinJoin у серпні 2013 року. Ідея не потребувала зміни правил мережі, але людям ще треба було знайти одне одного й домовитися. JoinMarket продемонстрував ринковий підхід: організатор спільної транзакції платить іншим за готовність їхніх коштів до участі. Координовані протоколи організовують процес інакше. Наприклад, WabiSabi підтримує різні суми й анонімні посвідчення, які дозволяють перевірити право на виходи без прямого розкриття зв’язків із входами. Тому не слід ототожнювати весь CoinJoin з одним застосунком або вважати, що всі варіанти потребують лише однакових виходів. [1] [2] [4]

Текст Максвелла пояснює основну ідею, документація конкретного гаманця — його процес, а дослідження WabiSabi — властивості протоколу. Це різні рівні доказів. На час цієї редакції початковий репозиторій JoinMarket client/server архівований; тут він є історичним і технічним джерелом, а не рекомендацією до встановлення. PayJoin за BIP 78 — споріднена співпраця платника й одержувача, де обидві сторони додають входи. Зазвичай вона не націлена на велику групу однакових виходів. Порівнюючи підходи, з’ясовуй, хто співпрацює, що може дізнатися та що людина та її гаманець насправді перевіряють перед підписанням, а не покладайся лише на спільне слово «приватність». [1] [2] [3] [4] [5] [6]

Приклад · CJ

Спільна транзакція не означає, що всі кошти належать одній людині

Alice і Bob контролюють по окремому входу спільної транзакції та отримують власні виходи. Припущення, що всі входи належать одній людині, тут хибне. Саме об’єднання не гарантує прихованого зіставлення виходів; суми, інші дані й подальше витрачання можуть розкрити зв’язки.

Для повної картини прочитайте також Bitcoin, Приватність у Bitcoin, Псевдонімність, Гаманець, UTXO, Транзакція. На цю статтю також посилаються Change Address, Приватність у Bitcoin, Псевдонімність, KYC.

01Чи може координатор CoinJoin вкрасти кошти зі входів?

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

02Чи залишаються виходи після CoinJoin анонімними назавжди?

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

DOC · 001Gregory Maxwell — CoinJoin: Bitcoin privacy for the real worldПервинне джерело DOC · 002JoinMarket client/serverПервинне джерело DOC · 003JoinMarket — Architecture Notes (archived)Документація DOC · 004WabiSabi: Centrally Coordinated CoinJoins with Variable AmountsПервинне джерело DOC · 005Wasabi Wallet — CoinJoin documentationДокументація DOC · 006BIP 78 — PayjoinСпецифікація
Переглянуто: Спочатку джерела · Не інвестиційна порада