BYODex — создайте собственную децентрализованную биржу

Введение

Что такое БАЙОДекс

BYODex — это крошечная децентрализованная биржа токенов, построенная на основе смарт-контракта. Это не биржа, как вы ее знаете, а скорее контролируемая среда DApps с точки зрения ценовой политики. BYODex децентрализован в том смысле, что он работает поверх сети Ethereum, разбросанной по всему миру, а не на конкретном сервере. Он определяет владельца проекта как маркет-мейкера и позволяет пользователям биржи покупать и продавать токены непосредственно из своих кошельков без необходимости сначала вносить токены, доверять третьей стороне или платить какие-либо комиссии за обмен.

Зачем вам это нужно

  • Ваш проект не хочет или не может размещаться на других биржах
  • Ваш проект заинтересован в проведении ICO/STO/продажи токенов (сначала отчеканив токены и передав их в dex для продажи)
  • Ваш проект хотел бы повлиять на рыночную цену токена (с помощью маркетмейкинга)
  • В вашем проекте должна быть предусмотрена какая-то дополнительная форма проверки сделок/трейдеров (KYC/AML/STO).
  • Ваш проект предлагает контролируемый способ выкупа токенов

Архитектура

Основой этого dex является смарт-контракт: BYODex.sol

После развертывания у dex может быть несколько администраторов, которые могут приостановить торговлю или обновить курсы токенов. Для этой демонстрации мы используем стандартный токен ERC20, который мы назвали Sample Token, и его можно обменять на эфир.

Пользовательский интерфейс этого проекта очень чистый и простой, созданный с помощью Bootstrap и Javascript. Несмотря на то, что это достаточно хорошо для этой демонстрации, мы бы предложили использовать React и Drizzle для производственного проекта для дополнительных функций, которые предоставляют эти инструменты.

Демонстрация биржи

Если вы хотите попробовать, отправляйтесь в с помощью браузера с поддержкой web3 (например, Metamask). Если у вас нет экземпляра web3, вы должны увидеть это всплывающее окно:

Если все настроено и вы переключились на тестовую сеть Rinkeby, то вы должны увидеть… главную панель управления BYODex, бум!

Это DApp позволяет торговать данным токеном. Вы также можете видеть, что курс покупки и продажи был установлен администратором в 100 и 150 токенов за 1 эфир соответственно. Эта панель также показывает текущий баланс эфира и токенов вашего подключенного кошелька, а также баланс dex. Обратите внимание, что на данный момент dex держит 1 000 000 токенов и ноль эфира. Попробуем купить 100 токенов за 1 эфир, как показано ниже:

Метамаска показывает, что транзакция была обработана, как показано ниже:

Мы видим, что наш новый баланс токенов изменился на 100, и мы стали беднее на 1 эфир. С другой стороны, у dex теперь есть 1 эфир и 999 900 токенов.

Теперь давайте попробуем продать часть токенов обратно. Если контракт токена, который вы используете, имеет approveAndCall функциональность, процесс продажи может происходить за одну транзакцию. Однако многие токены не имеют этой функции, поэтому сначала нам нужно разрешить dex взять токены из нашего кошелька (одобрить), а затем продать их в последующей транзакции. Процесс одобрения 75 токенов показан на следующем скриншоте:

А вот всплывающее окно от Metamask для подтверждения одобрения:

Как только токены будут одобрены, мы увидим утвержденный баланс, показывающий 75:

И, наконец, после продажи наш баланс токенов сократится до 25, но мы вернем 0,5 эфира. Количество утвержденных токенов снова равно 0. Баланс эфира и токена dex будет обновляться соответственно, как показано ниже:

Так что это будет основной способ для пользователей покупать и продавать ваши токены.

Панель администратора

Здесь у нас есть очень простой пример панели администратора. Как вы можете видеть ниже, он позволяет приостанавливать торговлю и обновлять курсы:

Если подключенный адрес Ethereum не принадлежит администратору, он получит вежливое примечание, чтобы вернуться на главную страницу dex:

Теперь попробуем приостановить торговлю. После нажатия кнопки паузы от имени администратора и ожидания подтверждения транзакции мы должны увидеть следующее. Обратите внимание, что все транзакции пользователей, пытающихся купить или продать, теперь завершатся с ошибкой. Также можно было бы поставить на паузу только одну сторону: купить или продать.

Мы также можем обновить курсы, например, изменим курс покупки на 140 токенов за 1 эфир:

Наша новая ставка теперь обновлена, так как она видна как в представлении администратора, так и в главном дексе:

Куда пойти отсюда

Этот демонстрационный проект может быть расширен до проекта, в котором торгуются любые токены ERC20-ERC20. Это может быть особенно интересно, если вашему проекту нужна торговая пара со стабильной монетой, такой как DAI, TUSD, USDC и т. д.

Другой возможный вариант использования — если вашему проекту требуется простой способ контролировать, кто может покупать и продавать на этой dex. Это может быть достигнуто с помощью белого списка в цепочке или подписи сообщения вне цепочки.

Для еще более детального контроля, например, точных сумм и конкретных кошельков, которыми можно торговать, скорее всего, лучше всего использовать подпись сообщений. Как это может выглядеть на практике: любой пользователь должен будет вставлять дополнительное сообщение, которое он получает от администратора проекта (в новое текстовое поле на панели инструментов), когда он торгует. Это будет проверено смарт-контрактом и отклонит любой недействительный торговый запрос.

Резюме

Эта короткая статья должна дать вам хорошее представление о том, как работает BYODex. Мы считаем, что он может быть полезен для многих проектов, поэтому мы решили открыть его исходный код, несмотря на некоторые неполные функции пользовательского интерфейса на данный момент (отсутствие автоматического обновления, отсутствующие кнопки вывода токенов/эфира и т. д.).

Если вы считаете, что этот проект можно расширить и каким-либо образом помочь вашей организации, сообщите нам об этом или свяжитесь с нами если вам требуются какие-либо услуги по разработке блокчейна.

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *