Основные операция по движению денег:
Ввод средств делится на два типа: прямой депозит на горячий кошелек системы (direct deposit) и на прокси-кошелек (deposit). В последнем случае для eth-подобных блокчейнов - система несет затраты по сбору средств с прокси-кошельков на горячий кошелек системы.
Вывод средств (withdrawal)
Обмен валют без ввода/вывода средств (off-chain swap)
Ввод валюты с единовременным обменом (swap-in)
Обмен валюты с выводом результата (swap-out)
Обмен валюты, пришедшей извне, с одновременным выводом результата (on-chain swap)
Для заработка в системе могут быть настроены следующие виды комиссии:
direct deposit fee
deposit fee
withdraw fee
swap fee
Для комбинированных операций взимаются наборы соответствующих комиссий. Так для
swap-in: deposit fee + swap fee
on-chain swap: deposit fee + swap fee + withdraw fee
swap-out: swap fee + withdraw fee
Первые три вида комиссий direct-deposit fee, deposit fee и withdraw fee настраиваются для связки валюта+платежный интерфейс. Swap fee определяется для маркета.
Методика расчета комиссии при вводе средств:
Существует четыре параметра:
minDepositAmount / minDirectDepositAmount
depositFee / directDepositFee
minDepositFee / minDirectDepositFee
maxDepositFee / maxDirectDepositFee
1 параметр определяет сумму, меньше которой невозможно осуществить ввод денег для данной валюты в рамках указанного платежного интерфейса
2 параметр - это процент комиссии, взымаемой с депозита.
3 и 4 - граничные значения комиссии.
Аналогично по 4 параметра есть у операций по выводу средств и обмену.
Механизмы инициации операций по движению средств:
deposit
Генерируется прокси-адрес (mutation generateWallet). После отправки пользователем на указанный адрес средств сервис платежного интерфейса получает информацию об этом и система автоматически создает операцию custodial_deposit
direct deposit
Пользователь открывает ссылку для создания коннекта с wallet connect (mutation getWalletConnectURI_v1), затем подписывает сообщение (mutation connectWallet_v1)
Нет реализации подписания и отправки транзакции - нужны исследования для токенов.
withdrawal
Инициация вывода средств вызывается с помощью mutation userWithdraw
N.B. Следует учитывать что простом выводе средств у пользователя есть два сценария: вывести указанную сумму денег includeFees=true
и получить указанную сумму денег includeFees=false
(эти числа могут отличаться в случае ненулевой комиссии за вывод)
off-chain swap
Запуск обмена с помощью mutation userExchange
on-chain swap
Пользователь должен получить индивидуальный адрес для перечисления нужной суммы валюты: mutation initNonCustodialExchange
После получения платежным интерфейсом транзакции по указанному адресу создается операция non_custodial_exchange
chain-out
Запуск обмена с последующим выводом инициируется с помощью mutation userSwapOut
После запуска блокируется сумма к обмену, затем происходит конвертация средств с взыманием комиссии, затем вывод средств на указанный адрес с соответствующей комиссией.