Щоразу, коли значна централізована біржа руйнується, виникає загальне запитання: чи можемо ми використати криптографічну технологію для вирішення проблеми? Біржі могли б створювати криптографічні докази того, що коштів, які вони зберігають у ланцюжку, достатньо для покриття своїх зобов’язань перед користувачами, замість того, щоб просто покладатися на «законні» методи, такі як державні дозволи, аудиторські перевірки та перевірка особистого досвіду тих, хто керує та керує компанією. обмін. Біржі можуть створити систему, за якої принципово неможливо вивести кошти вкладників без їхньої згоди. Потенційно ми могли б вивчити весь спектр між амбітними, доброзичливими CEX, які «не роблять поганих речей», і мережевими DEX, які «не можуть робити поганих речей», але наразі неефективні та порушують конфіденційність. У цій статті ми розповімо про історичні спроби зробити транзакції ближчими до бездовірних, обмеження цих технологій і деякі новіші, потужніші ідеї з використанням ZK-SNARK та інших передових технологій.
Найдавніші спроби бірж використовувати криптографічні методи, щоб довести, що вони не обманюють своїх користувачів, можна відстежити дуже давно. У 2011 році найбільша на той час біткойн-біржа MtGox довела, що має кошти, переказавши 424 242 BTC на заздалегідь оголошену адресу. У 2013 році почалися дискусії про те, як довести іншу сторону рівняння: загальний розмір депозитів клієнтів. Якщо ви підтвердите, що депозити клієнтів дорівнюють X («доказ відповідальності») і підтвердите право власності на приватні ключі для монет X («доказ активів»), у вас є підтвердження платоспроможності: ви показали, що біржа має кошти для погашення всіх вкладники.
Найпростішим методом підтвердження депозитів була публікація списку пар (ім’я користувача, баланс). Кожен користувач міг перевірити, чи включено його баланс, і будь-хто міг перевірити весь список, щоб переконатися, що (i) кожен баланс є невід’ємним, і (ii) загальна сума дорівнює заявленій сумі. Однак це порушує конфіденційність, тому можна внести невеликі зміни: опублікувати список пар (хеш (ім’я користувача, сіль), баланс) і приватно надіслати кожному користувачеві значення солі. Але навіть це призводить до витоку інформації про баланс і моделей змін балансу. Бажання захистити конфіденційність приводить нас до наступного винаходу: технології дерева Меркла (також відомого як хеш-дерево).
Зелений: вузол Чарлі. Синій: вузол Девіда, який також є вузлом, який Чарлі отримає як частину свого доказу. Жовтий: кореневий вузол, загальнодоступний для всіх.
Технологія дерева Merkle передбачає розміщення балансу клієнта в дереві сум Merkle. У цьому дереві кожен вузол є парою (баланс, хеш). Листові вузли нижнього рівня представляють баланси окремих клієнтів і хеш-значення їхніх імен користувачів. У кожному вузлі вищого рівня баланс є сумою двох балансів нижче, а хеш-значення є хешем двох вузлів нижче. Доказ суми Меркла, як і доказ Меркла, є «гілкою» дерева, що складається з однорідних вузлів на шляху від листа до кореня.
Біржі надсилають кожному користувачеві суму Merkle, що підтверджує його баланс, щоб підтвердити свої активи. Тоді користувачі мають впевненість, що їхній баланс правильно включено до загальної суми. Простий приклад коду можна знайти тут.
Витік конфіденційності в цьому дизайні набагато нижчий, ніж у повністю загальнодоступному списку, і може бути додатково зменшений шляхом перемішування гілок щоразу, коли публікується кореневий каталог. Однак деякі витоки конфіденційності все ще існують. Чарлі може знати, що хтось має баланс 164 ETH, що сума балансів двох користувачів становить 70 ETH тощо. Зловмисник, який контролює багато облікових записів, все одно може дізнатися багато про користувачів біржі.
Тонким, але важливим аспектом цієї схеми є можливість негативного балансу: що, якщо біржа з клієнтським балансом 1390 ETH має в резерві лише 890 ETH і намагається покрити дефіцит, додавши баланс -500 ETH на фіктивний рахунок у дерево? Виявляється, ця можливість не порушує схему, хоча саме для цього нам потрібні дерева сум Merkle замість звичайних дерев Merkle. Припустімо, що Генрі є фіктивним обліковим записом, який контролюється біржею, де розміщено -500 ETH.
Перевірка доказів Грети не вдасться: біржа повинна буде запропонувати вузол Генрі -500 ETH, який вона відхилить, оскільки він недійсний. Перевірка Єви та Фреда також не вдасться, оскільки загальний ETH на проміжних вузлах над Генрі становить -230, що також робить їх недійсними! Щоб уникнути крадіжки, біржі доведеться сподіватися, що ніхто з правої половини всього дерева не перевірить доказ балансу.
Якщо біржа може ідентифікувати користувачів, які коштують 500 ETH, і вони вважають, що ці користувачі або не потрудяться перевірити докази, або їм не повірять, коли вони скаржаться на те, що вони не отримають докази, тоді біржа може впевнено уникнути покарання за крадіжку. Однак обмін також може досягти того самого ефекту, виключивши цих користувачів із дерева.
Таким чином, для єдиної мети демонстрації підтвердження зобов’язань технологія дерева Merkle по суті така ж хороша, як і схема підтвердження зобов’язань. Але його атрибути конфіденційності все ще не ідеальні. Ви можете використовувати дерева Merkle більш розумно, наприклад, зробивши кожен satoshi або wei окремим листком, але зрештою, з більш сучасними методами, є кращі способи досягти цього.
ZK-SNARK — це потужна технологія, потенційно для криптографії те, що перетворювачі для штучного інтелекту: універсальна потужна технологія, яка повністю долає безліч проблем у конкретних технологіях, розроблених десятиліттями тому. Природно, ми можемо використовувати ZK-SNARK для значного спрощення та підвищення конфіденційності в протоколах підтвердження відповідальності.
Найпростіше, що ми можемо зробити, це помістити всі депозити користувачів у дерево Merkle (або, простіше кажучи, зобов’язання KZG) і використати ZK-SNARK, щоб довести, що всі баланси в дереві є невід’ємними та разом складають заявлену вартість . Додавання рівня хешування для конфіденційності, надання кожному користувачеві філії Merkle (або підтвердження KZG) не розкриє баланси інших користувачів.
Використання зобов’язань KZG — це спосіб уникнути витоків конфіденційності, оскільки це усуває необхідність надавати «супутні вузли» як доказ. Простий ZK-SNARK можна використовувати для підтвердження суми балансів і того, що кожен баланс є невід’ємним. Для підтвердження суми та невід’ємності залишків у вищезгаданих КЗГ ми можемо використовувати спеціалізований ЗК-СНАРК. Ось простий приклад, який досягає цього. Ми вводимо допоміжний поліном, який «встановлює біти кожного балансу» (для ілюстрації припустімо, що баланси знаходяться в межах ), і кожні 16 позицій відстежують поточну суму зі зміщенням, тому сума дорівнює нулю лише тоді, коли фактична сума дорівнює відповідає заявленій сумі. Якщо z -128-й корінь з одиниці, ми можемо довести наступне рівняння.
Перше значення в ефективній установці 0 0 0 0 0 0 0 0 0 0 1 2 5 10 20 -165 0 0 0 0 0 0 0 0 1 3 6 12 25 50 -300… Щоб зрозуміти, як такі рівняння можна перетворити у поліноміальні перевірки, а потім у ZK-SNARK, зверніться до моєї статті про ZK-SNARK для подальших пояснень тут і тут . Незважаючи на те, що протокол не є оптимальним, він справді демонструє, що криптографічні докази такого типу сьогодні не такі загадкові!
За допомогою лише кількох додаткових формул такі системи обмежень можна адаптувати до більш складних сценаріїв. Наприклад, у торговій системі з кредитним плечем прийнятно мати від’ємний баланс для окремих користувачів за умови, що вони мають достатню кількість інших активів для покриття коштів під певну заставу. SNARK можна використовувати для підтвердження цього більш складного обмеження, запевняючи користувачів, що біржа не ризикуватиме їхніми коштами, таємно звільняючи інших користувачів від правил.
У довгостроковій перспективі цей тип підтвердження заборгованості ZK потенційно може використовуватися не лише для депозитів клієнтів на біржах, але й для ширшого спектру позик. Кожного разу, коли хтось бере позику, вона поміщає запис у поліном або дерево, що містить цю позику, з коренем цієї структури, що публікується в ланцюжку. Це дозволить будь-кому, хто шукає позику, надати кредиторам ZK докази того, що вони не позичили занадто багато за рахунок інших позик. Зрештою, юридичні нововведення можуть навіть зробити позики, надані таким чином, вищим пріоритетом, ніж позики без зобов’язань. Це веде нас у тому ж напрямку, що й ідея, розглянута в « Децентралізоване суспільство: пошук душі Web3 »: створення концепції негативної репутації або застави в ланцюжку через певну форму «токена, пов’язаного з душею».
Найпростішою версією підтвердження активів є протокол, який ми бачили вище: щоб підтвердити, що у вас є X монет, вам просто потрібно перемістити X монет у заздалегідь узгоджений час або в транзакції, яка містить повідомлення «Ці кошти належать Binance» у своєму полі даних. Щоб уникнути комісії за транзакції, ви можете підписати повідомлення поза мережею; і біткойн, і ефіріум мають стандарти для повідомлень підпису поза мережею.
Цей простий метод підтвердження активів має дві практичні проблеми:
Обробка «холодного зберігання».
Подвійне використання застави.
З міркувань безпеки більшість бірж зберігають більшість коштів своїх клієнтів у «холодному сховищі»: на автономних комп’ютерах, де транзакції потрібно підписувати вручну та передавати в Інтернет. Налаштування холодного сховища, яке я колись використовував для особистих коштів, передбачало постійний офлайн-комп’ютер, який генерував QR-код із підписаною транзакцією, який я міг сканувати своїм телефоном. Сучасні протоколи обміну є більш складними, часто включають багатосторонні обчислення між кількома пристроями. За таких налаштувань навіть додаткове повідомлення для підтвердження контролю над адресою є дорогою операцією!
Трансакція може проходити кількома шляхами:
Підтримуйте кілька загальнодоступних довгострокових адрес. Біржа генерує кілька адрес, публікує підтвердження права власності на кожну один раз, а потім повторно використовує ці адреси. Це, безумовно, найпростіша схема, хоча вона додає деякі обмеження щодо захисту безпеки та конфіденційності.
Встановіть багато адрес, довільно перевіривши кілька. Обмін може мати багато адрес, можливо, використовувати кожну лише один раз і видаляти їх після транзакції. У цьому випадку біржа може мати протокол для випадкового вибору кількох адрес, які необхідно «відкрити», щоб підтвердити право власності. Деякі біржі вже зробили щось подібне з аудиторами, але в принципі ця методика може стати повністю автоматизованим процесом.
Більш складні варіанти ЗКП. Наприклад, біржа може встановити всі свої адреси як 1/2 мультипідпису, де ключ кожної адреси є іншим, а інший є сліпою версією якогось «основного» аварійного резервного ключа, який зберігається складним, але дуже безпечним способом, як мультипідпис 12/16. Щоб захистити конфіденційність і уникнути розголошення всього набору адрес, біржа може навіть запустити перевірку нульового знання в блокчейні, підтверджуючи загальний баланс усіх адрес у цьому форматі в ланцюжку.
Ще одним важливим питанням є запобігання подвійному використанню застави. Біржі можуть легко переміщати заставу туди-сюди між собою для підтвердження резерву, вдаючи, що вони платоспроможні, коли такими не є. В ідеалі підтвердження платоспроможності було б у режимі реального часу, оновлюючи підтвердження після кожного блоку. Якщо це не практично, менш ідеальним варіантом є узгодження фіксованого графіка між різними біржами, наприклад, перевірка резервів щовівторка о 14:00 UTC.
Останнє запитання: чи можемо ми зробити доказ активів у фіатній валюті? Біржі не просто зберігають криптовалюти; вони також зберігають фіатні валюти в банківській системі. Тут відповідь: так, але такий процес неминуче покладатиметься на модель довіри «fiat»: банк сам може підтвердити баланси, аудитори можуть підтвердити баланси тощо. Враховуючи, що fiat не можна перевірити криптографічно, це найкраще, що можна зробити в цих рамках, але це все одно варто зробити.
Інший підхід полягає в тому, щоб чітко відокремити юридичну особу, яка керує біржею та оперує стейблкойнами, забезпеченими активами, такими як USDC, від іншої організації, яка керує процесом надходження та відтоку готівки між криптовалютами та традиційною банківською системою (власне USDC). Оскільки «зобов’язання» USDC — це лише вбудовані токени ERC20, підтвердження зобов’язань є «безкоштовним», потрібне лише підтвердження активів.
Припустімо, ми хочемо піти далі: ми не просто хочемо довести, що біржа має кошти для повернення грошей користувачів. Натомість ми хочемо повністю запобігти біржі від крадіжки коштів користувачів.
Першою великою спробою в цьому відношенні була Plasma, розширене рішення, популярне серед дослідницької спільноти Ethereum у 2017 та 2018 роках. Плазма працює шляхом поділу балансу на набір окремих «монет», кожній з яких присвоєно індекс і розташовано в певній позиції в дереві Merkle блоку Plasma. Дійсний переказ монети вимагає розміщення транзакції в правильному місці в дереві, при цьому корінь дерева буде опубліковано в ланцюжку.
Спрощена схема версії Плазми. Монети зберігаються в смарт-контракті, а правила протоколу Plasma примусово виконуються під час виведення коштів.
OmiseGo намагалися побудувати децентралізований обмін на цьому протоколі, але з тих пір вони перейшли до інших ідей. У зв’язку з цим сама група Plasma також еволюціонувала, тепер ставши проектом Optimism, зосередженим на оптимістичних зведеннях EVM.
Технологічні обмеження Plasma, задумані в 2018 році (такі як доказ дроблення монет), не варті уваги. Після піку дискурсу Plasma у 2018 році ZK-SNARK стали більш життєздатними у випадках використання, пов’язаних із розширенням. Як згадувалося раніше, ZK-SNARK змінили все.
Більш сучасна версія концепції Plasma — це те, що Starkware називає валідіумом: по суті те саме, що й ZK-rollup, за винятком того, що дані зберігаються поза мережею. Цю структуру можна використовувати для багатьох випадків використання, зокрема, коли централізований сервер повинен запустити певний код і підтвердити його правильне виконання. У валідіумі оператори не можуть викрасти кошти, хоча, залежно від деталей реалізації, деякі кошти користувача можуть застрягти, якщо оператор зникне.
Все це дуже багатообіцяюче: відносини між CEX і DEX далекі від бінарної опозиції. Насправді існує цілий спектр варіантів, включаючи різні форми гібридної централізації, де ви можете насолоджуватися такими перевагами, як ефективність, водночас маючи численні криптографічні засоби захисту, щоб запобігти централізованим операторам від більшості форм зловживань.
Однак у правій половині цього простору дизайну необхідно обговорити фундаментальне питання: обробку помилок користувача. Наразі найбільш критичний тип помилки: що робити, якщо користувачі забули свої паролі, втратили свої пристрої, їх зламали або іншим чином втратили доступ до своїх облікових записів?
Біржі можуть вирішити цю проблему: спочатку за допомогою відновлення електронної пошти, а якщо це не вдається, за допомогою більш складних форм відновлення через KYC. Однак, щоб мати можливість вирішити такі проблеми, біржі повинні мати фактичний контроль над монетами. Щоб мати можливість правомірно відновити доступ до облікових записів користувачів, біржі повинні мати повноваження, якими можна також зловживати для викрадення коштів із цих облікових записів. Це неминучий компроміс.
Ідеальне довгострокове рішення покладається на самоохорону, доповнену такими технологіями, як мультипідписи та гаманці соціального відновлення, щоб допомогти користувачам впоратися з надзвичайними ситуаціями. Але в короткостроковій перспективі є два очевидних альтернативних рішення, кожне з яких має чітко різні витрати та вигоди.
У короткостроковій перспективі існують дві різні категорії обмінів: кастодіальні та некастодіальні. Сьогодні останній представлений такими DEX, як Uniswap. У майбутньому ми також можемо побачити криптографічно «обмежені» CEX, де кошти користувачів зберігаються в чомусь схожому на валідіумний смарт-контракт. Ми також можемо стати свідками появи напівкастодіальних бірж, де ми довіряємо їм фіат, а не криптовалюту.
Обидва типи бірж існуватимуть і надалі. Найпростіший із зворотною сумісністю спосіб підвищити безпеку кастодіальних обмінів — збільшити доказ резервів. Це передбачає поєднання доказів активів і доказів відповідальності. Розробка добре структурованих протоколів для обох представляє технічні проблеми, але ми повинні досягти якомога більшого прогресу в обох сферах і відкрити програмне забезпечення та процеси, щоб усі обміни могли отримати вигоду.
У довгостроковій перспективі, я сподіваюся, ми все більше рухатимемося до того, що всі біржі будуть некастодіальними, принаймні з точки зору криптовалюти. Відновлення гаманця доступне для нових користувачів, які мають справу з невеликими сумами, і для установ, яким потрібні такі домовленості з юридичних причин. Можуть знадобитися високо централізовані варіанти відновлення, але це можна зробити на рівні гаманця, а не на самій біржі. Те, як magic.link взаємодіє з такими платформами, як Polymarket, є прикладом цього підходу. З точки зору фіату, потік між традиційною банківською системою та крипто-екосистемою може сприятися локальним процесам надходження/відтоку готівки для забезпечених активами стабільних монет, таких як USDC. Однак для повного досягнення цієї мети знадобиться деякий час.
Особлива подяка Баладжі Срінівасану, а також співробітникам Coinbase, Kraken і Binance за їх обговорення.
Щоразу, коли значна централізована біржа руйнується, виникає загальне запитання: чи можемо ми використати криптографічну технологію для вирішення проблеми? Біржі могли б створювати криптографічні докази того, що коштів, які вони зберігають у ланцюжку, достатньо для покриття своїх зобов’язань перед користувачами, замість того, щоб просто покладатися на «законні» методи, такі як державні дозволи, аудиторські перевірки та перевірка особистого досвіду тих, хто керує та керує компанією. обмін. Біржі можуть створити систему, за якої принципово неможливо вивести кошти вкладників без їхньої згоди. Потенційно ми могли б вивчити весь спектр між амбітними, доброзичливими CEX, які «не роблять поганих речей», і мережевими DEX, які «не можуть робити поганих речей», але наразі неефективні та порушують конфіденційність. У цій статті ми розповімо про історичні спроби зробити транзакції ближчими до бездовірних, обмеження цих технологій і деякі новіші, потужніші ідеї з використанням ZK-SNARK та інших передових технологій.
Найдавніші спроби бірж використовувати криптографічні методи, щоб довести, що вони не обманюють своїх користувачів, можна відстежити дуже давно. У 2011 році найбільша на той час біткойн-біржа MtGox довела, що має кошти, переказавши 424 242 BTC на заздалегідь оголошену адресу. У 2013 році почалися дискусії про те, як довести іншу сторону рівняння: загальний розмір депозитів клієнтів. Якщо ви підтвердите, що депозити клієнтів дорівнюють X («доказ відповідальності») і підтвердите право власності на приватні ключі для монет X («доказ активів»), у вас є підтвердження платоспроможності: ви показали, що біржа має кошти для погашення всіх вкладники.
Найпростішим методом підтвердження депозитів була публікація списку пар (ім’я користувача, баланс). Кожен користувач міг перевірити, чи включено його баланс, і будь-хто міг перевірити весь список, щоб переконатися, що (i) кожен баланс є невід’ємним, і (ii) загальна сума дорівнює заявленій сумі. Однак це порушує конфіденційність, тому можна внести невеликі зміни: опублікувати список пар (хеш (ім’я користувача, сіль), баланс) і приватно надіслати кожному користувачеві значення солі. Але навіть це призводить до витоку інформації про баланс і моделей змін балансу. Бажання захистити конфіденційність приводить нас до наступного винаходу: технології дерева Меркла (також відомого як хеш-дерево).
Зелений: вузол Чарлі. Синій: вузол Девіда, який також є вузлом, який Чарлі отримає як частину свого доказу. Жовтий: кореневий вузол, загальнодоступний для всіх.
Технологія дерева Merkle передбачає розміщення балансу клієнта в дереві сум Merkle. У цьому дереві кожен вузол є парою (баланс, хеш). Листові вузли нижнього рівня представляють баланси окремих клієнтів і хеш-значення їхніх імен користувачів. У кожному вузлі вищого рівня баланс є сумою двох балансів нижче, а хеш-значення є хешем двох вузлів нижче. Доказ суми Меркла, як і доказ Меркла, є «гілкою» дерева, що складається з однорідних вузлів на шляху від листа до кореня.
Біржі надсилають кожному користувачеві суму Merkle, що підтверджує його баланс, щоб підтвердити свої активи. Тоді користувачі мають впевненість, що їхній баланс правильно включено до загальної суми. Простий приклад коду можна знайти тут.
Витік конфіденційності в цьому дизайні набагато нижчий, ніж у повністю загальнодоступному списку, і може бути додатково зменшений шляхом перемішування гілок щоразу, коли публікується кореневий каталог. Однак деякі витоки конфіденційності все ще існують. Чарлі може знати, що хтось має баланс 164 ETH, що сума балансів двох користувачів становить 70 ETH тощо. Зловмисник, який контролює багато облікових записів, все одно може дізнатися багато про користувачів біржі.
Тонким, але важливим аспектом цієї схеми є можливість негативного балансу: що, якщо біржа з клієнтським балансом 1390 ETH має в резерві лише 890 ETH і намагається покрити дефіцит, додавши баланс -500 ETH на фіктивний рахунок у дерево? Виявляється, ця можливість не порушує схему, хоча саме для цього нам потрібні дерева сум Merkle замість звичайних дерев Merkle. Припустімо, що Генрі є фіктивним обліковим записом, який контролюється біржею, де розміщено -500 ETH.
Перевірка доказів Грети не вдасться: біржа повинна буде запропонувати вузол Генрі -500 ETH, який вона відхилить, оскільки він недійсний. Перевірка Єви та Фреда також не вдасться, оскільки загальний ETH на проміжних вузлах над Генрі становить -230, що також робить їх недійсними! Щоб уникнути крадіжки, біржі доведеться сподіватися, що ніхто з правої половини всього дерева не перевірить доказ балансу.
Якщо біржа може ідентифікувати користувачів, які коштують 500 ETH, і вони вважають, що ці користувачі або не потрудяться перевірити докази, або їм не повірять, коли вони скаржаться на те, що вони не отримають докази, тоді біржа може впевнено уникнути покарання за крадіжку. Однак обмін також може досягти того самого ефекту, виключивши цих користувачів із дерева.
Таким чином, для єдиної мети демонстрації підтвердження зобов’язань технологія дерева Merkle по суті така ж хороша, як і схема підтвердження зобов’язань. Але його атрибути конфіденційності все ще не ідеальні. Ви можете використовувати дерева Merkle більш розумно, наприклад, зробивши кожен satoshi або wei окремим листком, але зрештою, з більш сучасними методами, є кращі способи досягти цього.
ZK-SNARK — це потужна технологія, потенційно для криптографії те, що перетворювачі для штучного інтелекту: універсальна потужна технологія, яка повністю долає безліч проблем у конкретних технологіях, розроблених десятиліттями тому. Природно, ми можемо використовувати ZK-SNARK для значного спрощення та підвищення конфіденційності в протоколах підтвердження відповідальності.
Найпростіше, що ми можемо зробити, це помістити всі депозити користувачів у дерево Merkle (або, простіше кажучи, зобов’язання KZG) і використати ZK-SNARK, щоб довести, що всі баланси в дереві є невід’ємними та разом складають заявлену вартість . Додавання рівня хешування для конфіденційності, надання кожному користувачеві філії Merkle (або підтвердження KZG) не розкриє баланси інших користувачів.
Використання зобов’язань KZG — це спосіб уникнути витоків конфіденційності, оскільки це усуває необхідність надавати «супутні вузли» як доказ. Простий ZK-SNARK можна використовувати для підтвердження суми балансів і того, що кожен баланс є невід’ємним. Для підтвердження суми та невід’ємності залишків у вищезгаданих КЗГ ми можемо використовувати спеціалізований ЗК-СНАРК. Ось простий приклад, який досягає цього. Ми вводимо допоміжний поліном, який «встановлює біти кожного балансу» (для ілюстрації припустімо, що баланси знаходяться в межах ), і кожні 16 позицій відстежують поточну суму зі зміщенням, тому сума дорівнює нулю лише тоді, коли фактична сума дорівнює відповідає заявленій сумі. Якщо z -128-й корінь з одиниці, ми можемо довести наступне рівняння.
Перше значення в ефективній установці 0 0 0 0 0 0 0 0 0 0 1 2 5 10 20 -165 0 0 0 0 0 0 0 0 1 3 6 12 25 50 -300… Щоб зрозуміти, як такі рівняння можна перетворити у поліноміальні перевірки, а потім у ZK-SNARK, зверніться до моєї статті про ZK-SNARK для подальших пояснень тут і тут . Незважаючи на те, що протокол не є оптимальним, він справді демонструє, що криптографічні докази такого типу сьогодні не такі загадкові!
За допомогою лише кількох додаткових формул такі системи обмежень можна адаптувати до більш складних сценаріїв. Наприклад, у торговій системі з кредитним плечем прийнятно мати від’ємний баланс для окремих користувачів за умови, що вони мають достатню кількість інших активів для покриття коштів під певну заставу. SNARK можна використовувати для підтвердження цього більш складного обмеження, запевняючи користувачів, що біржа не ризикуватиме їхніми коштами, таємно звільняючи інших користувачів від правил.
У довгостроковій перспективі цей тип підтвердження заборгованості ZK потенційно може використовуватися не лише для депозитів клієнтів на біржах, але й для ширшого спектру позик. Кожного разу, коли хтось бере позику, вона поміщає запис у поліном або дерево, що містить цю позику, з коренем цієї структури, що публікується в ланцюжку. Це дозволить будь-кому, хто шукає позику, надати кредиторам ZK докази того, що вони не позичили занадто багато за рахунок інших позик. Зрештою, юридичні нововведення можуть навіть зробити позики, надані таким чином, вищим пріоритетом, ніж позики без зобов’язань. Це веде нас у тому ж напрямку, що й ідея, розглянута в « Децентралізоване суспільство: пошук душі Web3 »: створення концепції негативної репутації або застави в ланцюжку через певну форму «токена, пов’язаного з душею».
Найпростішою версією підтвердження активів є протокол, який ми бачили вище: щоб підтвердити, що у вас є X монет, вам просто потрібно перемістити X монет у заздалегідь узгоджений час або в транзакції, яка містить повідомлення «Ці кошти належать Binance» у своєму полі даних. Щоб уникнути комісії за транзакції, ви можете підписати повідомлення поза мережею; і біткойн, і ефіріум мають стандарти для повідомлень підпису поза мережею.
Цей простий метод підтвердження активів має дві практичні проблеми:
Обробка «холодного зберігання».
Подвійне використання застави.
З міркувань безпеки більшість бірж зберігають більшість коштів своїх клієнтів у «холодному сховищі»: на автономних комп’ютерах, де транзакції потрібно підписувати вручну та передавати в Інтернет. Налаштування холодного сховища, яке я колись використовував для особистих коштів, передбачало постійний офлайн-комп’ютер, який генерував QR-код із підписаною транзакцією, який я міг сканувати своїм телефоном. Сучасні протоколи обміну є більш складними, часто включають багатосторонні обчислення між кількома пристроями. За таких налаштувань навіть додаткове повідомлення для підтвердження контролю над адресою є дорогою операцією!
Трансакція може проходити кількома шляхами:
Підтримуйте кілька загальнодоступних довгострокових адрес. Біржа генерує кілька адрес, публікує підтвердження права власності на кожну один раз, а потім повторно використовує ці адреси. Це, безумовно, найпростіша схема, хоча вона додає деякі обмеження щодо захисту безпеки та конфіденційності.
Встановіть багато адрес, довільно перевіривши кілька. Обмін може мати багато адрес, можливо, використовувати кожну лише один раз і видаляти їх після транзакції. У цьому випадку біржа може мати протокол для випадкового вибору кількох адрес, які необхідно «відкрити», щоб підтвердити право власності. Деякі біржі вже зробили щось подібне з аудиторами, але в принципі ця методика може стати повністю автоматизованим процесом.
Більш складні варіанти ЗКП. Наприклад, біржа може встановити всі свої адреси як 1/2 мультипідпису, де ключ кожної адреси є іншим, а інший є сліпою версією якогось «основного» аварійного резервного ключа, який зберігається складним, але дуже безпечним способом, як мультипідпис 12/16. Щоб захистити конфіденційність і уникнути розголошення всього набору адрес, біржа може навіть запустити перевірку нульового знання в блокчейні, підтверджуючи загальний баланс усіх адрес у цьому форматі в ланцюжку.
Ще одним важливим питанням є запобігання подвійному використанню застави. Біржі можуть легко переміщати заставу туди-сюди між собою для підтвердження резерву, вдаючи, що вони платоспроможні, коли такими не є. В ідеалі підтвердження платоспроможності було б у режимі реального часу, оновлюючи підтвердження після кожного блоку. Якщо це не практично, менш ідеальним варіантом є узгодження фіксованого графіка між різними біржами, наприклад, перевірка резервів щовівторка о 14:00 UTC.
Останнє запитання: чи можемо ми зробити доказ активів у фіатній валюті? Біржі не просто зберігають криптовалюти; вони також зберігають фіатні валюти в банківській системі. Тут відповідь: так, але такий процес неминуче покладатиметься на модель довіри «fiat»: банк сам може підтвердити баланси, аудитори можуть підтвердити баланси тощо. Враховуючи, що fiat не можна перевірити криптографічно, це найкраще, що можна зробити в цих рамках, але це все одно варто зробити.
Інший підхід полягає в тому, щоб чітко відокремити юридичну особу, яка керує біржею та оперує стейблкойнами, забезпеченими активами, такими як USDC, від іншої організації, яка керує процесом надходження та відтоку готівки між криптовалютами та традиційною банківською системою (власне USDC). Оскільки «зобов’язання» USDC — це лише вбудовані токени ERC20, підтвердження зобов’язань є «безкоштовним», потрібне лише підтвердження активів.
Припустімо, ми хочемо піти далі: ми не просто хочемо довести, що біржа має кошти для повернення грошей користувачів. Натомість ми хочемо повністю запобігти біржі від крадіжки коштів користувачів.
Першою великою спробою в цьому відношенні була Plasma, розширене рішення, популярне серед дослідницької спільноти Ethereum у 2017 та 2018 роках. Плазма працює шляхом поділу балансу на набір окремих «монет», кожній з яких присвоєно індекс і розташовано в певній позиції в дереві Merkle блоку Plasma. Дійсний переказ монети вимагає розміщення транзакції в правильному місці в дереві, при цьому корінь дерева буде опубліковано в ланцюжку.
Спрощена схема версії Плазми. Монети зберігаються в смарт-контракті, а правила протоколу Plasma примусово виконуються під час виведення коштів.
OmiseGo намагалися побудувати децентралізований обмін на цьому протоколі, але з тих пір вони перейшли до інших ідей. У зв’язку з цим сама група Plasma також еволюціонувала, тепер ставши проектом Optimism, зосередженим на оптимістичних зведеннях EVM.
Технологічні обмеження Plasma, задумані в 2018 році (такі як доказ дроблення монет), не варті уваги. Після піку дискурсу Plasma у 2018 році ZK-SNARK стали більш життєздатними у випадках використання, пов’язаних із розширенням. Як згадувалося раніше, ZK-SNARK змінили все.
Більш сучасна версія концепції Plasma — це те, що Starkware називає валідіумом: по суті те саме, що й ZK-rollup, за винятком того, що дані зберігаються поза мережею. Цю структуру можна використовувати для багатьох випадків використання, зокрема, коли централізований сервер повинен запустити певний код і підтвердити його правильне виконання. У валідіумі оператори не можуть викрасти кошти, хоча, залежно від деталей реалізації, деякі кошти користувача можуть застрягти, якщо оператор зникне.
Все це дуже багатообіцяюче: відносини між CEX і DEX далекі від бінарної опозиції. Насправді існує цілий спектр варіантів, включаючи різні форми гібридної централізації, де ви можете насолоджуватися такими перевагами, як ефективність, водночас маючи численні криптографічні засоби захисту, щоб запобігти централізованим операторам від більшості форм зловживань.
Однак у правій половині цього простору дизайну необхідно обговорити фундаментальне питання: обробку помилок користувача. Наразі найбільш критичний тип помилки: що робити, якщо користувачі забули свої паролі, втратили свої пристрої, їх зламали або іншим чином втратили доступ до своїх облікових записів?
Біржі можуть вирішити цю проблему: спочатку за допомогою відновлення електронної пошти, а якщо це не вдається, за допомогою більш складних форм відновлення через KYC. Однак, щоб мати можливість вирішити такі проблеми, біржі повинні мати фактичний контроль над монетами. Щоб мати можливість правомірно відновити доступ до облікових записів користувачів, біржі повинні мати повноваження, якими можна також зловживати для викрадення коштів із цих облікових записів. Це неминучий компроміс.
Ідеальне довгострокове рішення покладається на самоохорону, доповнену такими технологіями, як мультипідписи та гаманці соціального відновлення, щоб допомогти користувачам впоратися з надзвичайними ситуаціями. Але в короткостроковій перспективі є два очевидних альтернативних рішення, кожне з яких має чітко різні витрати та вигоди.
У короткостроковій перспективі існують дві різні категорії обмінів: кастодіальні та некастодіальні. Сьогодні останній представлений такими DEX, як Uniswap. У майбутньому ми також можемо побачити криптографічно «обмежені» CEX, де кошти користувачів зберігаються в чомусь схожому на валідіумний смарт-контракт. Ми також можемо стати свідками появи напівкастодіальних бірж, де ми довіряємо їм фіат, а не криптовалюту.
Обидва типи бірж існуватимуть і надалі. Найпростіший із зворотною сумісністю спосіб підвищити безпеку кастодіальних обмінів — збільшити доказ резервів. Це передбачає поєднання доказів активів і доказів відповідальності. Розробка добре структурованих протоколів для обох представляє технічні проблеми, але ми повинні досягти якомога більшого прогресу в обох сферах і відкрити програмне забезпечення та процеси, щоб усі обміни могли отримати вигоду.
У довгостроковій перспективі, я сподіваюся, ми все більше рухатимемося до того, що всі біржі будуть некастодіальними, принаймні з точки зору криптовалюти. Відновлення гаманця доступне для нових користувачів, які мають справу з невеликими сумами, і для установ, яким потрібні такі домовленості з юридичних причин. Можуть знадобитися високо централізовані варіанти відновлення, але це можна зробити на рівні гаманця, а не на самій біржі. Те, як magic.link взаємодіє з такими платформами, як Polymarket, є прикладом цього підходу. З точки зору фіату, потік між традиційною банківською системою та крипто-екосистемою може сприятися локальним процесам надходження/відтоку готівки для забезпечених активами стабільних монет, таких як USDC. Однак для повного досягнення цієї мети знадобиться деякий час.
Особлива подяка Баладжі Срінівасану, а також співробітникам Coinbase, Kraken і Binance за їх обговорення.