Большая часть кода — это опенсорс от разных проектов и сетей. Криптовалюты образовали несколько веток развития, и внутри каждой сети плюс-минус свой набор инфраструктурных решений. Между собой они соединены примерно никак или костылями. Интерфейсы так же дружелюбны, как у Vim в сравнении с Word. API есть, иногда задокументированы, иногда нет (тогда приходится реверсить смарт-контакты или шаблоны кода), иногда работают не так, как в документации.
Стартап работает на стартапе: например, кто-то может долго контрибьютить в библиотеку и инфраструктуру, а потом за неделю свернуться и всё прикрыть. И когда я говорю «инфраструктуру» — это значит, что какая-то часть маршрутов обмена тех же криптовалют будет закрыта одномоментно. Если вы это имплементировали — это ваши проблемы. Мы в процессе разработки омничейн-продукта столкнулись с таким не раз.
Одна из самых больших ценностей — смарт-контракты. Это (упрощая) своего рода боты, которые умеют выполнять какую-то часть работы. Они открыты, их могут читать все, и через это строится доверие. Чтобы выпустить смарт-контракт, обычно нужно позвать аудиторов, они подтвердят, что он работает так, как описано, и затем только его загрузят на прод. Ну или автор смарт-контракта может внезапно обновить его на отъём всех денег у населения, и тогда пострадает только его репутация.
В общем, добро пожаловать в мир разработки на ончейн-данных. Ща познакомлю вас с некоторым дерьмом. Начнём с того, как одномоментно полтора миллиона человек потеряли свои деньги после краха FTX.
Кто я вообще нахер такой
В принципе, вам пофиг, вы завтра забудете. Поэтому имя, если надо, смотрите в профиле. Важно то, что я пару лет работал в разработке крупного обменника в области централизованных финансов, а вообще в разработке с 2014-го, а в крипте с 2017 года. Централизованные финансы (цефай, CeFi) и появление в противовес им децентрализованных (дефай) — это самые большие изменения, которые случились в мире примерно в 2021 году.
Децентрализованная финансовая система — это когда нет центра, который процессит операции или что-то обеспечивает. Простой пример: в CeFi биржа решает, как применять правила безопасности, с кем из клиентов соглашаться, кому отказывать в транзакции и т. п. Если биржа решит вас прокатить с закрытием счёта по подозрительной операции, вы об этом узнаете постфактум и даже не поймёте, в чём дело. Потому что биржа создаёт правила, меняет их, трактует их и так далее. И вы же должны доверять ей, что те деньги, которые вы туда положили, используются именно так, как они говорит.
В крипте цефай означает, что вы можете сделать некий аналог инвестиции с известным риском, а в ответ вам централизованная система подмешает риск, который в разы выше. Это как вкладываться в ПИФы банков, но не знать, что внутрь они пихают мусорные компании.
Дефай задумывался как противоположность этому. В децентрализованных финансах главное — смарт-контракты. Условно говоря, вы пишете правило и придаёте ему самостоятельное существование. Начиная с момента релиза смарт-контракта, правило начинает применяться прозрачно и одинаково для всех игроков рынка. То есть вы не можете взять и сделать исключение «для своего», скрыть часть данных или ещё что-то намутить. Собственно, Павел Дуров как раз много говорил про такую свободу в коммуникациях, а мне очень хотелось верить в это интервью.
У нашей CeDeFi-платформы было под управлением 360 млн долларов на пике, от 50 тысяч инвесторов из 83 стран. Модель такая: конечный юзер заносил деньги с карты или USDT, получал токен, а мы под капотом агрегировали все лучшие стратегии доходности в DeFi, тем самым упрощая юзер-экспириенс для конечного пользователя.
Это круто работало, пока не случился очередной трешняк. Сначала сломался алгоритмический стейбл, рынок сильно упал. Чуть позже продолжилось тотальным падением из-за FTX. Вот очень подробный пост на эту тему. Процитирую главное про биржу: «Неудивительно, что среди клиентов FTX началась паника: к 8 ноября объём изъятий средств с криптобиржи достиг 6 млрд долларов, а токен FTT просел уже на 80 % с начала месяца».
Причина — централизованная компания оказалась фактически пирамидой, устраивавшей дичь взакрытую. Весь рынок обвалился примерно на 70 %. Вместе с токеном нашей платформы. Собственно, это похоронило и наш проект. Как и ещё сотни проектов по всему рынку.
Так вот, после этих событий я и ещё несколько человек со всем этим опытом пришли делать инфраструктурный, но уже децентрализованный проект. Наш план был в создании омничейн-платформы над всеми сетями для того, чтобы можно было, условно, совершать сделки в один клик.
При чём тут один клик и что вообще творится с интерфейсами
Работа в децентрализованных финансах несёт весьма ощутимые неудобства и проблемы. Неудобств много.
Проблемы тоже существенные. Основная проблема в том, что рынок состоит из множества сетей. Каждая сеть, как правило, это какие-то раздельные кошельки. Для того чтобы использовать дефай, юзеру нужны 3–5–10 кошельков (стандартная норма по нашему исследованию дефай-юзеров). Чтобы хранить эти кошельки, нужно надёжно хранить сид-фразы, и если вы потеряете эти грёбаные 12–24 слова, вы лишитесь всех денег.
А между делом, пока вы подключаетесь к разным протоколам, вокруг сплошной скам и мошенники на охотничьей тропе. И нужно быть уверенным, что этот протокол безопасен. То есть безопасность в дефае — это вообще одна из ключевых проблем. Нужно найти адекватный протокол, адекватную стратегию и разобраться в них, чтобы ваши деньги куда-нибудь не увели на фишинговом сайте или левом протоколе. Ещё одна глобальная проблема — обмен токенов с одной сети на другую.
Сейчас всё это находится в состоянии такой альфы, где разработчики делают всё через консоль. Я, конечно, утрирую, но главная проблема рынка именно в этом.
То, что на днях сделал Телеграм с возможностью в один клик конвертировать доллар в токен и переводить этот токен, — это подвиг масштабов всего рынка. Так вот, мы делаем что-то такое не для одной сети, а для всех сетей. Сейчас расскажу про особенности разработки для этого ада.
Итак, основа инвестиций дефая — это смарт-контракты со стратегиями, что покупать, как покупать и когда покупать. Условно, вы платите смарт-контракту, а он дальше распоряжается вашими деньгами, и, если вы запросите вывод, — выдаёт ликвидность обратно.
Выбор стратегии сейчас напоминает выбор вклада в банке без знания рынка. Надо пойти в 10 банков ногами физически, в каждом открыть счёт, пройти все проверки, комплаенс, показать паспорт и жопу, дать согласие на обработку персональных данных и сдать кровь. После этого вам скажут, какой процент на вклад и другие условия. То есть первая задача — научиться хотя бы собирать информацию в одном месте. Информация, кстати, вся открыта и лежит в ончейн-данных, просто нужно её прочитать, разметить и обработать. Ну и реализаций стандартов там зоопарк, как их самих стандартов.
Предположим, вы даже выбрали стратегию после всего этого. Осталось, утрируя, дать денег смарт-контракту. Это тоже проблема — вам надо будет зайти в 3–4 кошелька, точно подсчитать, что сделать, произвести массу расчётов, обменов, подтверждений и т. п. То есть у вас это займёт пускай 10–20 кликов вместо трёх. Чтобы воспользоваться 5 разными продуктами на разных сетях, надо иметь 5 кошельков, к каждому нужно получить доступ через сложные механики, которые абсолютно неестественны для юзера.
Этот порог входа очень сильно отпугивает людей. Из финансов я хорошо знаю, что если бы ваши переводы с карты на карту Васе занимали бы 20 кликов в день, то все бы пользовались наличными.
Так вот, мы взялись делать некий аналог Сравни.ру для банков (где все условия и свой банковский продукт, основанный на агрегации вкладов в разные банки), только для дефая. Сбор данных, сравнение стратегий, собственные независимые метрики к ним, математические заключения на основе их историй, обзоры экспертов и быстрые конвертеры в 1 клик для инвестирования в эти стратегии. И самое главное ― это бесшовный опыт за счёт встроенного кошелька ERC-4337: Account Abstraction.
То есть мы в дефае делаем такой же опыт, как в Web2 или цефае. Как в классических финансах это делают всякие революты, пейпалы и прочие Робингуды.
Архитектура (сейчас вы заплачете)
Три основных модуля.
1. Агрегировать данные кошелька и суммаризировать все доступные юзеру активы.
То есть это управление счетами условно: система должна уметь открывать кошельки в разных местах, подключаться по API для совершения всех транзакций и тянуть данные.
Как я уже говорил, рынок представляет собой зоопарк реализаций ончейн-данных. Здесь нам понадобилось что-то, что просто умеет правильно собирать и грепать эти данные. Мы подключили поначалу Ковалент — проект, который агрегирует данные блокчейна, делает разметку, и можно дальше отображать всё в нужном качестве. Например, можно получить историю транзакций по кошельку, которую дальше можно разбить на поля или наложить что-то сверху. В общем, это API к данным через SaaS. С ним всё было хорошо, пока через 3 месяца не выяснилось, что он делает недостаточную разметку и пропускает часть операций.
Стали искать, что даёт максимально точный результат. Пошли в Дебанк — они занимаются аналитикой всех ончейн-данных. Размечают и визуализируют под себя, но предоставляют API наружу. Справлялись они до 1000 первых юзеров, то есть до второго дня интеграции (мы постепенно переключали аудиторию на него). На второй день выяснилось, что у красоты есть цена — за 3000 пользователей мы заплатили 2500 долларов. Запросы в таком количестве на нужные нам данные были очень дорогие, с такими расходами экономика просто не сходилась бы.
Третий план — использовать собственные индексеры (indexer) для сбора и разметки данных. Задача не из лёгких и быстрых. Ещё раз посчитали и оставили это на потом.
Четвёртый план — провайдер Zerion с API. У них свой кошелёк и своя аналитика, и внутри кошелька можно эту аналитику видеть. Чтобы вы понимали уровень костыльности, представьте, что то же мобильное приложение Тинькофф хочет показать вам, сколько денег у вас на рублёвом счету. Для этого оно стучит в СБП, СБП стучит в Сбер, Сбер узнаёт у Тинькофф, сколько денег на счету, отдаёт в СБП, СБП отдаёт вам в приложение. Вот примерно через такую хитро закрученную задницу в нашем мире всё и работает.
Угадайте, что будет, если очередной провайдер вдруг закроется. И да, сейчас расскажу на другом примере в третьем архитектурном блоке, но пока второй.
2. Маркет, который подключается к разным протоколам. То есть набор смарт-контрактов, каждый из которых отдаёт данные.
Ситуация примерно такая же, как с сетями с кошельками, только тут мы смотрим не активы юзера, а активы аккаунтов в местах, где юзер зарегистрировался. Подключаемся к разным смарт-контрактам и тянем с них данные по любым изменениям.
Тут всё чуть проще, поэтому мы сами идём в разбор протоколов. У каждого есть своя документация. Сами смарт-контракты в открытом доступе. Код можно скопировать и поковырять. По этому коду мы видим, куда и за что дёргать. В документации протокола есть всё нужное обычно. Иногда нет, тогда можно разбирать сам смарт-контракт или спросить у поддержки или сообщества.
3. Последний кубик — свопы, кросс-чейн и ZAP. Это, по сути, и есть перемещение денег.
Это основной и самый сложный модуль, мостик из одного места в другое. То есть из кошелька в кошелёк или в смарт-контракт. По сути, очень грубо, это наша самописная костыльная СБП для дефая. Но, в отличие от СБП, куда меньше и страшнее внутри.
Для того чтобы всё это делать, нужны смарт-контракты, которые реализуют операции. Напоминаю, смарт-контракт — это вроде бота, а бот — это вроде банковского оператора. Ему дали доллары и платёжку, он что-то забил в компьютер (обратился по API), у вашего друга Васи на счету появились цифры в рублях. Смарт-контракты так и делают. То есть это роуты между всем, что есть в сети.
Писать смарт-контракты люто дорого. Технически это свод правил операции (код), написанный на одном из языков. Около 80 % смарт-контрактов пишутся на Солидити, и это должен как минимум уметь читать на лету любой дефай-разработчик.
Хорошие смарт-контракты не поставляются по лицензии AS IS. Они обычно неразрывно связаны с разработчиком, и разработчик отвечает за их надёжность и безбажность как минимум своей репутацией. Для того чтобы разработать хороший смарт-контракт, обычно стоит обратиться к компании, которая специализируется на том, что он будет реально хорошим.
Как в реальном мире вы идёте к юристам, чтобы составить договор, так и тут вам стоит сходить к разработчикам, чтобы получить смарт-контракт. Они напишут его с гарантией хорошо, потом отдадут аудиторам, потом покажут сообществу, только потом отрелизят. Если нужно будет что-то поменять или внести апдейт — путь такой же. Расскажут сообществу, покажут изменения кода, покажут заключение аудиторов, подождут, пока все всё обсудят, потом отрелизят. В проде смарт-контракт становится самостоятельным без таких апдейтов. Это похоже на опенсорс как таковой.
То есть писать собственный смарт-контракт дорого. Мы брали смарт-контракты из пула готовых у провайдера Wido. Там классический 1-click для пользователя, хорошие роуты, хорошее API. Но через месяц они присылают письмо: уважаемые друзья, у вас месяц собрать чемоданы и переехать отсюда на хер. К слову, сейчас они закрылись и делают что-то другое. Спасибо, что хотя бы предупредили. У нас тогда уже были тысячи юзеров, мы пребывали в лёгком шоке. Спешно пошли в новую архитектуру со смарт-роутингом, где существует несколько провайдеров одновременно для получения лучшего курса и подстраховки на случай закрытия проекта. Они специализируются на роутах в 1 клик. Заменили кубик.
В этот момент ко мне пришёл CTO Кирилл и сказал, что
Итак, у нас получилось сделать агрегацию активов в одном месте, варианты «вкладов в разных банках» (точнее, инвестиционных стратегий от разных площадок) и механизмы для перекидывания активов между этим всем. Сверху мы наложили аудиты, риск-скоринг, плюсы-минусы от экспертов и удобные интерфейсы, понятные обывателям. Зарабатываем на 0,3 % за транзакцию, позже будем писать свои финансовые стратегии и будем брать 5–8 % performance fee, то есть только с выведенной прибыли и с наших стратегий.
Вот так это выглядит (но постоянно меняется)
Это всё заняло около года.
Люди
В дефай приходят те, кто верит во что-то светлое и децентрализованное. Кто в детстве вешал постеры Information must be free на стены и так далее. Кто не хочет, чтобы банки или другие рептилоиды управляли финансовой системой и мутили втёмную свои дела. Потому что дефай прозрачный, просто пока что очень сложный для юзера.
Вот Кирилл рассказывает про себя. Его история, наверное, типичная:
Учился я на инженера. Где-то с 2012 года начал проявлять интерес к программированию. Это я ещё учился в институте и начал заниматься фрилансом. Поначалу пошёл инженером-конструктором по профессии. Спустя примерно семь месяцев, работая по специальности, я плюнул на неё и устроился в web-студию. Это 2018-й был, в конце года перешёл в блокчейн-компанию. Шёл в сомнениях, потому что казалось пирамидой какой-то. На тот момент у меня только на слуху было про биткоин и всё такое. Я особо в это не вникал. Когда пришёл туда, там нормальный такой СТО был, прям мозговитый. Он построил целиком всю эту сеть, блокчейн развернул. Она была в России номер один. Называлась сеть ACRYL на базе Waves. Набрался до фига этого опыта. Это всё прям нормально бустануло, что я начал специализироваться именно на блокчейн-продуктах.
Был полный развал, особенно технический. Куча багов, не было нормальных метрик даже технических. В общем, я там начал этим заниматься. Сначала для себя, потому что я был единственным бэкендом в команде. Потом уже меня назначили техлидом в команде, которая именно занималась обменом. В дальнейшем уже, когда было три команды.
После этого только ими и занимался. Потом ACRYL этот немножко соскамился, то есть я был прав, что это пирамида. У компании было два направления: B2B и B2C. B2B было связано с людьми, которые покупали ноды для обеспечения сети, им было гарантировано 200 долларов в месяц дохода. B2C-направление было связано с пользователями блокчейна. Пользователей было не так много, чтобы оплачивать все эти 200 долларов на каждого держателя нода ежемесячно, поэтому это оплачивалось с продажи новых нод. Звучит, как полный МММ. Гендир был на должности политика в Алтайском крае, вроде против него даже за взятки судились.
После ACRYL оказался в роли бэкенда одного из самых крупных крипто-обменников, только-только набиравшего обороты. Преодолев все стартаперские челленджи, я трансформировался из мидла в сеньора, а несколько позже и в CTO. И всё бы супергуд, но бэкенд перерос в ералаш с бесконечными созвонами и рутиной типичного менагера. Моей новой реальностью стали сообщения в бесконечных тредах Слака, гуглмиты и мониторинг досок в Jira. Иногда в Grafana заходил посмотреть, что у нас лежит. Я почти забыл, как выглядит написание кода. Это нужно было срочно менять. Так я попал в Rivo, дефайный стартап.
В последнем предложении — это он про нас. Но от нас он тоже уже скоро уходит, потому что его новой реальностью стали сообщения в бесконечных тредах Слака, гуглмиты и мониторинг досок в Notion.
Из важного — он нам поставил архитектуру по вот тем кубикам, как выше, и взаимозаменой провайдеров на лету (если один не отвечает, делаем через другого) и переписал все вычисления с бэкенда с Node.js на микросервисы Golang. Почему Го — потому что при обработке ончейн-данных настоящий хайлоад нужно сагрегировать очень много разношёрстного. Точнее, сам JS у нас так и остался JS. Все запросы до сих пор летят в Node.js-стек, а он уже распределяет, иногда в го-часть.
Так что поначалу это был CTO, который пишет код (говорят, ужасная ситуация), а потом стал CTO, который остался на встречах. Собственно, сейчас он решил попробовать себя в предпринимательстве и пойдёт пилить свой проект. Как мы когда-то начинали пилить свой. А нам по-прежнему нужен играющий тренер, который пишет код.
Дефай сделан пока из палок
Палок много, но они — костыли. Инфраструктура и рынок очень молодые, поэтому пока можно приходить на всё ещё развал (где мы как раз наводим порядок) и творить любую дичь. В сферу приходят люди с горящими глазами, которых мотивируют самые разные люди — от Дурова до сотрудников военкомата.
Главное, чего сейчас не хватает, — абстракции аккаунтов. То есть смарт-контракта, который позволяет программировать различные функции для юзера. По сути, его можно будет завернуть в обычную упаковку: вход через гугл-аккаунт, оплата любым токеном или валютой и так далее.
Вот примерно так оно всё выглядит. Вот тут я уже писал про технологию запов (смарт-контрактов для роутинга активов), вот про абстракцию аккаунтов и куда мы все бежим, вот тут наша открытая документация проекта, начинающаяся с проблем. Есть проект манифеста — я был очень серьёзен, когда говорил про идейных разработчиков (деньги тоже большие, но идейность важнее). И вот моя телега.
Комментарии (5)
megamrmax
02.05.2024 09:14"Рынок криптовалют очень социально ориентированный, здесь все строится на основе сообщества и открытых доверительных отношений"
Лет так ...дцать назал слышал анекдот про Петьку и ВИ. О том как данный персонаж выигрывал в карты так как все строилось именно на том, что вы указали. Любые доверительные отношения (100% признак очередного скама) обратно коррелируемые с размером денежных средств у доверителей. И прямо при наличии 9мм у виска партнера
Delphinum
02.05.2024 09:14появление в противовес им децентрализованных (дефай) — это самые большие изменения, которые случились в мире примерно в 2021 году.
Эмм, а появление полностью децентрализованных amm обменников типа uniswap в 18 году и децентрализованных кредитных систем типа compound finance в 17 году это не дефай? Что такого случилось "примерно в 2021 году", что автор считает появлением дефай?
Delphinum
02.05.2024 09:14Продолжил читать и еще немножко добавлю к первому коменту.
Сейчас всё это находится в состоянии такой альфы, где разработчики делают всё через консоль.
Эмм, а должно быть мышкой? Вроде все так же, как в других сферах - контракт, линтер, компилер, деплой скрипты, тесты, ci/cd, релиз. Не понимаю, в чем "зачаточность" и что хочет автор.
То есть это управление счетами условно: система должна уметь открывать кошельки в разных местах, подключаться по API для совершения всех транзакций и тянуть данные.
Посмотрите в сторону quicknode, либо, если упираетесь в тарификацию, то собственные ноды с эзерсканом (хотя он тоже стоит как крыло самолета), либо без эзерскана на чем то самописном.
Угадайте, что будет, если очередной провайдер вдруг закроется.
То же, что и в любой другой сфере?
Ситуация примерно такая же, как с сетями с кошельками, только тут мы смотрим не активы юзера, а активы аккаунтов в местах, где юзер зарегистрировался. Подключаемся к разным смарт-контрактам и тянем с них данные по любым изменениям.
У вас на этом шаге будет куда больше проблем, чем на первом. Если стандарты бч и какого нибудь erc20/erc721 (по которому вы отслеживаете движение активов пользователя) меняются чуть менее чем никогда, то частные протоколы меняются довольно часто, а если вы их подключаете еще и много, то изменения будут ежедневными.
Писать смарт-контракты люто дорого.
Эмм, что?
Это основной и самый сложный модуль, мостик из одного места в другое. То есть из кошелька в кошелёк или в смарт-контракт. По сути, очень грубо, это наша самописная костыльная СБП для дефая. Но, в отличие от СБП, куда меньше и страшнее внутри.
Не совсем понимаю смысл этого шага. Вы хотите дать юзерам возможность без лишних телодвижений вкладываться в разные протоколы и снимать из них вклады. Вы пилите под протокол свой адаптер на каком нибудь любимом ЯП и юзаете любой доступный в данной сети Account Abstraction, собственно вот и все что вам нужно. Зачем здесь новые контракты, если вы инвестируете в чужие протоколы, у которых уже все контракты реализованы?
Главное, чего сейчас не хватает, — абстракции аккаунтов.
В 2022 пилил примерно то же, о чем пишите вы в посте без каких либо абстракций аккаунтов - просто адаптер под конкретный протокол на жс, который умеет работать как на беке, так и у клиента (для автоматизации или мануального использования). Проблема оказалась не в отсутствии account abstraction, а банально в невозможности это продать инвесторам, ибо "вы сначала сделайте проект успешным с 100к активными юзерами, а потом мы вам денег занесем на маркетинг).
Палок много, но они — костыли.
Попробуйте openzeppelin.
aweawem
А что стало в держателями токенов вашего первого проекта? Вы просто всё бросили, а теперь как рынок снова восстановился решили пересобраться в новый проект и снова собрать денег с народа до очередной смены цикла? Если ваш токен был обеспечен другими токенами , которые вы по умному распределяли в стейкинг, то они же никуда не испарились. Или вы на самом деле всё загоняли тот самый стейкинг на обнулившийся UST?
halezov Автор
Да, это хороший вопрос, и мы не оставили наше сообщество, уйдя в закат. Всем держателям токена было предложено остаться и получить токен нового проекта или выплату в размере 70% от депозита — это то, что нам удалось спасти перед тем как все рухнуло. Большая часть держателей решила остаться и до сих пор находится с нами в тесном контакте, помогая строить новый продукт. Рынок криптовалют очень социально ориентированный, здесь все строится на основе сообщества и открытых доверительных отношений, а наша команда полностью публична