Виталик: Как централизованные биржи могут доказать свои средства?

СреднийDec 04, 2023
В этой статье рассматриваются исторические попытки сделать транзакции более близкими к бездоверию, ограничения этих технологий, а также некоторые новые, более мощные идеи с использованием ZK-SNARK и других передовых технологий.
Виталик: Как централизованные биржи могут доказать свои средства?

Всякий раз, когда рушится значительная централизованная биржа, возникает распространенный вопрос: можем ли мы использовать криптографические технологии для решения этой проблемы? Биржи могли бы создавать криптографические доказательства того, что средств, которые они хранят в цепи, достаточно для покрытия своих обязательств перед пользователями, вместо того, чтобы полагаться на такие "законные" методы, как правительственные разрешения, проверки аудиторов и проверка личных данных тех, кто управляет и работает на бирже. Биржи могли бы создать систему, в которой было бы принципиально невозможно снять средства вкладчиков без их согласия. Потенциально мы могли бы исследовать весь спектр между амбициозными, добросердечными CEX, которые "не делают плохих вещей", и внутрицепочечными DEX, которые "не могут делать плохих вещей", но в настоящее время неэффективны и утекают в конфиденциальность. В этой статье мы рассмотрим исторические попытки сделать транзакции более близкими к бездоверию, ограничения этих технологий, а также некоторые новые, более мощные идеи, использующие ZK-SNARK и другие передовые технологии.

Балансовые ведомости и деревья Меркла: Старое доказательство платежеспособности

Первые попытки бирж использовать криптографические методы для доказательства того, что они не обманывают своих пользователей, можно проследить очень давно. В 2011 году крупнейшая на тот момент Биткойн-биржа MtGox доказала, что у нее есть средства, переведя 424242 BTC на заранее объявленный адрес. В 2013 году начались дискуссии о том, как доказать другую сторону уравнения: общий размер депозитов клиентов. Если Вы докажете, что депозиты клиентов равны X ("доказательство ответственности"), и докажете право собственности на закрытые ключи для монет X ("доказательство активов"), у Вас будет доказательство платежеспособности: Вы показали, что у биржи есть средства для выплаты всем вкладчикам.

Самым простым методом доказательства вкладов была публикация списка пар (имя пользователя, баланс). Каждый пользователь может проверить, включен ли его баланс, и любой может проверить весь список, чтобы убедиться, что (i) каждый баланс неотрицателен и (ii) общая сумма равна заявленной. Однако это нарушает конфиденциальность, поэтому можно внести небольшие изменения: опубликуйте список пар (хэш(имя пользователя, соль), баланс) и приватно отправьте каждому пользователю его значение соли. Но даже при этом происходит утечка информации о балансе, и паттерны изменения баланса меняются. Желание защитить конфиденциальность подводит нас к следующему изобретению: Технология дерева Меркла (также известная как хэш-дерево).

Зеленый: Узел Чарли. Синий: Узел Дэвида, который также является узлом, который Чарли получит в качестве части своего доказательства. Желтый: Корневой узел, публично отображаемый для всех.

Технология дерева Меркле предполагает размещение баланса клиента в дереве сумм Меркле. В этом дереве каждый узел представляет собой пару (баланс, хэш). Листовые узлы нижнего уровня представляют балансы отдельных клиентов и соленые хэш-значения их имен пользователей. В каждом узле верхнего уровня баланс является суммой двух балансов ниже, а хэш-значение - хэшем двух узлов ниже. Доказательство суммы Меркла, как и доказательство Меркла, представляет собой "ветвь" дерева, состоящую из узлов-близнецов на пути от листа к корню.

Биржи отправляют каждому пользователю доказательство суммы Меркла, чтобы подтвердить его баланс. Пользователи могут быть уверены, что их баланс правильно включен в общую сумму. Простой пример кода можно найти здесь.

Утечка конфиденциальной информации в этой конструкции гораздо меньше, чем в полностью публичном списке, и может быть еще больше уменьшена за счет перетасовки ветвей при каждой публикации корня. Тем не менее, некоторая утечка конфиденциальной информации все еще существует. Чарли может знать, что у кого-то на балансе 164 ETH, что сумма балансов двух пользователей составляет 70 ETH и т.д. Злоумышленник, контролирующий множество учетных записей, все равно может многое узнать о пользователях биржи.

Тонкий, но важный аспект этой схемы - возможность отрицательных балансов: Что если у биржи с клиентским балансом в 1390 ETH в резерве есть только 890 ETH, и она пытается покрыть недостачу, добавив баланс в -500 ETH на фиктивный счет в дереве? Оказалось, что такая возможность не нарушает схему, хотя именно поэтому нам нужны деревья сумм Меркле, а не обычные деревья Меркле. Предположим, что Henry - это фиктивный счет, контролируемый биржей, на котором размещено -500 ETH.

