Чуть меньше 5 лет назад я познакомился с EVM-экосистемой и с тех пор работаю в проектах, которые контрибьютят в ее развитие. Сначала я просто участвовал в различных финтех-школах и финтех-олимпиадах. Причем, когда я записывался на участие в этих олимпиадах, то даже не подозревал, что это что-то, связанное с криптой. Вполне возможно, что, если бы мне сказали об этом напрямую, — я бы не заинтересовался такой активностью, потому что «финтех» в те времена было более популярным и модным словом. Ну, и к нему старались привязать всё, включая крипто-ивенты.
За все эти годы я поработал в нескольких проектах. По факту получается, что я работаю с одними и теми же людьми, потому что проекты меняются, а команда и основная ее составляющая — остаются. Например, я работал в POA Network. Главное его достижение — запуск в продакшн первого кроссчейн-моста, через который можно было передвигать токены. Сейчас есть много всевозможных мостов на разных технологиях, но тогда это всё только начиналось, — и я, в том числе, приложил усилия к разработке моста между POA Network и Ethereum Mainnet.
После POA Network я работал в XDAI Chain — хотя теперь это GnosisChain, так как проект перешел под управление Gnosis. Там тоже были большие эксперименты и задачи, связанные с развитием и содержанием сайдчейнов, кроссчейн-мостов, которые поддерживают токены, сообщения и так далее. Были определенные наработки и рисерчи, связанные с Proof-of-Stake. Были попытки сделать свой Proof-of-Stake. XDAI Chain впоследствии перевели в Ethereum Proof-of-Stake со своим Beacon Chain. То, на чем GnosisChain работает сейчас, — долгое время было именно моей сферой работы.
Про прокачку своих скиллов в программировании
У меня довольно длинная история, связанная именно с программированием, отдельным от работы в крипте. Программировать я начал очень давно, еще в школьные годы — я кодил в полупрофессиональном режиме и участвовал в олимпиадах. Уже под конец я начал участвовать в таких более индустриально ориентированных олимпиадах, хакатонах и так далее. После школы нужно было выбирать университет, — и мне не очень хотелось идти в какой-то обычный университет, просиживать время на неинтересных предметах и слушать неинтересных людей.
Я решил поступить в Университет Иннополис. Раньше это было мало известное и авантюрное место, а сейчас — уже устоявшееся заведение, о котором сильно больше всего известно. Я не получил какие-то навыки в блокчейн-разработке именно в Иннополисе, но я благодарен этим 4 годам бакалавра за другие возможности. Например, читать всю литературу и делать различные проекты полностью на английском языке.
Это определенно сильно упрощает дальнейшую жизнь, карьеру в крипте и не только. Также было много возможностей общаться с интересными людьми, заниматься только интересными для тебя проектами и не иметь проблем по другим предметам. Это всё сопряжено с другими крутыми возможностями: делать пет-проекты, проходить стажировку или работать в зарубежной компании на part-time — то есть было время на собственное самообразование, участие в хакатонах и других проектах.
В плане работы у меня, наверное, правда уникальная ситуация. Обычно те, кто уже работают в крипте, до этого работали только в некриптовом мире. В моем случае 90% всего опыта профессиональной работы во время и после универа — это всё крипта. И 10% — это я успел поработать в каких-то других местах. Но люди зачастую как-то приходят в крипту из других сфер: финтеха, больших российских корпораций и не только. Но у меня совсем другой путь.
Сейчас нет какой-то одной задачи или одного направления, которым я уделял бы 100% своего времени. Обычно есть и разработка смарт-контрактов, которой я занимаюсь персонально, и какие-то более продуктовые задачи, где требуется обсуждение новых фич, и есть большие активности, связанные с ивентами, конференциями, хакатонами. Ну и понятно, что есть какие-то задачи, связанные не со смарт-контрактами, а с какими-то бэкенд-частями: ревью пул-реквестов, изменений компонентов, UI, SDK, секвенсора.
Про уникальность Blockscout
Сейчас я работаю в двух не зависимых друг от друга проектах — Blockscout и zkBob. Blockscout был еще до того, как я узнал про крипту. Это, наверное, один из очень старых проектов, который всё переживет и существует по сей день. Откройте их историю на GitHub — она там какая-то невероятная.
Там чего только нет, кто только туда ни коммитил и какие только люди над ним ни работали. Это мощь больших опенсорс-проектов. То, что очень большое количество людей готовы в них контрибьютить на разных этапах, и вся эта история — публичная, ее можно изучить. Сейчас у Blockscout есть свой большой роадмап на ближайшие годы — большая команда трудится над его разработкой и поддержкой в партнерских сетях.
Про Blockscout большинство людей так или иначе слышало, потому что это топ-1 опенсорсный блокчейн-эксплорер. Конечно, если не убирать приставку «опенсорс». А так, топ-1 будет Etherscan, который, кстати, много кто недолюбливает из-за его закрытого исходного кода. Соответственно, много новых EVM-совместимых сетей, которые появляются в web3, не могут себе позволить подключение к Etherscan. Именно для них мы стали разрабатывать Blockscout.
Он до сих пор активно развивается: мы тратим на него много ресурсов, запускаем хостинг версий для разных EVM-сетей и даем людям инструкции по запуску эксплорера в опенсорс-режиме для своих сетей, на своей инфраструктуре без оплаты комиссий за запуск.
Про уникальность и идеи zkBob
В zkBob я работаю full-time. Чтобы избежать путанницы, объясню: Bob — это привязанный к USD стейблкоин, который мы потихоньку строим, а zkBob мы позиционируем как функциональную приватность для этого стейблкоина. Можно сказать, что zkBob — это агрегатное состояние из двух подпроектов.
Всем очевидно, что в каком-то виде приватность должна существовать на блокчейне. Ведь мы привыкли к какому-то виду приватности в традиционных финансах и банковской инфраструктуре — воспринимаем ее как должное и само собой существующее.
Мы ожидаем, что наши данные — не публичные. Одновременно с этим все наши операции в блокчейне по большей части публичные, несмотря на то, что адреса не привязаны к личности людей. И это создает кучу проблем, очевидно являясь своеобразным стоппером перед массовым адопшном блокчейна и всей инфраструктурой, которая поверх него построена. Вот поэтому определенная приватность — это большой и важный компонент, который необходим для того, чтобы блокчейн мог развиваться дальше, и люди всё больше и больше начинали его использовать.
Когда речь заходит о каком-то сравнении стейблов между собой, то обычно сложно найти в одном стейбле такие фичи, которых бы не было у другого стейбла. Они все сильно похожи друг на друга. Поэтому мы думали, что создадим стейблкоин с киллер-фичей в виде опциональной приватности. С помощью этой опции стейблом можно было бы не только пользоваться публично и он-чейн, в DeFi, AMM и так далее, но также отправлять в нем приватные транзакции — под эти приватные транзакции и сам продукт мы стараемся выстраивать какие-то партнерские интеграции и находить интересные юзкейсы.
Сейчас основной юзкейс, для которого люди используют zkBob, — выплаты зарплат. В zkBob и Blockscout мы, например, платим сотрудникам и контрагентам и используем Bob для непостоянных выплат. Еще мы стараемся объяснять людям, почему использовать Bob может быть интересно и почему это может быть выгодно. Когда разговоры доходят до зарплат, ожидается, что платить будут в стейблах, — потому что это лучше, чем волатильные токены. Но о приватности стейблов говорят не всегда.
Для достижения хотя бы какого-то уровня приватности для перевода зарплат многие используют CEX. Но предыдущие полгода-год к централизованным биржам тоже начала возникать куча вопросов. Опасения были как раз касательно безопасности средств и их использования. То, что случилось с FTX и что случается с другими биржами, — всё из-за определенных юрисдикций бирж. Так и появился zkBob. Мы предлагаем людям использовать его для выплат зарплат, для организаций каких-то донейшнов, фандрейзингов и чего-то подобного.
Про использование zkBob для приватных транзакций и донатов
Много людей, которые устроены в каких-то крипто-компаниях и DAO, получают там зарплату — постоянную или непостоянную. Они получают ее в каком-то стейбле, чаще всего в USDC/USDT/DAI. Людей просят в инвойсе указать какой-то кошелек, и на этот кошелек приходит сумма в стейблах с какого-то мультисига, кошелька или биржи. Очевидно, что сотруднику доставит много неудобств, если он будет указывать в таких инвойсах свой основной кошелек, — это полное отсутствие приватности с кучей дискомфорта. Всем будет видна история его транзакций. Это также создает определенные риски с нескольких сторон.
До появление zkBob в моем случае и, я думаю, в случае кучи других людей работала подобная выплата зарплат. Вместо того, чтобы указывать свой основной единственный кошелек каждый раз, ты либо создаешь какой-то единоразовый кошелек и получаешь стейблы на него, а потом переводишь на CEX, либо сразу указываешь депозит-адрес какой-то биржи. Большинство бирж позволяют генерировать несколько адресов — так, каждый раз можно указывать новый адрес, чтобы обеспечивать какой-то уровень приватности. Потом человек выводит деньги с биржи на свой основной кошелек, и связать переводы между собой, отследить всю цепочку становится сложнее, а жизнь становится проще и спокойнее.
Работодатель может расплачиваться с подрядчиками, работниками, командой со своего счета на CEX — кидать деньги на разные кошельки. Так zkBob тоже может быть реализован. Деньги будут приходить с кошелька того же Binance, и от кого было поступление — никто не узнает. К тому же, если участники команды не знают адреса друг друга, то какой-то уровень приватности тоже соблюдается.
Первая версия zkBob запущена в продакшне уже больше полугода. За это время она прошла много апдейтов. Конкретно мы ее используем для payroll-решения, как и несколько партнерских команд, которым мы сумели доказать, что zkBob — это выгодно.
Люди используют его для разных юзкейсов. Кто-то использует для P2P-переводов между друзьями, кто-то — для донатов. Сейчас два пула задеплоены на Polygon, а с недавнего времени на Optimism — для токенов $BOB. В будущем планируем расширяться в мультичейн, и еще вероятно появятся пулы и для других токенов. Так как $BOB создавался на уровне контракта специально под zkBob, там есть определенные места для интеграции, которые позволяют более бесшовно с ним работать, но так или иначе будут появлятся новые пулы для других токенов и на других сетях.
Layer-градация постоянно вызывает много споров, дискуссий и доходит порой до холиваров. Сложно однозначно определить, к чему относится zkBob. Он в каком-то смысле является таким роллапом из разряда app-specific, который специально заточен под переводы и privacy. Мы не являемся роллапом того, как Optimism, Atbitrum, zkEVM или что-то такое. Мы не полноценный EVM-роллап.
Если у людей есть деньги на L2-решение, то они могут сделать депозит в zkBob в каком-то смысле на следующий уровень: как-то потранзачить внутри zkBob-решения, покидать приватные трансферы, отправлять/получать зарплату и еще какие-то переводы — а потом сделать вывод обратно в L2-решение. В каком-то смысле это упрощает понимание, если рассматривать zkBob как L3-роллап.
В текущей имплементации нашего аппчейна существует только функция обслуживания приватных транзакций с $BOB. Посмотрим, какие будут запросы на дополнительные фичи. Кто-то пытался в такие аппчейны для privacy вставлять какие-то интеграции с DEX, то есть с тем, что может генерировать йелд.
Тут есть определенные вопросы о том, нужно ли такое людям вообще и нужно ли такое разрабатывать. Может всё-таки имеет смысл фокусироваться именно на приватной составляющей и развивать ее, потому что это основное, зачем люди пользуются zkBob, — не чтобы свопать внутри приватного пула и не чтобы зарабатывать на средствах, вложенных в пул.
Есть также возможность бриджить $BOB между различными сетями и после этого депозитить его в пул на другой сети. Сейчас нет механизма, который напрямую может отправить $BOB из zkBob-пула на Polygon в zkBob-пул на Optimism. Не было четкого запроса от людей, точно ли такая фича нужна. Но мы потихоньку начинаем смотреть в этом направлении. Если это и правда нужно, то мы придумаем такой механизм. Сейчас, чтобы сделать какой-то кроссчейн-перевод, нужно скомбинировать несколько операций: вывод, бридж с помощью традиционных мостов и уже потом депозит во второй сети.
Внутри нашего приложения есть удобная интеграция с LI.FI. Это бридж и DEX-агрегатор. Не покидая приложение, можно выводить, открывать виджет, свопать, отправлять деньги в другую сеть, менять сеть в chain-селекторе или сверху в хедере приложения и делать депозит в новой сети. Конечно, это требует какого-то времени и дополнительных ресурсов, но люди этим пользуются.
Сейчас bottleneck у zkBob — отсутствие каких-то сетей и токенов, с которыми люди хотели бы работать.
Вдруг кто-то не хочет юзать $BOB по причине каких-то внутренних соображений или просто потому, что недолюбливает Polygon. А вот Arbitrum, например, очень любит и держит $ARB, которые хочет приватно пересылать внутри Arbitrum. Запрос на добавление большего количества сетей есть, и мы в данный момент над этим работаем.
Мы также часто получаем репорты касательно типичных технических проблем, с которыми сталкиваются владельцы Ethereum-кошельков: сид-фраза, пароли и восстановление аккаунта. Люди зачастую не понимают, что делать, когда всплывает ошибка транзакции — они нажали кнопку «послать транзакцию», а она почему-то не отправляется. Начинается паника — отправились деньги или нет? Мы стараемся исправлять такие ошибки, закрывать нишевые проблемы, улучшать UX, как-то перерисовывать UI, менять тултипы и упрощать онбординг. То есть объяснять, как правильно работать с сид-фразой, создавать аккаунт и восстанавливать аккаунт.
Сначала все изменения будут на Optimism и Polygon. Понятно, что мы выстраиваем отношения и с другими сетями. Нам интересно задеплоиться и на наш родной Gnosis Chain, и на Arbitrum. Но всё нужно делать как-то в порядке приоритета. Но да, все популярные L2-решения точно появятся, включая Polygon zkEVM.
Про централизацию как важную часть корректной работы продукта и бесконтрольную приватность
С архитектурной точки зрения наш аппчейн похож на Optimism или Arbitrum. В данный момент существует один-единственный секвенсор, который помогает пользователям обрабатывать и включать их транзакции. Это сделано по нескольким соображениям, в том числе для приватности пользователя. Все транзакции, которые юзер отправляет, — trustless. Он только подписывает сообщение, например в MetaMask, и платит комиссию в тех токенах, которые он отправляет внутри пула. В данном случае это $BOB. Высокий уровень приватности достигается за счет того, что транзакции отправляются с одного централизованного релейера, а юзеру не нужно выполнять все транзакции лично со своего кошелька. Соответственно, нельзя связать транзакции с отправителем.
Мы фанаты приватности, но мы не поддерживаем бесконтрольное использование приватности и проекты, которые пытаются до конца топить за это. Бесконтрольная приватность — где нет лимитов, AML или опционального KYC. Приватность — это очень важно, но она должна существовать с артефактами в виде лимитов на ее использование, максимальной суммы, которую можно задепозитить, затрансферить или вывести. Должно быть имплементировано какое-то AML-решение или KYC-решение.
Подобные решения возможны с помощью централизованного секвенсора или, как мы еще его называем, релейера. Мы смотрим на то, как можно его делать в более trustless-режиме. Например, сейчас для KYC используем soulbound-токены в виде NFT, которые можно получить на Binance. Есть также различные решения, типа Polygon ID, которые могут предоставлять идентификацию в приватном режиме, используя zkSNARKS. В этом направлении мы тоже смотрим.
Также есть решения в плане какого-то AML и скрининга кошельков. Обычно мы используем TRM API для AML-проверок, но есть какие-то более продвинутые решения, которые позволяют все эти проверки обернуть внутри снарков и сделать их в менее централизованном режиме.
Когда мы поймем, как децентрализовать все эти направления, оставив при этом лимиты, проверки и опциональное KYC, начнем думать в сторону децентрализации секвенсора.
Тут есть несколько возможных моделей: когда вместо одного секвенсора есть несколько секвенсоров, которые сменяют друг друга по кругу, опираясь на консенсус, либо может быть какой-то механизм, когда при определенном стечении обстоятельств пользователи сами выбирают релейер, а не секвенсор. То есть, если в сети что-то идет не так и централизованность секвенсора по какой-то причине перестает отвечать на вопросы, перестает отправлять транзакции и по факту начинает полную цензуру, юзеры выступят как кратковременные релейеры, чтобы обработать свои и чужие транзакции.
Просто сама по себе децентрализация мало кому нужна. О ней классно говорить, но никакого прямого вэлью она не приносит, поэтому все сфокусированы на развитии своего продукта, добавлении интересных фич и поиске новых юзкейсов. Потому что как только появляется децентрализация, гибкость продукта теряется, а возможность быстро его изменять, апгрейдить и управлять им — снижается.
С централизацией всё по-другому. Есть разные уровни централизации, например биржа, где правила игры диктуются именно ей. Есть централизация, где какой-то централизованный участник выполняет чисто рутинные задачи — в нашем случае это релейер. Он выполняет базовый список проверок, посылает транзакции, но не имеет никакой возможности манипулировать тем, что в этих транзакциях находится. Он не имеет никакой возможности забрать чьи-то деньги, подменить адрес или сумму, произвести double spend.
Поэтому не так важно, кто именно запустил этот релейер и поддерживает его. Единственная важная составляющая — чтобы он всегда оставался онлайн. Потому что единственный объективный риск, который тут есть, — если система в один день просто отключится и перестанет отвечать.
Про developer experience в работе с Polygon и Optimism
Мы в первую очередь появились на Polygon. Так выпал жребий. В текущем моменте Polygon и Optimism полностью EVM-совместимы, и на техническом уровне никаких различий со стороны работы смарт-контрактов нет. Но если сравнить с каким-нибудь Polygon zkEVM, — там уже есть технические особенности, несмотря на то, что это тоже полностью EVM-совместимое решение. Есть нюансы в виде отсутствия определенных precompile или чего-то подобного, которые как-то могут повлиять на то, что контракты работают в одной сети, но не работают в другой.
В плане Proof-of-Stake и EVM — Polygon и Optimism абсолютно эквивалентны. И на разработку и тестирование смарт-контрактов это никак не влияет. Есть определенные различия на уровне деплоймента продукта и его эксплуатации — здесь вступают технические особенности построения транзакций и блоков в обеих сетях. В Polygon есть известная проблема, связанная с непредсказуемостью реворгов — а это доставляет определенные неудобства на всех уровнях, начиная от UI, продолжая релейером и секвенсором. Могут возникать проблемы и на уровне мониторинга. В Optimism эта ситуация чуть попроще, опять же из-за того, что секвенсор там централизованный и как таковые реворги там невозможны, потому что нет никакого консенсуса, который должен сходиться — всё определяет централизованный участник.
Про privacy-пулы и механизм работы Tornado Cash
Очевидно, что строить privacy-решения, не оглядываясь на Tornado Cash, невозможно. Tornado Cash был самым большим из ранее существовавших privacy-решений. Мы видим, по каким причинам его нельзя считать успешным, — и это та причина, по которой весь консенсус в индустрии и всё, что связано с приватностью, так или иначе упираются в AML, KYC и ограничения суммы депозита. Это может помочь избежать ситуаций, как с Tornado Cash, когда протокол позволял бесконтрольно использовать себя в абсолютно любых целях.
Нужны механизмы, которые позволяли бы удерживать активности этого протокола в рамках приличия и легальных юзкейсов. С технической стороны, наш протокол и Tornado Cash построены на zkSNARKS. Но если заходить в самую глубь, то сама модель, которая используется внутри пула, она всё-таки немного другая. Но и там и там zk-SNARKS.
Мы планируем запустить privacy-пулы для ETH или каких-то других волатильных токенов, потому что безусловно privacy-пул может существовать не только для стейблов. Там есть свои небольшие юзкейсы с анонимным деплойментом смарт-контрактов, анонимным фондированием новых кошельков и подобным. Поэтому пул для нативных токенов определенно будет — в нем есть какой-то свой интерес.
Но опять же, изначально zkBob-пул появился именно для стейблкоинов и именно для $BOB. Конечно, должен появиться волатильный токен, который можно будет покупать/продавать, инсентивизировать и дропать. Но это произойдет в будущем, когда у нас будет четкое видение токеномики, выстроенной вокруг проекта, и когда мы сможем обеспечить профит холдерам токена.
Про инвестиционные фонды и интерес рынка к приватности
Сейчас мы не нуждаемся в финансировании. Проект полностью self-funding и спонсируется за счет денег, которые появились из предыдущих проектов и успеха в них. Критической нужны в раундах тоже нет — наверное, это и хорошо. Но понятно, что в какой-то момент будет seed-раунд под готовый проект, под какой-то будущий роадмап.
Приватностью интересуются все. Но не все, по крайней мере несколько месяцев назад, были готовы в это инвестировать, потому что есть незакрытая ситуация с Tornado Cash. Хотя она близка к завершению и человека, который был арестован, уже как минимум отпустили и выдали ему доступ в интернет. Это не может не радовать.
Потихоньку появляется уверенность в том, что всё инвестиционных фондов будут заинтересованы во вложениях в приватность. Очевидно, privacy — это довольно большая ниша, в которой может быть много юзкейсов, спроса и большие объемы для всех переводов.
При этом мы видим, что за основной TVL и Volume privacy в прошлом отвечали большие протоколы. И они, можно сказать, больше не работают, Tornado Cash пользоваться стало небезопасно, а Aztec и zkMoney сообщили, что закрываются. Но закрываются не потому, что там что-то случилось, — они просто пиватируются немножко в другое направление, связанное с ZK-Rollups. По их мнению, там больше перспектив.
Буткемп: Solidity-разработчик
От основ Solidity до деплоя на мейннете.
Подробнее