Как я создал децентрализованную биржу на Minter за неделю
25 сентября завершился второй хакатон Minter, посвященный запуску децентрализованных бирж (DEX). За неделю команды разработчиков должны были создать удобный интерфейс для мониторинга цен монет в testnet Minter Network, а также предоставить простой инструмент для их покупки и продажи прямо из кошельков пользователей. DeCenter поговорил с Артуром Борисовым и Алексеем Поляковым из команды MonsterNode, получившей 10 эфиров призового фонда, и узнал, чего стоила победа в столь непростом тендере.
В этот раз перед участниками стояла задача разработать и запустить децентрализованную биржу (DEX), пользователи которой смогли бы мониторить активность всех монет, выпущенных в сети Minter Network, а также осуществлять прямые переводы на другие адреса. На разработку и запуск торговой платформы отводилась неделя, а в помощь был предоставлен доступ к PHP SDK и детальной документации к нему.
В результате члены команды MonsterNode разработали и запустили удобную торговую платформу Monster DEX, позволяющую не только просматривать и анализировать движение всех монет сети, но и получать подробную информацию по каждой из них.
Биржа также предоставляет простой в использовании инструментарий для покупки и продажи всех активов напрямую между пользователями.
Именно этот продукт принес разработчикам команды MonsterNode победу и 10 эфиров призового фонда.
Как запускалась биржа?
Поскольку перед командой не стояла задача по хранению пользовательских данных, то в первую очередь был разработан децентрализованный доступ к бирже в том же формате, что и официальный кошелек Minter — вход по логину и паролю из сети, а также авторизация и регистрация через seed-фразу. Что касается самого интерфейса, то в основу легла ранняя версия криптобиржи Poloniex.
Далее разработчики приступили к работе со списком монет, для которых нужен был удобный обозреватель с фильтрами и табличными данными, которые необходимы пользователям платформы. Стоит отметить, что монеты, выпущенные на Minter, имеют уникальную особенность, которая не позволяет вести торги в привычном всем виде. Дело в том, что на цену любой монеты влияют не только сделки в сети, которые происходят каждые 5−6 секунд, но и стоимость их резерва в основном коине сети Minter Network (в testnet это MNT, а в mainnet это BIP, которые будут выпущены после запуска основной сети), а также их процент обеспечения этим резервом.
Блокчейн Minter устроен таким образом, что сразу после создания монеты имеют реальную ценность, обеспеченную резервом и экономическими формулами. Более того, резерв создает абсолютную и мгновенную ликвидность для всех участников рынка, поскольку любую монету можно обменять на любую другую всего за пару секунд и без посредника. Таким образом любой держатель монеты может влиять на ее стоимость. Тем не менее цену любой монеты всегда можно подсчитать по экономической формуле.
В результате разработчики пришли к выводу, что информацию о сделках, сформированных на бирже хранить не имеет смысла. Вместо этого перед будущими победителями хакатона Minter встала задача разработать парсер — программное обеспечение для сбора данных с целью их дальнейшей обработки и преобразования в структурированный формат для организации данных из блокчейна. В данном случае на помощь пришел SDK, который предоставил команде все необходимые данные из сети, а именно информацию по транзакциям, а также данные по созданию, продаже, покупке и делегированию каждой монеты.
После того как парсер был готов, члены команды MonsterNode приступили к выводу полученных данных в формате графиков и сводных показателей, необходимых пользователям биржи для торговли.
«Мы вычислили формулы, по которым можем узнать цену монеты на момент времени в прошлом, выясняли то, как может повлиять на это делегирование монеты Валидаторам, а также производили пересчет цен в основную монету в сети, так как Minter позволяет обменивать монеты между собой. Это создало некоторые трудности с расчетом объемов торгов и суммы сделок. Но в итоге мы собрали данные в разрезе по времени, что позволило вывести графики изменения цены, учитывать объемы торгов и вывести сводные показатели в список и фильтр монет», — рассказали победители второго хакатона Minter.
Также командой было решено предоставить пользователям фильтр по создателям монет, поскольку в блокчейне Minter эти данные отображены в виде адреса кошелька автора. Более того, разработчики запустили фильтр, позволяющий исключать из списка монет те, что были созданы только для делегирования, монеты с мелким обеспечением, либо же монеты, имеющие низкие показатели по объемам торгов в сутки.
Поскольку с каждым новым решением парсер биржи обрастал функционалом хранения сводных показателей, команда приняла решение хранить данные в SQL-базе. А для ускорения вывода списка разработчики начали кешировать все в памяти и сбрасывать кеш при появлении нужной транзакции в сети.
Создание удобного механизма для обмена монет на бирже стало следующим важным шагом в запуске Monster DEX, однако, как отметили сами разработчики, команда увлеклась процессом, и в дополнение к стандартным функциям покупки и продажи добавились формы делегирования и отправки монет на любой адрес.
Удобное API Minter позволило команде организовать отправку различных транзакций со своей площадки буквально за час. При этом все транзакции видны в блокчейне как проведенные из кошелька авторизованного на бирже пользователя.
Что касается безопасности, то, как и в случае с любой другой децентрализованной площадкой, Monster DEX должна иметь надежную защиту программной составляющей биржи, через которую злоумышленники могут пытаться украсть приватные ключи кошельков пользователей. Для этого командой было принято решение шифровать данные, возвращаемые блокчейном после авторизации, с помощью openssl_ecrypt, а также хранить их в Localstorage браузера пользователя.
В итоге команда MonsterNode разработала и запустила надежный и удобный в использовании продукт, позволяющий не только управлять монетами пользователей, но и следить за динамикой и показателями других коинов.
Будущее Monster DEX
Конечно, у команды было мало времени для того, чтобы реализовать абсолютно все свои идеи, и поэтому у разработчиков осталось много планов по развитию своего продукта.
В первую очередь команда планирует добавить отложенные ордера, которые также будут обрабатываться через транзакции в блокчейне и исполняться только при согласии пользователя. Также в планах добавить полноценный кошелек в профиль, доработать русскоязычный интерфейс и сделать апгрейд системы безопасности.
Команда MonsterNode с особым интересом рассматривает возможность прямых покупок монеты основной сети — BIP в Mainnet — за Bitcoin, Ethereum и ряд других топовых криптовалют. Более того, на децентрализованной бирже будут присутствовать некоторые возможности обычных торговых площадок, например, история торгов с расчетом профита, различные торговые пары, стакан отложенных ордеров (он также будет храниться в блокчейне).
Также команда планирует начать разработку простых игр для мессенджера Telegram с выплатами через блокчейн Minter. По словам разработчиков, в команде постоянно рождаются новые идеи, поскольку даже в testnet Minter Network отличается широким инструментарием и высоким уровнем поддержки. А любой продукт можно сразу перевести в Mainnet.
Децентрализованная биржа не является единственным продуктом MonsterNode с использованием блокчейна Minter. Разработчики также создали рейтинг Валидаторов с проверкой начислений для каждого владельца стейка, поддерживают мастерноду MonsterNode, а также взаимодействуют с командой Minter для улучшения инструментария разработчиков и отладки сети перед запуском Mainnet.