Масштабируемость скучна, приватность мертва: zk-proofs, для чего они нужны?

Конспект доклада профессора по безопасности и прикладной криптографии Яна Майерса с Devcon в Боготе, в котором он привел примеры применения zk-решений, как в блокчейне, так и за пределами этой сферы. Ян Майерс посвятил 10 лет изучению zk-решений, также написал первые статьи по zk proofs и SNARKs для блокчейнов. Сделали для вас перевод его выступления и выписали основные тезисы. Приятного чтения!

Проблемы анонимных платежей

Анонимность, конфиденциальность — важны. Я отдал последние 10 лет своей жизни работе над этими аспектами. Но анонимные платежи не пользуются каким-то особым спросом. Monero, Z-cash, другие продукты — клевые, но не двигают прогресс.

Поэтому я как профессор задаюсь нехитрым вопросом: а дальше мы что будем делать? Что если спрос на такие штуки появится лет этак через 10, а то и не больше?

Один из моих соавторов Иан Троммер описал эту ситуацию так: «Продавать анонимность для блокчейн-платежей – это как сто лет назад продавать автовладельцам ремни безопасности».

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

alt_text

Вторая проблема — в плане исследований. Для большинства исследователей в теме zk-решений нет ничего нового. Методы работы известны и прошли реальную апробацию. Но теперь осталось придумать варианты использования в промышленных масштабах.

Как вообще строятся анонимные платежи? Это zk proof плюс аккумулятор. Обычно zk snark плюс дерево Меркла. Такая разработка появилась в Zerocash и моем кандидатском диссере, и в итоге перекочевала в Zcash; она есть практически во всех новых проектах нашего времени: Aztec, Anoma, Penumbra, Railgun – у всех из них есть дополнительный функционал, то есть они не просто клоны. Но в основе – вот этот базовый подход для обеспечения анонимности платежей.

alt_text

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

Очевидно, что анонимности конец не везде. Возможно, анонимность нужна для DeFi, похоже, что трейдерам она реально нужна. Может получиться использовать zk-пруфы для борьбы с MEV или front running. Но, как бы то ни было, основные протоколы для проведения zk пруфов остаются теми же, что и для анонимных платежей, даже для этих сценариев. Таким образом, с точки зрения исследований ничего нового здесь нет.

Проблемы масштабируемости блокчейнов

Блокчейны работают медленно и это большая проблема. Над масштабируемостью блокчейнов работает много людей, они пилят zk Roll-up-ы, виртуальные машины ZKEVM. Тут проводится много исследований, вливается много денег — сумма порядка нескольких миллиардов долларов от венчурного капитала. И именно тут сейчас вся активная движуха.

alt_text

Как работают роллапы: сервер принимает транзакции, которые генерят пользователи. Сервер сжимает их с помощью zk proof, который подтверждает верность транзакций. Затем сервер генерит этот пруф и условно говоря, перебрасывает его через забор в блокчейн. Таким образом, сервер фактически забирает с блокчейна нагрузку. Блокчейну легче проверить транзакции в таком формате. Это решает проблему медленных блокчейнов, так как без разницы, что ваш блокчейн медленный и совершает 10 транзакций в секунду, если каждая из этих транзакций - это доказательство с нулевым знанием, который подтверждает, что 10 000 транзакций в платежах верны.

Это не настоящие zk-решения

Но ZKEVMs и zk-роллапы – это не zk, они просто сжимают транзакции на блокчейне, а такая задача не требует сокрытия подробностей происходящего. Конечно, zk-роллапы обычно показывают хэш-дерево обрабатываемых данных. Это вроде как очевидно. Здесь участвует zero-knowledge proof, но они раскрывают хэш Меркла, а уже этот хэш на самом деле раскрывает кучу данных. Публикация хэша вашего пароля спалит сам пароль, его можно забрутфорсить.

