Пополнение и вывод

Пополнение аккаунтов

Важным моментом в системе является тот факт, что система не в курсе какому из пользователей принадлежит какой-либо адрес. В зависимости от типа криптовалюты применяется тот или иной способ чтения транзакций из блокчейна.

Для криптовалют, похожих на bitcoin core, система делаем по rpc api протоколу запрос к ноде и получает только транзакции, адрес которых указаны в файле wallet.dat. Никакой пересылкой монет система не занимается, так как система и разработчики в целом не имею доступ к кошельку.

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

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

Вывод средств с аккаунтов

На бирже также есть функция вывода криптовалютных средств с аккаунтов пользователей на какие-либо внешние адреса. Биржа присылает системе внутренний ID перевода, сумму и адрес, куда нужно отправить криптовалюту.

Для bitcoin core кошельков мы обязательно поднимаем вторую ноду, где генерируем кошелек и имеем к нему доступ. На данный кошелек владельцы биржи с холодных кошельков отправляют монеты. Благодаря такому варианту работы риск потери криптовалютных средств уменьшается, сумма ущерба находится на минимуме.

Для валют, где мы используем приватные ключи, а не wallet.dat, мы также генерируем приватный ключ и адрес его сообщаем владельцам биржи. С данных адресов в однопоточном режиме идет вывод средств пользователям.

После совершения вывода средств, система сохраняет в базу данных хэш транзакции и затем отправляет данный хэш на биржу. Как правило от отправки транзакции до получения биржей хэша транзакции проходит не более 2-х минут.

Балансы кошельков также подключены к отдельному мониторингу, и когда на кошельках остается минимальная сумма, или сумма выводов больше, чем есть на балансе кошельков выводов - система отправляет в специальный telegram чат владельцам биржи информацию о нехватке средств.