folder Filed in Development

Как работает наш ордербук поверх ipfs pub sub в swap.online dAPP

Aleksandr Noxon comment 0 Comments

This post is also available in: English (Английский)

Ордер — объявление о том, что пользователь хочет обменять криптовалюту X на криптовалюту Y. 

Ордербук — актуальный список ордеров, необходимый, чтобы пользователи быстро находили подходящие ордера друг друга и начинали обмен.

На централизованных или полудецентрализованных биржах (IDEX) данные об ордерах хранятся в базе, таким образом администратор несет ответственность за то, что сводит продавцов и покупателей, так же как, например несут ответственность  торрент трекеры.

Задача полностью децентрализованного обмена — исключение влияния администратора на процесс обмена и поиска ордеров в сети. Мы справились с этой задачей при помощи библиотеки ipfs pub sub.

Данные хранятся у пользователей и передаются через сеть на базе ipfs pub sub, которая передает сообщения другим участникам сети через библиотеку libp2p, единственная точка отказа в нашем случае — сигнальный сервер, который не находится под контролем администратора (например публичный ws-star.discovery.libp2p.io).

Как именно это работает?

  1. Мы подключаем библиотеку ipfs и ipfs-pub-sub-room https://github.com/ipfs-shipyard/ipfs-pubsub-room#use
  2. Указываем внешний публичный сигнальный сервер (он необходим для нахождения первого пира в сети) https://github.com/swaponline/swap.react/blob/master/config/mainnet/ipfs.js
  3. Пользователь заходит и через некоторое время подключается к нескольким другим пользователям, они как бы находятся в чате в одной комнате. Об этом сообщено снизу страницы
  4. Пользователь создает ордер через интерфейс
  5. Ордер формируется и отправляется через библиоткеку libp2p вот здесь https://github.com/swaponline/swap.core/blob/master/src/swap.orders/SwapOrders.js#L317 
  6. Каждое сообщение подписывается приватным ключем пользователя (от ethereum)  и проверяется через web3.ecrecover https://github.com/swaponline/swap.core/blob/master/src/swap.room/SwapRoom.js#L174
  7. Получив доступные оредра наш dAPP выводит их пользователю 
  8. Кроме того этот ордербук анализируется при обмене через упрощенный интерфейс, где пользователь вводит сумму для обмена. выбирается наиболее подходящий ордер и к нему отправляется запрос

Полный список сообщений которые передаются через систему IPFS

  • ready
  • user online
  • user offline
  • new orders
  • new order
  • remove order
  • hide orders
  • show orders
  • accept request
  • decline request
  • request swap
  • new order request
  • accept swap request
  • request partial fulfilment
  • accept partial fulfilment
  • decline partial fulfilment
  • new partial fulfilment request
  • различные сообщения внутри свапа

how it works


Previous Next