March 15, 2023

E-Crypto: ТЗ?

Нужно реализовать криптовалютную биржу и p2p функционал на внутренней системе для приложения в VK.

Для общения с блокчейном предоставляется "ядро", которое имеет документацию и функционал:

  1. Создание кошелька для пользователя (кастодиальный) - выдача номера кошелька (hash) пользователю (user_id)
  2. Пополнение (прием валюты) - БД получает инфу от "ядра", кто (user_id) пополнил биржу какой валютой (currency)
  3. Выпуск криптовалюты (вывод крипты из приложения на внешний некастодиальный кошелек)

Что нужно реализовать

  • Биржа
  • P2P сделки
  • Кошелек пользователя
  • Получение крипты
  • Отправка крипты

Биржа

Типичная биржа, как везде, работающая по принципу peer-to-peer (p2p). Единственное отличие в том, что все сделки обрабатываются автоматически, без взаимодействия двух сторон в реальном времени.

Имеется общий список заявок от разных людей на покупку/продажу чего-то за сколько-то (один токен на другой токен).

Пример:

  • Куплю 100А за 50Б (цена за единицу)
  • Куплю 340С за 32А

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

Появляется:

  • Продам 250А за 50Б

По логике, первый и третий заявки закрываются автоматически друг другом. Тот и тот имеют одинаковую цену и типы токенов. В итоге первый автоматически покупает 100А у третьего за 50Б. При этом третий остается, но с 150А за 50Б, тк у него купили на все. Точно так же работает и когда покупают больше, чем продают.

Чтобы купить/продать на бирже, есть два способа:

  • Лимитный ордер — указываешь, что продаешь/покупаешь и за какую цену (потом ждешь, когда совпадет)
  • Рыночный ордере — указываешь, что продаешь/покупаешь без цены (для срочного, тк работает немного иначе, но сделка закрывается сразу: цена выставляется автоматически по минимальной на покупку/продажу в стакане)

Пример рыночного:

Надо купить 10А

  • Есть 5А за 100Б
  • 6А за 90Б
  • 4 за 80
  • 3 за 70

В итоге будут куплены 3*70 + 4*80 + 3*90
В стакане останутся 3А за 90 и 5А за 100.

С продажей работает точно так же.

P2P Сделки

Похожи на принцип биржи, но есть отличия:

  • согласование двух сторон о сделке
  • обмен крипты и реальных денег (в нашем случае)
  • только лимитный ордер

Такой же список заявок (стакан), только теперь мы например продаем рубли и покупаем крипту. Мы выбираем заявку и тому человеку отправляется уведомление о сделке. Он ее принимает и его крипта замораживается беком. Нам приходят его реквизиты для отправки денег. Мы отправляем и жмем подтверждение. Тот человек получает и жмет выпуск валюты. Мы получаем крипту на свой кошелек (необязательно внутренний, то есть может быть некастодиальный).

Если где-то нарушен этап с подтверждением и одна из сторон хочет удержать деньги, обычно крипту, то тогда обращение в ТП. Замороженную крипту потом все равно вышлют тому, кто покупал.

От числа успешно закрытых сделок и просто совершенных строится рейтинг человека в процентах.

Перевод / Получение

Перевод n токенов на указанный номер кошелька

либо

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

Все?)