Проверка доказательства Греты провалится: биржа должна будет предложить ей узел Генри -500 ETH, который она отвергнет, поскольку он недействителен. Проверка Евы и Фреда также не будет успешной, поскольку общее количество ETH на промежуточных узлах над Генри составляет -230, что делает их тоже недействительными! Чтобы избежать кражи, бирже придется надеяться, что никто на правой половине всего дерева не проверит доказательства баланса.

Если биржа может определить пользователей стоимостью 500ETH и считает, что эти пользователи либо не потрудятся проверить доказательства, либо им не поверят, когда они пожалуются на то, что никогда не получали доказательств, то биржа может уверенно избежать наказания за воровство. Однако биржа может добиться того же эффекта, исключив этих пользователей из дерева.

Таким образом, для единственной цели демонстрации доказательства обязательств технология дерева Меркла по сути не уступает схеме доказательства обязательств. Но его характеристики конфиденциальности все еще не идеальны. Вы можете использовать деревья Меркла более умно, например, сделав каждый сатоши или вэй отдельным листом, но, в конечном счете, с помощью более современных методов есть лучшие способы достичь этого.

Улучшение конфиденциальности и надежности с помощью ZK-SNARK

ZK-SNARK - это мощная технология, потенциально являющаяся для криптографии тем же, чем трансформеры являются для искусственного интеллекта: универсальная мощная технология, которая полностью преодолевает множество проблем в конкретных технологиях, разработанных десятилетия назад. Естественно, мы можем использовать ZK-SNARK для значительного упрощения и повышения конфиденциальности в протоколах доказательства ответственности.

Самое простое, что мы можем сделать, это поместить все депозиты пользователей в дерево Меркле (или, проще говоря, KZG-обязательство) и использовать ZK-SNARK для доказательства того, что все балансы в дереве неотрицательны и в сумме дают заявленное значение. Добавив уровень хэширования для обеспечения конфиденциальности, дайте каждому пользователю ветвь Меркла (или KZG-доказательство), которая не раскроет балансы других пользователей.

Использование обязательств KZG - это метод, позволяющий избежать утечки конфиденциальной информации, поскольку он избавляет от необходимости предоставлять "узлы-сестры" в качестве доказательства. Простой ZK-SNARK может быть использован для доказательства суммы остатков и того, что каждый остаток неотрицателен. Мы можем использовать специализированный ZK-SNARK для доказательства суммы и неотрицательности остатков в вышеупомянутом KZG. Вот простой пример, в котором это достигается. Мы вводим вспомогательный многочлен, который "устанавливает биты каждого баланса" (для наглядности предположим, что балансы находятся в пределах ), и через каждые 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 1 3 6 12 25 50 -300... Чтобы понять, как такие уравнения можно преобразовать в полиномиальные проверки, а затем в ZK-SNARK, обратитесь к моей статье о ZK-SNARK, более подробное объяснение здесь и здесь . Хотя этот протокол и не является оптимальным, он действительно демонстрирует, что криптографические доказательства такого типа не так уж загадочны в наши дни!

С помощью всего нескольких дополнительных формул такие системы ограничений можно адаптировать к более сложным сценариям. Например, в торговой системе с кредитным плечом допустимо, чтобы отдельные пользователи имели отрицательный баланс, при условии, что у них достаточно других активов, чтобы покрыть средства каким-либо залогом. SNARK может быть использован для доказательства этого более сложного ограничения, гарантируя пользователям, что биржа не будет рисковать их средствами, тайно освобождая других пользователей от выполнения правил.

В долгосрочной перспективе этот вид долгового доказательства ZK потенциально может использоваться не только для депозитов клиентов на биржах, но и для более широкого спектра кредитов. Каждый раз, когда кто-то берет кредит, он вносит запись в многочлен или дерево, содержащее этот кредит, причем корень этой структуры публикуется в цепочке. Это позволит любому человеку, желающему получить кредит, предоставить кредиторам ЗК-доказательство того, что он не занял слишком много по другим кредитам. В конечном счете, законодательные нововведения могут даже привести к тому, что займы, выданные таким образом, будут иметь более высокий приоритет, чем необязательные займы. Это ведет нас в том же направлении, что и идея, обсуждаемая в книге "Децентрализованное общество: Поиск души Web3": создание концепции отрицательной репутации или залога на цепочке через некую форму "привязанного к душе токена".

Доказательство наличия активов

Простейшей версией доказательства наличия активов является протокол, который мы рассмотрели выше: чтобы доказать, что Вы владеете X количеством монет, Вам нужно просто переместить X монет в заранее оговоренное время или в транзакции, которая содержит сообщение "Эти средства принадлежат Binance" в поле данных. Чтобы избежать платы за транзакцию, Вы можете подписать сообщение вне цепи; и Bitcoin, и Ethereum имеют стандарты для сообщений с подписью вне цепи.

