Вступ до конфіденційних транзакцій
Головна сторінка
Статті
Вступ до конфіденційних транзакцій

Вступ до конфіденційних транзакцій

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

Вступ

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

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

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

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

Одним із запропонованих покращень було використання конфіденційних транзакцій, щоб зробити транзакції справді приватними.


Що таке конфіденційні транзакції?

Про конфіденційні транзакції вперше заговорив Adam Back, генеральний директор Blockstream, ще в 2013 році, а потім їх розширив розробник Bitcoin, Gregory Maxwell. Maxwell описав проблеми, згадані в першому розділі (взаємозамінність і слабка псевдоанонімність), і запропонував рішення. Огляд суми переказів може бути прихований від учасників мережі, і лише дві сторони знатимуть скільки монет було надіслано.



У звичайних умовах (з загальнодоступними – публічними транзакціями) ноді легко перевірити, що отримана сума не перевищує відправлену. Якщо Аліса хоче надіслати 0,3 BTC Бобу, вона бере невитрачений вихід (наприклад 1 BTC) і розбиває його на дві частини: 0,3 для надсилання Бобу і 0,69 для надсилання назад (частина коштів була витрачена на оплату комісії за майнінг).
Це просте обчислення для інших нод: 1 перевищує 0,3 + 0,69, всі підписи правильні та входи Аліси до цього не відправлялися в інше місце, тому транзакція має бути дійсною. Однак, коли сума коштів недоступна для інших учасників мережі, все не так просто. Оскільки завдання полягає в тому, щоб дізнатися, чи одна невідома сума дорівнює або перевищує суму двох інших невідомих сум.


Як тут використовується криптографія

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

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

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

У такому разі, ви можете надати своїм підписникам хеш, здавалося б, рядок із випадкового набору чисел та символів, який вказує на певний вхід даних. Ви пропускаєте назву біржі через функцію, щоб отримати певний вихід. Ми проілюструємо алгоритм SHA256:


f1624fcc63b615ac0e95daf9ab78434ec2e8ffe402144dc631b055f711225191


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

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

Якщо наш вхід буде: "Binance – моя улюблена біржа, мені вона подобається більше, ніж будь-яка інша біржа 2#43Wr, учаснику буде значно складніше вгадати це (і за 0,01 BTC навряд чи хтось спробує це зробити).

"Зобов'язання Педерсена" дозволяє нам додавати входи, уникаючи різних зобов'язань. Як це ілюструє рівняння Максвела:



C(BF1 + D1) + C(BF2 + D2) = C(BF1 + BF2, D1 + D2)

Де BF – це засліплюючий фактор та D – дані


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

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


Який потенціал конфіденційних транзакцій?

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

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


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

Конфіденційні транзакції були інтегровані в інші криптовалюти та сайдчейни Bitcoin. Наприклад, Monero використовує їх у поєднанні з конструкціями, іменованими кільцевими підписами, для досягнення анонімності та взаємозамінності. Сайдчейн Liquid реалізує ці транзакції для більшої конфіденційності, а MimbleWimble розширює їх до тих же цілей.

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