Дублирую вопрос из "Новичков"
Всем привет! Нужен технический эксперт.
Описание ситуации:
- предположим мы делаем некоторый сервис, на подобие обменника криптовалюты между различными крипто и фиатными валютами
- каждый пользователь регистрируется в Сервисе, где ему создаются необходимое кошельки из тех что мы сбираемся поддерживать, допустим Bitcoin, Eth, Ripple, USD
- т.е. у каждого пользователя есть ID его кошелька (Кошелек пользователя) на который он сможет перевести часть своих криптосредств
- понятно что Кошелек пользователя принадлежит Системе и Система предоставляет GUI интерфейс для работы с ними
- Система предоставляет возможность мгновенно обменять пару по заданному курсу, например Bitcoin на USD или ETH на Ripple
Теперь вопрос:
- как технически правильно должны проводиться данные операции обмена?
- например Пользователь меняет 1 ETH на 800 Ripple:
-- Система уменьшает ETH кошелек пользователя на 1 ETH
-- Система увеличивает Ripple кошелек пользователя на 800 Ripple
-- Пользователь должен иметь возможность сразу вывести 800 Ripple, например на какую-то биржу
-- Если проводить транзакции через сеть Eth и Ripple - это займет определенное время, как биржи делают это мгновенно?
-- Предполагаю, что так как все кошельки фактически принадлежат системе вероятно фактического, классического перевода через blockchain не происходит, а весь учет на внутренних балансах Системы?
Т.е. вопрос по сути о том как устроены биржи, как они работают с балансами, ведут внутренние операции, обеспечивая при этом корректное взаимодействие с blockchain сетью?
Заранее спасибо.
Вы выделяете адреса только для приема средств! После поступления средств на адрес закрепленный за пользователем вы заносите информацию о поступлении в бд сайта!
И работаете не с балансом кошелька, а с балансом аккаунта на сайте!
уточнение: бд- база данныхПример 1: Пользователь купил за фиат 1 ETH у Вас на бирже и обменял на 800 Ripple и вывел:
1) API обменника стучится к вам на сайте и говорит о поступлении нужной суммы (800$)
2) система зачисляет на баланс 1 ETH , не на адрес ETH кошелька пользователя, а на баланс аккаунта в системе(вносит в бд).
3) Пользователь дает сигнал на обмен.
4) Система отнимает баланс в бд ETH у аккаунта и прибавляет Ripple
5) Пользователь вывел рипл
6) Система проверяет кошельки которые имеются в её распоряджении, находит кошелек с балансом.
7) Дает команду на вывод средств, при удачной операции , вычитает 800 Риплов с баланса бд аккаунта.
Пример 2: Пользователь вносит депозит в ETH
1) Пользователь берет у Вас на сайте личный адресс кошелька
2) Пополняет его)
3) Система проверяет пополнение, видит зачисление
4) Добавляет зачисленную сумму к балансу аккаунта в бд.
Пример 3: Пользователь имеет на счету ETH и хочет вывести в фиат допустим на киви :
1) Заправшивает вывод у системы
2) Система проверяет курс
3) Система отправляет запрос в платежку(мерчант) на вывод
4) ПРоисходит вывод средств и вы вычитаете с баланса пользователя в бд сумму вывода в ETH!
Можно предварительно конвертировать все в фиат и иметь баланс пользователя еще в фиат деньгах.
И только так! Ни каких переводом между кошельками внутри системы! Все переводы внутри системы это изменения балансов пользователя в бд сайта!