Эта простая техника доказательства активов имеет две практические проблемы:

  1. Обработка "холодного хранения".

  2. Двойное использование залога.

В целях безопасности большинство бирж хранят большую часть средств своих клиентов в "холодном хранилище": на автономных компьютерах, где транзакции должны быть подписаны вручную и переданы в Интернет. Система холодного хранения, которую я когда-то использовал для личных средств, включала в себя постоянно отключенный компьютер, генерирующий QR-код, содержащий подписанную транзакцию, который я мог отсканировать с помощью своего телефона. Современные протоколы обмена более сложны, часто включают в себя многосторонние вычисления между несколькими устройствами. При таких настройках даже дополнительное сообщение для подтверждения контроля над адресом - дорогостоящая операция!

Транзакция может проходить по нескольким путям:

  • Поддерживайте несколько общеизвестных долгосрочных адресов. Биржа генерирует несколько адресов, публикует доказательства владения каждым из них один раз, а затем использует эти адреса повторно. Это, безусловно, самая простая схема, хотя она и накладывает некоторые ограничения на способы защиты безопасности и конфиденциальности.

  • Настройте множество адресов, произвольно выбирая несколько. Биржа может иметь множество адресов, возможно, используя каждый из них только один раз и удаляя их после транзакции. В этом случае биржа может иметь протокол случайного выбора нескольких адресов, которые должны быть "вскрыты" для подтверждения права собственности. Некоторые биржи уже сделали нечто подобное с помощью аудиторов, но в принципе эта техника может стать полностью автоматизированным процессом.

  • Более сложные варианты ZKP. Например, биржа может установить для всех своих адресов мультиподписи 1/2, где для каждого адреса свой ключ, а второй является закрытой версией какого-то "главного" аварийного резервного ключа, хранящегося сложным, но очень безопасным способом, например, мультиподпись 12/16. Чтобы защитить конфиденциальность и избежать раскрытия всего набора адресов, биржа может даже запустить на блокчейне доказательство с нулевым знанием, доказывающее общий баланс всех адресов с данным форматом в цепочке.

Еще одна важная проблема - предотвращение двойного использования обеспечения. Биржи могут легко перебрасывать залоги друг другу и обратно для подтверждения резервов, притворяясь платежеспособными, когда это не так. В идеале, доказательство платежеспособности должно работать в режиме реального времени, обновляя доказательство после каждого блока. Если это нецелесообразно, менее идеальный вариант - согласовать фиксированное расписание между различными биржами, например, предоставлять резервы каждый вторник в 14:00 UTC.

Последний вопрос: можем ли мы сделать доказательство активов на фиатной валюте? Биржи хранят не только криптовалюты; они также хранят фиатные валюты в банковской системе. Здесь ответ: да, но такой процесс неизбежно будет опираться на "фиатную" модель доверия: сам банк может подтвердить балансы, аудиторы могут подтвердить балансовые отчеты и т.д. Учитывая, что фиат не может быть криптографически проверен, это лучшее, что можно сделать в этих рамках, но это все равно стоит сделать.

Другой подход заключается в том, чтобы четко отделить организацию, которая управляет биржей и работает со стабильными монетами, обеспеченными активами, такими как USDC, от другой организации, которая управляет процессом притока и оттока денежных средств между криптовалютами и традиционной банковской системой (сама USDC). Поскольку "обязательства" USDC - это просто токены ERC20 на цепочке, доказательство обязательств "бесплатное", требующее только доказательства активов.

Плазма и валидиум: Можем ли мы сделать CEX беспрепятственными?

Предположим, что мы хотим пойти дальше: мы не просто хотим доказать, что у биржи есть средства для возврата денег пользователей. Вместо этого мы хотим полностью предотвратить кражу биржей средств пользователей.

Первой серьезной попыткой в этом направлении стала Plasma, решение для расширения, популярное в исследовательском сообществе Ethereum в 2017 и 2018 годах. Plasma работает, разбивая баланс на множество отдельных "монет", каждой из которых присваивается индекс и они располагаются в определенной позиции в дереве Меркла блока Plasma. Действительная передача монеты требует размещения транзакции в правильной позиции в дереве, при этом корень дерева публикуется в цепочке.

Упрощенная схема одной из версий Plasma. Монеты хранятся в смарт-контракте, а правила протокола Plasma принудительно выполняются при выводе средств.

Компания OmiseGo пыталась построить децентрализованную биржу на этом протоколе, но с тех пор она переключилась на другие идеи. В связи с этим сама группа Plasma также претерпела изменения и теперь стала проектом Optimism, сосредоточенным на оптимистичных сворачиваниях EVM.

