Тестирование смарт-контрактов Plutus
В 2021 мы проверяли, как смарт-контракты Plutus ведут себя в реальных проектах. Тесно сотрудничая с внутренней командой IOG, наши разработчики помогали находить ошибки и участвовали в брейнштормах на тему внесения улучшений.
В частности, мы тестировали хардфорк Alonzo Purple перед его развёртыванием в основной сети. Тестирование позволило увидеть, в каком виде хранятся eUTXO, как их использовать в транзакции и как выполнять валидацию.
На момент нашего участия у IOG не было тестовой сети, поддерживающей смарт-контракты, а также документации, позволяющей разобраться в некоторых вещах. Мы работали с симуляцией. Когда появилась тестовая сеть, оказалось, что она не поддерживает многие фичи, — например, PAB с кошельками, конечные автоматы и т. д. И код, который мы успешно запускали в симуляции, не всегда работал в реальной сети. В специальном сообществе в Discord мы постоянно общались с разработчиками Plutus и другими участниками программы тестирования контрактов, обсуждая способы исправления возникших ошибок. Основная внутренняя команда IOG оказала нам большую поддержку; в частности, Ларс Брюньес, – директор по образованию, – был очень отзывчив и полезен (привет, Ларс!).
Порой ни у кого не было готовых предложений или советов, и нам приходилось заглядывать в исходный код Plutus и разбираться самим. Здесь нам помогла фундаментальная подготовка — полезный подход в любой области, а в блокчейне — и подавно, ведь практически невозможно написать смарт-контракты, не владея знаниями о том, что они собой представляют. А ещё в некоторых случаях нам помогало изучение существующих решений в Ethereum.
Проектирование NFT-маркетплейса
Результатом участия в программе тестирования платформы Plutus и опробования протокола IPFS стала первая торговая площадка NFT с аукционом на блокчейне Cardano.
NFT создаётся в два этапа: первый — загрузка связанных метаданных (это может быть любой файл, например изображение) в хранилище, второй — чеканка токена, который поступает в кошелёк создателя на блокчейне. Первый шаг требует адресуемости контента, — её обеспечивает протокол IPFS, который присваивает каждому файлу уникальный идентификатор (он представляет собой криптографический хеш). Основная цель смарт-контракта торговой площадки — обеспечить прямую связь между токеном в кошельке пользователя и этим идентификатором контента. Нам удалось этого достичь, и пользователи нашего маркетплейса могут:
- Создавать свои невзаимозаменяемые токены;
- Объединять карты (токены) в коллекции (пачки);
- Сделать аукцион;
- Установить цену и период аукциона;
- Загружать изображения, а также видео и аудио файлы.
Платформа монетизируется за счёт комиссий от продажи NFT и аукционов.
При запуске маркетплейса в тестовой сети в 2021 оказалось, что кошельки не интегрируются с PAB и подписывать транзакции невозможно. Поэтому проект так и не был запущен в тестнет.
Разработка децентрализованного облачного хранилища
Компания Iagon задалась целью создать для людей безопасный способ хранения и владения данными о своём здоровье. Благодаря прозрачности, открытости и неизменяемости блокчейн-технология — самая подходящая почва для воплощения замысла. Мы помогаем Iagon разрабатывать децентрализованную облачную систему на блокчейне Cardano для задействования неиспользуемых вычислительных мощности и ёмкостей хранения центров обработки данных, компьютеров и интеллектуальных устройств. По задумке создателей, каждый сможет предлагать свободные мощности на рынке, получая, таким образом пассивный доход. Эта децентрализованная облачная система составит конкуренцию централизованным гигантам-поставщикам облачных услуг (например, Google Cloud или Microsoft).
Cardano была выбрана площадкой для развёртывания протокола как наиболее удачно сочетающая в себе возможности масштабирования, совместимости, экологичности, низкой стоимости транзакций и безопасности, основанной на научном подходе. Главная задача смарт-контракта в первом децентрализованном облачном хранилище этой сети — обеспечить прямую, без посредников, связь между покупателями свободных ёмкостей хранения и провайдерами storage или compute.
На момент написания статьи мы столкнулись с проблемами при интеграции контракта с фреймворками от IOG, — такими, как PAF (Plutus Application Framework), — и работаем над их решением. Если простые контракты можно задеплоить без PAF, то более сложные и масштабируемые решения не имеют другого конкретного способа релиза контракта в открытый доступ. Это обратная сторона медали разработки Cardano, которая преимущественно фокусируется на поддержке ноды и ключевых элементов.
Создание стейблкоина для ADADAO
Adadao — это децентрализованный лендинг на блокчейне Cardano для займа стейблкоинов AUSD под залог ADA. AUSD можно использовать как обычную криптовалюту, оплачивая товары и услуги или отправляя другим пользователям.
Займ можно взять при условии размещения залога с запасом (например, 1 AUSD за 1.5 ADA залога). Сверхзалог нужен для того, чтобы в случае падения стоимости ADA, AUSD оставался обеспеченным. Если займ становится недостаточно обеспеченным, система списывает долг с заёмщика, и обменивает его залог на AUSD используя Stability pool, распродажу на аукционе или перераспределение долга. При возвращении займа пользователь забирает залог, а полученные AUSD сжигаются.
На момент написания статьи (август 2022) мы уже разработали основную часть протокола. Сюда входят смарт-контракты для заёмщиков и вкладчиков в Stability pool, контракты для ликвидации, аукциона, а также модуль для управления протоколом и мониторинга курса ADA к AUSD, чтобы отслеживать и запускать ликвидации. В стадии ресёрча и разработки находятся: контракт по перераспределению ликвидированного долга, контракт для регуляции курса AUSD, контракт для держателей управляющих ADAO токенов и голосования.
При запуске протокола в тестнет мы столкнулись с проблемой в работе chain-index — компонента PAB, — а также с тем, что большая часть кода, написанного для симуляции, не работает в тестнете. Отстуствие ораклов в мейннет не позволяет получить данные, необходимых для работы протокола, поэтому пока мы используем моковый оракл (фейковый оракл, который мы сами написали; мы меняем его данные вручную, когда проводим тесты). Было бы так же хорошо иметь альтернативные стейблкоины в мейннет — в аукционах или в качестве альтернативной валюты для залога.