Так проблема анонимности не решится, наоборот – тут появится еще одна проблема. Может быть, это лишь теория, и такие хэши брутфорсить трудно, но, с другой стороны, Ethereum только что перешел на proof of stake, и теперь толпа злющих майнеров с тоннами мощного железа для хэширования теперь не знает, что с ним делать. Так что, если в итоге всё упрется в MEV, то некоторые проблемы возникнуть могут.

alt_text

Так или иначе, это не zero-knowledge, и поэтому, с моей точки зрения, с точки зрения zk это скучно, ведь тут просто не задействованы реально крутые и интереснейшие моменты zero-knowledge пруфов. И в конце концов, zkVM-ы не являются значимым источником zero knowledge.

alt_text

Что нам дадут zero-knowledge proofs?

Доказательству с нулевым разглашением свойственна корректность, логичность и нулевое разглашение. И это сильно смахивает на учебник, что-то сушено-научное, никак не дающее полное представление о технологии.

Итак, в намеренно нестандартном плане, что дают zero-knowledge proof-ы? В моем понимании, это три момента.

alt_text

Первый – анонимность, скрываются данные. Отсюда вырос Zcash, отсюда вырос Tornado Cash, отсюда вырос Aztec и все остальные — мы пытались скрыть данные и обеспечить анонимность платежей, ведь блокчейн — это примерно если бы твой банковский счет вёл Twitter, то есть полная катастрофа.

Второй момент для zk snarks — это компрессия. Они берут массив данных, и его легче проверить, чем прокладывать все эти линейные пути, как по факту работала бы проверка без пруфов. Это в конечном итоге хорошо, ведь в результате мы получаем масштабируемость, а она побуждает добиваться экономии на газе для блокчейнов, удешевлять транзакции.

Но третий момент — это то, что можно считать достоверностью. С точки зрения криптографии zero-knowledge proof логичен; он дает некоторую гарантию того, что конкретное утверждение верно, но ничего не говорит о том, что с ним можно сделать. Сама достоверность работает так: я даю вам какие-то данные и могу с помощью zero-knowledge proof-ов доказать, что это действительно те данные, которые сейчас перед вами, и что все вычисления по ним действительно правильны.

alt_text

Идея zero-knowledge proofs

В 2010 году некоторые из моих коллег провели исследование про proof-carrying data — «подтверждающие данные». Идея эта заключалась вот в чем: к данным прилагаются подтверждения того, что вычисления, из которых эти данные родились, верны. Кто-то обрабатывает эти данные с помощью функции, выдает результат и прикрепляет пруф его верности; а позже кто-то еще может прогнать уже результат этих вычислений через другую функцию и выдать пруф, что всё верно. Тут уже вырисовывается некая машина состояний. Тут уже есть zero-knowledge proof-ы, и, конечно, именно благодаря им можно скрыть всё, что нужно скрыть.

alt_text

На мой взгляд, zero-knowledge proof в связке с блокчейном обеспечит достоверность. Этот фрагмент данных, если он в блокчейне, может указать на всеобщее согласие с правильностью этих данных, что они подтверждены, а затем я могу дать пруф того, что на моей стороне всё верно, что я, делая вычисления, не видел ничего подозрительного и что проведенная мной операция была выполнена правильно. И затем у нас всех получается общий консенсус по этому делу, ведь всё в блокчейне; я не могу дать заднюю и что-то переделать, я не могу позже эти данные как-то подшаманить. Получаются смарт-контракты с сохранением анонимности.

Zero-knowledge — текущие проблемы

Итак, первое, для чего zero-knowledge пруфы действительно нужны, — это достоверная безопасность для операторов роллапов. Ведь если есть роллап, который принимает эти транзакции, то сервер видит все их содержимое. А проблема в том, что сервак получает транзакции от кучи народа и может выбирать, какие принимать, а какие нет. И еще проблема в том, что об этом знают все, и в определенный момент кто-то может предъявить серверу, мол, почему это он то-то и то-то не исключил. Иными словами, zkVM-ы и zk раллапы не устойчивы к цензуре.

alt_text

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