Технологические ограничения Plasma, как они задуманы в 2018 году (например, доказательство фрагментации монет), не стоят внимания. После пика обсуждения Плазмы в 2018 году ZK-SNARK стали более жизнеспособными в случаях использования, связанных с расширением. Как уже говорилось ранее, ZK-SNARK изменили все.

Более современная версия концепции Plasma - это то, что в Starkware называют validium: по сути, то же самое, что и ZK-rollup, за исключением того, что данные хранятся вне цепи. Эта структура может использоваться во многих случаях, в частности, когда централизованный сервер должен запустить некоторый код и доказать его правильное выполнение. В валидиуме операторы не могут украсть средства, хотя, в зависимости от деталей реализации, некоторые средства пользователей могут застрять, если оператор исчезнет.

Все это очень многообещающе: отношения между CEX и DEX далеки от бинарной оппозиции. На самом деле, существует целый спектр вариантов, включая различные формы гибридной централизации, когда Вы можете пользоваться такими преимуществами, как эффективность, и при этом иметь многочисленные криптографические гарантии, предотвращающие централизованные операторы от большинства форм злоупотреблений.

Однако в правой половине этого пространства дизайна необходимо обсудить фундаментальный вопрос: обработку ошибок пользователя. На сегодняшний день наиболее критичным типом ошибок является: Что делать, если пользователи забыли свои пароли, потеряли свои устройства, были взломаны или иным образом потеряли доступ к своим учетным записям?

Биржи могут решить эту проблему: сначала с помощью восстановления по электронной почте, а если это не удается, то с помощью более сложных форм восстановления через KYC. Однако, чтобы решить такие проблемы, биржам необходимо иметь реальный контроль над монетами. Чтобы иметь возможность по праву восстановить доступ к учетным записям пользователей, биржи должны обладать полномочиями, которые также потенциально могут быть использованы для кражи средств с этих счетов. Это неизбежный компромисс.

Идеальное долгосрочное решение основывается на самостоятельном хранении, дополненном такими технологиями, как мультиподпись и кошельки социального восстановления, чтобы помочь пользователям справиться с чрезвычайными ситуациями. Но в краткосрочной перспективе есть два очевидных альтернативных решения, каждое из которых имеет совершенно разные затраты и выгоды.

Заключение: Лучшие биржи в будущем

В краткосрочной перспективе существуют две различные категории обменов: хранимые и нехранимые. Сегодня последний вариант представлен такими DEX, как Uniswap. В будущем мы также можем увидеть криптографически "ограниченные" CEX, где средства пользователей хранятся в чем-то сродни смарт-контракту validium. Возможно, мы также станем свидетелями появления полукустодиальных бирж, где мы доверяем им фиат, а не криптовалюту.

Оба типа бирж будут существовать и дальше. Самый простой, совместимый с обратным ходом событий способ повысить безопасность кастодиальных бирж - это увеличить доказательство резервов. Это подразумевает сочетание подтверждения активов и подтверждения обязательств. Разработка хорошо структурированных протоколов для обоих вариантов представляет собой техническую проблему, но мы должны добиться прогресса в обеих областях, насколько это возможно, и открыть программное обеспечение и процессы, чтобы все биржи могли извлечь выгоду.

В долгосрочной перспективе, я надеюсь, мы все больше будем двигаться в сторону того, чтобы все биржи были необязательными, по крайней мере, в том, что касается криптовалют. Восстановление кошелька будет существовать для новых пользователей, работающих с небольшими суммами, и для учреждений, которым такие меры необходимы по юридическим причинам. Возможно, потребуются высокоцентрализованные варианты восстановления, но это можно сделать на уровне кошелька, а не внутри самой биржи. То, как magic.link взаимодействует с такими платформами, как Polymarket, является примером такого подхода. Что касается фиатных средств, то потоки между традиционной банковской системой и криптоэкосистемой могут быть облегчены местными процессами притока/оттока денежных средств для обеспеченных активами стабильных монет, таких как USDC. Однако полное достижение этой цели займет некоторое время.

Особая благодарность Баладжи Шринивасану, а также сотрудникам Coinbase, Kraken и Binance за их обсуждения.

Отказ от ответственности:

  1. Эта статья перепечатана из[Chaincatcher] . Все авторские права принадлежат оригинальному автору[Виталик]. Если у Вас есть возражения против этой перепечатки, пожалуйста, свяжитесь с командой Gate Learn, и они незамедлительно рассмотрят их.
  2. Предупреждение об ответственности: Мнения и взгляды, выраженные в этой статье, принадлежат исключительно автору и не являются инвестиционным советом.
  3. Перевод статьи на другие языки осуществляется командой Gate Learn. Если не указано, копирование, распространение или плагиат переведенных статей запрещены.
Lancez-vous
Inscrivez-vous et obtenez un bon de
100$
!
Créer un compte