Про разработку приватного голосования, ZKP и технологии будущего в web3
«ZK — первый звоночек того, что грядет»
Артем Григор, Aragon
6 декабря
«ZK — первый звоночек того, что грядет»
Про бэкграунд
Всё началось где-то в 10-м классе. Тогда мой брат интересовался криптовалютами и трейдингом. Я тоже решил попробовать. Прошло какое-то время, и вот — я уже с несколькими одноклассниками торгую на биржах. Был 2017 год — ажиотаж, биржи закрыли новые регистрации, и одноклассники просили меня купить крипту вместо них. Через пару лет меня за это сильно поблагодарили. Позже я прочитал книжку про биткоин. Потом прочитал White paper — ничего не понял. Создал генератор кошельков на эфире, чтобы углубиться в тему на практике и понять работу приватных и публичных ключей.
Уже к концу школы я помогал в MetaHash. Пока учился в университете, работал в R3. А потом меня позвали в Aragon. Получилось, что с каждым шагом я набирался технического опыта. Параллельно учился математике и computer science — в купе это очень помогло понять, как все работает в web3.
Про Aragon
В MetaHash работал как tech support и в R3 работал sales-инженером — вот уже целых 3 года опыта. Поэтому в Aragon я попал, будучи уже на втором курсе университета. Небольшая хитрость — я всегда старался не акцентировать на том, что я студент. Эту деталь всегда опускал в самый низ резюме. Гайды на ютубе по поиску работы советовали писать: что принес в компанию, что сделал, какие фактические результаты получились — это и писал. В итоге удалось попасть в Aragon.
Сейчас рабочий график довольно свободный — строишь день, как хочешь. Иногда его можно чуть сократить, а на следующий день, наоборот, приналечь и поднажать.
Сейчас, грубо говоря, проснулся, пошел на утренний рабочий созвон, а потом приступаешь к работе. Мне она нравится. Иногда есть конкретные проекты, когда ты пишешь код и делаешь proof-of-concept. Бывают дни, когда больше рисерча. Тогда мы с командой смотрим всякие статьи, ролики сосещаем конференций или читаем блоги. Потом устраиваем семинары, чтобы обмениваться знаниями. Вообще, постоянно растет список того, что нужно прочитать и посмотреть. Очень много новых технологий, которые нужно изучить, и курсов, которые нужно пройти. Похоже на учебу в университете. Еще посещаем конференции и митапы. Это свободная профессия, учитывая, что это full-time remote.
Сейчас Aragon — это не настолько известная компания, как была раньше. Его запустили в 2017 году во время бума ICO. Aragon стал самым большим ICO на тот момент. Было собрано 4 или 5 миллионов долларов, а на те времена это были огромные деньги. За полчаса продали все токены. С тех пор команда занимается разработкой DAO и созданием фреймворка для их запуска. У нас очень проверенный проект, потому что мы работаем давно, в своем деле мы самые старые. И наши контракты ни разу никто не взламывал (тьфу-тьфу-тьфу). Люди могут доверять нам.
Всегда была идея сделать Aragon самим DAO. Достичь этого было очень сложно, потому что, когда в трежери много средств, страшно его оставлять под управлением голосования участников. Деньги могут попросту украсть. Это привело к некоторым конфликтам в коллективе в 2020 году. Когда в компанию уже пришел я, в ней было в районе восьми человек. Из них шесть были наняты за последние два месяца.
Я пришел уже в новую волну найма. Это был май 2021 года. С тех пор команда растет. Цель всё та же — создать более хорошее приложение и UX по созданию своего DAO.
Я — исследователь-разработчик. Особенность профессии в том, что большинство технологий, что мы используем, — написаны нами. Они очень экспериментальные, и наша задача заключается в том, чтобы изучать технологии и находить что-то новое, прорывное, что потом будет использовано в продакшне. Например, я сейчас работаю над проектом для голосования на блокчейне. Задача — сделать протокол максимально масштабируемым.
Мы работаем с Ethereum, а также используем Artworks — библиотеку на Rust. Соответственно, для подключения ее к Solidity и Ethereum я лично люблю Hardhat и Web3. js или аналоги.
Aragon выделил грант на работу Snapshot, который изначально был нашим проектом. Потом он отделился, и теперь является одним из наших самых больших конкурентов.
Snapshot сейчас используют многие DAO. В нем можно проголосовать, подписав свой голос приватным ключом, а потом он отправится на централизованную систему Snapshot. И вот тут возникает проблема: система может не вписать ваш голос в итоговый результат, тем самым смухлевав выборы. Snapshot, конечно, всё считает правильно и отправляет данные на IPFS, но его ничто не обязывает к этому. Особенно опасно, если в систему Snapshot попадет хакер. Наша работа — построить такую систему, где никому не нужно доверять.
Наше видение будущего в том, что достаточно будет предоставить математическое доказательство того, что все голоса посчитаны правильно, и альтернативных мнений нет – и этого будет достаточно, чтобы можно было экзекьютить код.
Мы также хотим, чтобы голосование было приватным и бесплатным. Одна из мыслей такая: киты, которым не жалко потратить деньги на оплату газа, но при этом они хотят сохранить приватность того, кто проголосовал, могут в принципе использовать ZK для генерации своего голоса вместо того, чтобы голосовать оффчейн. Потом просто загрузить свой голос в смарт-контракт и доказать корректность голосования. Но это доказательство будет прятать их айдентити.
То есть, ты берешь снешпот блока в Ethereum и показываешь, что есть кошелек, а в нем есть 1000 монеток. Я, например, могу сделать доказательство этого. Потом я могу загрузить это в сеть Ethereum и сказать, что было столько монеток, я проголосоволосовал корректноал и 1000монеток появились не из воздуха, за то-то и вот доказательство. Одновременно я могу спрятать свое айдентити специальным образом в своем доказательстве и никто не узнает, кто проголосовал, но все будут уверены, что корректно проголосовал, а 1000 монеток появились не из воздуха. Это наше конечное видение. Ончейн голосование тоже будет существовать, и есть люди, которые готовы на это тратиться.
Про конкуренцию с Gnosis
Это наш самый крупный конкурент. Но между нами есть разница. Gnosis всё-таки больше сфокусирован на мультисиге. Мы же рассчитаны на более большие DAO с тысячью участников. И они определяются не тем, что захардкодено в смарт-контракте, а скорее тем, кто владеет токенами. Кроме Gnosis и нас, я бы не назвал никого серьезного.
Плюс ко всему, у нас разный функционал. Трежери лучше у Gnosis. Они изначально были сфокусированы на этом. Мы же были сфокусированы на разном функционале и представляли собой такой фреймворк, с помощью которого можно подключать другие приложения как плагины. Gnosis до предыдущего года такого не предоставлял. Сейчас у него есть Gnosis Zodiac, но там еще не всё понятно, и экосистема довольно новая. Мы с таким функционалом уже 4 года — для криптовалют это очень много. Скоро мы будем выкатывать новую версию, где всё будет еще более понятно.
Надеюсь, будем конкурировать с Gnosis напрямую в трежери-менеджменте. Опять же, эти вещи всегда можно совмещать — использовать в арагоновском DAO трежери-менеджмент от Gnosis. Для таких целей есть приложение «Агент». Оно помогает DAO взаимодействовать с другими смарт-контрактами.
То есть, когда я устанавливаю связь между Gnosis и Aragon, я использую «Агента», чтоб он работал с мультисигом в Gnosis и использовался как трежери-менеджмент. Приложение, кстати, переименуют в новой версии. Еще появится app store, куда люди будут выкладывать свои приложения —и всё это будет в одном месте. Также все смогут увидеть, как еще можно проапгрейдить свое DAO: какие модули добавить и как его расширить.
Про приватное голосование
Мы уже пробуем новую систему. То есть, не только на Ethereum, но и оффчейн с помощью ZK, который мы разрабатываем сейчас.
Как вариант — квадратичное голосование, когда считаются голоса людей, исходя из количества токенов, которое у них есть. Ты голосуешь за А, и все твои токены считаются за А, а другой голосует за Б, и все его токены считаются за Б — всё довольно линейно.
Принцип квадратичного голосования такой: у меня 4 токена, а у друга 8 токенов. Мой голос будет считаться как два токена (ведь у меня 2 токена в квадрате), а его голос как три токена (три в квадрате — это восемь). Так киты не смогут запушить свое решение, потому что, если у кита много токенов в кошельке, его голоса будут в квадратичной пропорции меньше. Но есть проблема: как удостовериться в том, что кит не создаст себе 10 кошельков и не раскидает по ним свои токены? На это есть всякие DIDs. Их делает много проектов, например, Сeramic.
Это всё тоже очень сложно, потому что мы же не хотим, проходя идентификацию, показывать свой паспорт на Ethereum. Всё-таки хочется приватности. В этом случае как раз помогает ZK. Технология доказывает, что я реальный человек, и избавляет от необходимости показывать документы.
Мы сфокусированы именно на приватном голосовании. Для этого тоже используется ZK. Кроме приватности, нам еще важно снижение газа, который тратится при голосовании.
Мы используем роллапы голосов: люди голосуют оффчейн, а потом агрегатор собирает голоса и отправляет с доказательством в смарт-контракт на Ethereum. Смарт-контракт принимает результат голосования и видит, что всё корректно — тогда дела делаются куда дешевле. Больше не надо платить за каждый голос, а ведь раньше платили по 8-10 долларов.
Но тут есть сложности с ZKVM. Нужно разрабатывать способы, как отправлять голос в обход агрегатора. Нужно убедиться, что человек не может одновременно отправить свой голос в сеть Ethereum и одновременно проголосовать за агрегатора. То есть, много всяких моментов, которые нам приходится продумывать.
Мы сами создаем роллапы голосований. Решили не ждать, пока будут эти ZKVM. Я общался с разработчиками из Polygon Hermez и Aztec — у них примерный таймлайн 2 года. Мы столько ждать не хотим.
Вот есть Snapshot. Через него голосуют в DAO. Там всё решает централизованная система — еще и бесплатно. И ребята из Snapshot решили поработать со StarkNet. Они там тоже делают отдельный блокчейн, используя ZK, но они используют особую технологию старков. Snapshot начали работать с StarkNet год назад и всё еще не могут закончить свой протокол приватного голосования, потому что StarkNet просто не поспевает.
Мы не хотим попасть в подобную ситуацию. Поверим, что Polygon Hermez выйдет через полгода и застрянем на 2 года, потому что они не смогут проверить свои смарт-контракты.
Про Zero-Knowledge
Попробую описать на простом примере: вы хотите доказать кассиру, что вам есть 18 лет, и вы можете купить бутылку спиртного. При этом, вы не хотите показывать паспорт, потому что боитесь, что камера заснимет данные или сам кассир запомнит их, а потом возьмет на ваше имя кредит. Тогда вы можете сгенерировать специальное математическое доказательство с помощью многочленов и дать это доказательство кассиру.
Кассир проверит его в одной точке. Затем подставит в этот многочлен одно значение и проверит, что получившийся результат соответствует его ожиданиям (что вам 18 лет) — и если это будет так, то он поверит, что вам 18 лет. При этом все, что вы сделали — сгенерировали доказательство, используя свой паспорт, дали доказательство этому человеку, и он уже знает, что вам 18 лет.
В этом суть ZK. Ты представляешь доказательство, а другой человек этому верит. Не нужно пересылать 1000 сообщений, чтобы что-то доказать, в этом суть Sussinct Argument of knowledge.
Базовые концепты ZK можно выучить на ZK Whiteboard sessions. Разобраться во всем этом можно и без технического бэкграунда, но нужно математику знать нужно — без этого никак. Если вы уже что-то понимаете в ZK, то можете написать пробное приложение, например, микшер токенов, и постепенно пополнять свое портфолио проектами.
Про подобные ZK технологии
Конечно, самый большой лимит ZK — это именно то, как технология работает. ZK позволяет только доказать, что что-то было сделано корректно. Но так ограничиваться необязательно. Можно делать так, чтоб функция делала любое преобразование, будучи одновременно приватной.
Мощнее ZK — fully homomorphic encryption. Шифрование позволяет вычислять функции и одновременно сохранять приватность. Это самое идеальное решение.
Есть другие технологии с тем же функционалом, но с другой системой безопасности — confidential computing. Её нельзя математически проверить, но она самая готовая к производству в данный момент. Уже можно сейчас использовать ее, чтоб создавать Production-Ready applications. В то время как у fully homomorphic encryption всё еще очень плохо с эффективностью, и ей еще предстоит долго развиваться.
Нужно смотреть в двух направлениях: по готовности мощнее confidential computing, а по функционалу и защищенности — fully homomorphic encryption. Но наравне с этим, ZK находится на перекрестке и совмещает защищенность, верифицируемость и уже какой-то Production-Ready.
Скорее всего, будущее за fully homomorphic encryption и confidential computing. А ZK в данный момент — просто самая доступная технология. В будущем она будет совершенствоваться, но через какое-то время уйдет на вспомогательные роли, где будет развивать другие технологии, написанные на более мощных криптографических системах.
ZK — первый звоночек того, что грядет. Понимая ZK, можно понять, как работать с будущими новыми более сложными технологиями. Несколько причин в пользу моей точки зрения: во-первых, сама технология постоянно совершенствуется и становится более эффективной, во-вторых, это дешевый протокол — для таких строятся специальные процессоры, ну и плюс криптография — она уже везде.
Про будущее web3
Есть такое понятие как ubiquitous computing — когда данные постоянно обрабатываются и собираются. Было бы классно, если б всё было использовано для благих целей. Например, обучить машинную модель предсказывать твой паттерн поведения, чтобы свет в доме включался, когда ты приходишь или пол подогревался, исходя из твоих привычек.
Но лично я не хотел бы, чтоб мои данные уходили со всех моих гаджетов и обрабатывались абы кем. Это слишком большая цена.
У ZK и других технологий есть возможность защитить этот процесс. Мне будет комфортно и удобно, когда мой пол будет включаться с моим пробуждением, понимая мои паттерны поведения, или моя кровать будет подстраивать музыку для моего хорошего сна. Одновременно с этим все данные, которые были использованы после их получения с устройств, будут защищены, а во время обработки их никто не сможет видеть.
За этим я и вижу будущее — огромный массив данных, который собирают о человеке, мы сможем использовать защищенно.
Я надеюсь, что web3 сольется с web2. В мире web3 я совершенно забываю про мир web2. Ну и конечно DAO. Организовывать сообщества будет точно необходимо, и я надеюсь, мир web3 станет по-настоящему децентрализованным, ведь в нем DAO просто необходимы. DeFi уже взлетели, вряд ли там будет что-то интересное.
Приватность транзакций на Ethereum будет в ближайшем будущем. По крайней мере, я так думаю. Secret finance занимаются этим, насколько мне известно. Другой вопрос — как это будет работать в web2. Там больше денег и больше технологических потребностей. Там же реально есть корпоративные тайны, там точно нужно будет принять какое-то решение.
Но мне сложно представить Ethereum полностью приватным. Приватным точно будет web2, куда люди будут уходить, если им нужно будет перевести куда-то деньги, чтоб никто не видел. Есть гипотеза, что сам Ethereum будет использоваться только для роллапов, а все транзакции будут проходить на L2.