Можно заменить транзакции отдельных пользователей zero-knowledge пруфами, чтобы они стали непрозрачными. И в результате роллап-оператор не увидит, что там делается; он станет банальным передатчиком с ограниченной возможностью манипулировать порядком транзакций.

Появляется интересная проблема — эти пруфы должны работать на смартфонах. И не факт, что это смогут все существующие системы zk-пруфов. Для меня основным до сих пор является graph16, но я знаю, что некоторые из этих систем медленнее других и заточены под другие сценарии. Но так или иначе, увидим ли мы хорошую производительность на мобилках или ноутах – пока большой вопрос.

alt_text

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

И наконец, пруфы во многих системах огромные,отсюда всевозможные проблемы для мобильного трафика, gossip-протоколов, для распределения транзакций — тоже тревожный сигнал.

Проблемы с безопасностью и цензурой

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

alt_text

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

alt_text

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

alt_text

В 2017, тогда мы писали Zexy, и они в то время были адово тормозными, зато теперь стали пригодными отчасти благодаря исследованиям и разработкам за счет компаний, которые этим занимаются. И это невероятно полезно – у меня как у исследователя появляется масса инструментов. И тут у меня в памяти встают 80-е и 90-е годы, когда создавались всё более шустрые процессоры. Компы на их основе были инструментами, с помощью которых мы могли делать все, что хотели, и делать их всё быстрее и быстрее побуждало желание ускорить работу с офисными электронными таблицами.

Примерно так же, как сейчас этот процесс подгоняет потребность ускорения работы примерно того же, но на блокчейне. Итак, давайте прикинем, что может дать сочетание zk-пруфов + блокчейн, да так, чтобы получился не просто быстрый Эксель на блокчейне. Да, скорость будет частью целого, но на ней свет клином не сошелся.

alt_text

Zero-knowledge proofs для DeFi-экосистем

Думаю, что в более широком смысле Zero-knowledge proofs пригодятся для рынков: конкуренция, децентрализация, миграция данных - эта тема будет очень важной. И, очевидно, с их помощью можно бороться с отмыванием денег.

alt_text

Открывается дорога к любым комплаенс-проверкам. Нужно соответствовать правилам борьбы с отмыванием денег, отчетности о валютных операциях,например, чтобы через систему не проходило более десяти тысяч долларов - это можно реализовать. Теоретически мы знали, как это сделать в 2016 году (тогда я такую статью написал в «Financial Cryptography»), но сейчас это становится действительностью, опять же, благодаря более практичным zero-knowledge proofам — и отчасти благодаря ребятам, работающим над роллапами.

Мы все трудимся над децентрализованными экосистемами, и пока огромный вопрос — будут ли они по факту на блокчейне или получится олигополия серверов. Думаю, было бы довольно полезно при переносе своих данные с сервера А на сервер Б иметь возможность заявить: «Вот пруф, что все мои данные верны». По аналогии с этим может возникнуть потребность доказать, что проведенный вами аукцион был свободен от подтасовок.

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

alt_text

Видел недавно статью о том, что у Налогового управления США возникли проблемы из-за манипуляций с аудитом. Как сделать процесс налогового аудита заслуживающим доверия? Придется заранее обязаться строго следовать политике аудита, придется выгрузить все налоговые декларации в блокчейн и соответствующий журнал, а затем еще и доказать, что процедура аудита прошла правильно. И загвоздка в том, что по ходу дела нельзя раскрывать ни один из этих компонентов. Нельзя рассказывать народу, как можно соскочить с уплаты налогов, и нельзя светить всем подряд чужие налоговые декларации. Но цель – дать всем уверенность в том, что в случае их проверки налоговой службой или иным органом всё действительно пройдет в соответствии с установленной процедурой в рамках правового государства и т.д. и т.п., придется что-то придумать, и поэтому, возможно (опять же, гипотетически), за счет добавления в блокчейн zero-knowledge пруфов и получится нужный результат.

Смотреть доклад в оригинале: https://youtu.be/AX7eAzfSB6w

Читайте также