Х правил безопасного CEX-а от Виталика Бутерина
Виталик Бутерин поделился своими идеями о том, почему современные CEX не являются безопасными, и как это исправить.
Услугами обанкротившейся биржи FTX пользовались не только розничные, но и институциональные инвесторы, в частности пенсионные фонды (например, канадский Ontario Teachers' Pension Plan). Поэтому вопросы "Кто виноват?", "Почему так произошло?" и "Как такое не допустить в будущем?" снова стали актуальными.
В своем блоге Виталик Бутерин поделился последствиями очередной CEX-революции и вместе с СТО Coinbase Balaji Srinivasan и другими коллегами "по цеху" с бирж Coinbase, Kraken и Binance подискутировал на тему, каким образом возможно избежать подобных ситуаций в будущем.
Доказательство баланса, плюс возможность регулирования со стороны пользователя
Примеры банкротств Mt. Gox и FTX указывают на то, что искать решений или полагаться исключительно на стандартные подходы, которые могут работать по отношению к банкам или страховым компаниям, нет никакого смысла. Это сфера виртуальных активов и здесь действуют свои правила игры, которые не признают какой-либо централизации или влияния извне. Все государственные лицензии и сертификаты, аудиторские проверки качества корпоративного управления или репутации ТОП-менеджеров не смогут стать эффективными инструментами в сфере децентрализованных финансов и блокчейн-технологий. Лезть со старыми, консервативными методами регуляции в мир цифровых активов и криптовалютного банкинга – это то же самое, что требовать у космических кораблей двигаться в пространстве по правилам гражданской авиации.
Следовательно, эта сфера для решения проблем должна взять на вооружение именно криптографические методы и блокчейн-технологии. Как вариант – биржи могут создавать и публично предоставлять криптографические доказательства, которые смогут в любой момент доказать, что средств, которые они хранят на балансе, хватит для покрытия своих обязательств перед пользователями.
Другой, еще более амбициозный подход, может базироваться на построении биржей такой автоматизированной системы управления ресурсами и финансами, которая бы препятствовала изъятию или нецелевому использованию средств вкладчика без его согласия на то. Это бы позволило создать новый, более справедливый консенсус между «злыми» CEX, которые пытаются только казаться «добрыми», и непопулярными DEX, которые не имеют возможности «быть злыми», но функционируют неэффективно, используя уязвимые смарт-контракты и «дырявые» протоколы.
Списки балансов и деревья Меркла: подтверждение платежеспособности согласно правилам «старой школы»
Первая попытка биржи доказать с помощью блокчейн-технологий, что они не обманывают своих инвесторов, была предпринята еще в 2011 году. Крупнейшая на то время CEX-биржа Mt. Gox доказала наличие средств, отправив транзакцию на 424 242 BTC на заранее объявленный адрес.
В 2013 году начали вестись дискуссии о том, как решить другую проблему: доказать, что общий баланс биржи не меньше общей суммы вкладов инвесторов. Если предоставить доказательства, что сумма всех депозитов пользователей равна X («наличие обязательств»), при этом подтвердив право собственности на частные ключи активов на сумму X («доказательство наличия активов»), тогда это можно считать подтверждением платежеспособности. Таким образом, СЕХ может доказать факт наличия достаточной суммы средств для выплат всем своим инвесторам.
Самый простой способ подтвердить наличие средств – опубликовать список балансов. Это реестр, в котором были бы указаны имена пользователей и балансы их счетов. Каждый пользователь может проверить наличие собственного баланса и общего. Конечно, это определенным образом нарушает конфиденциальность, поэтому следует схему несколько изменить: опубликовать список пар, содержащих только хэш и баланс. Но, даже таким образом, это все равно будет утечкой конфиденциальной информации. Желая сохранить приватность Виталик предлагает прибегнуть к следующему: техники дерева Меркла.
Пример дерева Меркла
Не вдаваясь в описание деталей самой схемы, можно констатировать, что она уменьшает утечку информации до минимума, но уровень конфиденциальности все еще будет неидеальным, а балансы конкретных пользователей – открытыми. В конце концов, есть более совершенные технологии, о которых пойдет речь ниже.
Улучшение конфиденциальности и надежности с помощью ZK-SNARK
ZK-SNARKs -- это мощный криптографический протокол с нулевым разглашением, который защищает приватность. Алгоритм должен обеспечивать корректную работу и правильный ответ без нарушения конфиденциальности пользователя. И поэтому, конечно, мы можем использовать ZK-SNARK для улучшения конфиденциальности в протоколах подтверждения обязательств.
Самое простое, что мы можем сделать, – это поместить все пользовательские депозиты в дерево Меркла и использовать ZK-SNARK, чтобы доказать, что все балансы в дереве являются неотрицательными и равны заявленной стоимости. Если мы добавим уровень хеширования для конфиденциальности, ветка Меркла, предоставленная каждому пользователю, не раскроет ничего о балансе любого другого пользователя.
Пример использования ZK-SNARK
Корень такой структуры может быть даже опубликован в публичном доступе. Такая реализация приближает нас к одной из идей, которая обсуждалась в статье «Децентрализованное общество: поиск души Web3». Как считают ее авторы (среди которых был и Виталик Бутерин), Web3 пока не хватает души, точнее многих душ, соединенных между собой множеством связей. Это и должно стать основой Web3, что, в свою очередь, заложит фундамент еще более сложной структуры под названием "децентрализованное общество" (DeSoc). Такое общество сможет полностью автономно существовать без посредников — правительств и корпораций.
Подтверждение активов
Самой простой версией подтверждения активов является схема, о которой мы уже упоминали. Чтобы подтвердить, что у вас есть X монет, вы переводите эти X монет в определенное, заранее согласованное, время в транзакции, которая сообщает, что "эти средства принадлежат определенной бирже". Чтобы избежать оплаты комиссий за транзакции, ее можно подписать и отправить офф-чейн.
Правда, есть определенные сложности с подтверждением активов, находящихся на холодных кошельках. Но есть несколько вариантов, как это решить. Биржа может держать несколько горячих кошельков с публичными адресами именно для отчетности перед инвесторами. В момент Х биржа переводит на публичные адреса активы, информирует об этом инвесторов, чтобы подтвердить право собственности, а затем возвращает активы на холодные кошельки.
В дальнейшем публичные кошельки можно будет повторно использовать с такой же целью, или использовать каждый адрес только один раз и больше к нему не возвращаться. Это, безусловно, самый простой вариант, хотя он добавляет определенные риски и имеет ограничения по сохранению безопасности на самом высоком уровне. Некоторые биржи уже делают нечто подобное при прохождении аудита, но ничто не мешает сделать такое полностью автоматизированной процедурой.
Сложности еще могут возникнуть с подтверждением фиатных активов, которые хранятся в банковской системе. Здесь также можно найти решение - конкретный банк может засвидетельствовать наличие определенной суммы активов, или это могут проверить и подтвердить независимые аудиторы. Учитывая, что фиатные валюты нельзя подтвердить криптографическими методами и блокчейн-технологиями, это лучший способ при таких ограничениях. Это все равно стоит сделать.
Такой же подход можно использовать для подтверждения фиатного залога в нецифровых активах под стейблкоины.
Возможно ли сделать CEX некастодиальным сервисом?
Предположим, что мы хотим пойти еще дальше: не просто доказать, что биржа имеет достаточно средств, чтобы по первому требованию пользователей их вернуть, а вообще сделать кражу средств ею технически невозможной. Для этого можно использовать технологию Plasma.
Plasma работает путем разделения (дефрагментации) баланса на набор отдельных «монет», где каждая из них получает индекс и хранится в определенной позиции дерева Меркла в блоке Plasma. Чтобы осуществить санкционированный пользователем перевод, следует разместить транзакции в правильном месте дерева, корень которого публикуется в цепочке блоков. CEX не имеет рычагов, чтобы выполнить такой перевод. Это похоже на отсутствие у биржи прав на определенные операции с чужими активами.
Пример технологии Plasma. Монеты хранятся в смарт-контракте, который обеспечивает соблюдение правил протокола Plasma при выводе средств
Более современная версия идеи Plasma – это Validium. Технология похожа на ZK-rollup, за исключением случаев, когда данные хранятся офф-чейне. При этой схеме «оператор» (CEX) не имеет возможности украсть средства, хотя есть вероятность их «зависания» в случае бездействия биржи.
Как оказывается, CEX и DEX – не единственные форматы функционирования бирж. Может существовать еще целый спектр вариантов, включая различные формы гибридной централизации, где вы получаете определенные преимущества, например, в виде эффективности, но все еще имеете много криптографических «препятствий», которые ограничивают CEX в злоупотреблении положением, делая невозможным кражу активов.
Вывод
В краткосрочной перспективе продолжают существовать два противоположных «класса» бирж: кастодиальные и некастодиальные. Сегодня последняя категория - это просто DEX, такие, как Uniswap. В будущем мы уже можем увидеть криптографически «ограниченные» CEX, где средства пользователей хранятся в чем-то вроде смарт-контракта Validium. Это уже будет next level
Самый простой способ улучшить безопасность кастодиальных бирж – добавить подтверждение резерва. Процедуру должны сочетать подтверждение активов и подтверждение обязательств.
В долгосрочной перспективе рано или поздно мы придем к тому, что все биржи станут некастодиальными (DEX), а CEX и попытки кражи ими активов канут в прошлое. Останется только продумать user-friendly процедуру восстановления доступа к кошелькам, от которых потерян пароль или приватные ключи, но это уже совсем другая тема…