Описание криптошлюза
Криптошлюз – специализированное программное обеспечение, разработанное компанией BuyOwnEx. Его главным назначением является предоставление клиентам (владельцам бирж, обменников, интернет-магазинов и другим бизнесам) удобного и надежного доступа к криптоэкономике: блокчейнам, потокам криптоактивов, платежам, расчетам.
Криптошлюз – та «дверь», которая. По аналогии, как любая платежная система соединяет реальную экономику и цифровые валюты, так и криптошлюз соединяет реальную экономику и криптосферу.
Криптошлюз, по сути, это Ваш собственный процессинг, который позволит принимать криптовалюту (криптоактивы, криптотокены) в качестве оплаты за товары или услуги. При этом безусловным владельцем, единственным «мерчантом» этого процессинга (криптопроцессинга) являетесь только Вы.
Собственные криптошлюзы нужны не только бизнесу, который непосредственно работает в криптоиндустрии и постоянно «подключен» к блокчейну (как, например, криптобиржи, криптообменники, криптокошельки, гемблинговые сервисы и другие децентрализованные приложения). Также владение собственным криптошлюзом может оказаться очень полезным и поставщикам товаров и услуг из традиционной экономики и электронной коммерции, ведь осуществление операций с криптовалютами и криптоактивами через сторонние процессинги может отбирать значительную часть заработанных средств из-за высоких комиссий.
Так что мы разработали для Вас такой процессинг (криптошлюз), после интеграции которого между Вами и Вашим клиентом уже не встанет никакой посредник.
Особенности и преимущества криптошлюза (процессинга) BuyOwnEx:
Гибкость. Система построена таким образом, что сами «ноды» криптовалют могут располагаться как на одном сервере, так и быть распределены на разных серверах.
Масштабируемость. Система масштабируема и не требует особых трудозатрат при, например, добавлении новой криптовалюты или апгрейде существующих.
Модульность. Программное обеспечение состоит из двух частей: серверной части, которая разворачивается на серверах, где установлены «ноды» и осуществляет взаимодействие с ними посредством так называемых «RPC-вызовов», и клиентской части, которая взаимодействует с серверной посредством защищенного WebSocket соединения. Клиентская часть реализована на популярном фреймворке Laravel, также в стек технологий входит: VueJs, Vuex, Vuetify, в качестве БД выбрана промышленная и весьма производительная реляционная база данных PostgreSQL.
Настоящий документ описывает клиентскую часть и дает представление о функционале, который доступен администратору криптошлюза. Доступ к клиентской части осуществляется через SSH туннелирование по выбранному порту, что позволяет полностью изолировать доступ извне.
На данный момент «из коробки» доступно подключение 6 криптовалют: BTC, LTC, BCH, ETH, TRX и BNB (Binance Smart Chain). Также обеспечена поддержка токенов, выпущенных на блокчейн-платформах ETH, TRX, BNB. При необходимости поддержки иных криптовалютных платформ, можно заказать доработки, написав по адресу [email protected] для уточнения условий.
После разворачивания данного программного обеспечения, на главной странице вы увидите список доступных криптовалютных платформ и общую информацию по каждой из них:
- статус
- баланс
- адрес горячего кошелька
- номер разобранного блока в блокчейн сети (желтым) и номер последнего блока (зеленым)
Слева доступно раскрывающееся меню для перехода к странице управления отдельной криптовалютной платформы. Также на главной странице содержится функционал, позволяющий выделить сразу несколько криптовалют и перевести их в определенный статус.
Главная страница криптовалютного шлюза BuyOwnEx
Переключение статуса выбранных криптовалют
Основные возможности
BTC, LTC, BCH
Bitcoin подобные ноды имеют практически одинаковый функционал и состоят из следующих секций: управление нодой, список адресов, список транзакций, список системных транзакций и список запросов на вывод средств.
Ниже представлен общий вид страницы по администрированию нод BTC, LTC, BCH. Это основное рабочее окно администратора. Данные обновляются автоматически в режиме реального времени. Для удобства администратора, каждая из секций сворачивается для возможности концентрации на определенной секции. Ниже рассматривается более подробно функционал каждой секции.
Управление нодой
Секция по управлению нодой состоит из следующих информационных и функциональных составляющих:
Статус - статус ноды. Может принимать следующие значения:
- Online - ввод и вывод работают в штатном режиме;
- Only withdrawals - работает только вывод средств;
- Only deposits - работает только ввод средств;
- Suspended - ввод и вывод приостановлен;
- Synchronization - находится в процессе синхронизации (в данном статусе ввод и вывод недоступны. Как только процесс синхронизации завершится, нода перейдет в режим «Suspended»);
- Maintenance - нода находится в режиме обслуживания. Данный режим устанавливается автоматически системой, если не запущена серверная часть соответствующей ноды (например, при установке обновлений)
Информация о блоках
Данная информация представлена в виде двух целочисленных значений. Данные значения – результат выполнения RPC вызова getblockchaininfo. Желтым цветом обозначается поле headers (текущий номер заголовка, валидированный нодой), а зеленым цветом обозначается поле block (последний валидированный блок в блокчейн сети).
Управление статусом
В выпадающем списке «Choose new status», вы можете перевести статус ноды в нужный вам статус. Возможные статусы ограничиваются 4 значениями: Online, Only withdrawals, Only deposits и Suspended. При переводе ноды в новый статус, система запрашивает от администратора подтверждение его действия для исключения случайного нажатия. Для отмены, нажмите клавишу ESC или кликните в затемненную область рабочего пространства.
Примечание: следует отметить, что перевод ноды в состояние Suspended не останавливает ноду: система продолжает обрабатывать поступающие из блокчейн транзакции, просто отключается взаимодействие с внешним сервисом (биржей, обменником).
В режиме Suspended, система перестает слать API запросы внешнему сервису (Получение запросов на вывод средств и Уведомления о поступивших платежах и подтвержденных в блокчейн сети выводах)
В режиме Only deposits, система перестает слать API запросы внешнему сервису для получения запросов на вывод средств
В режиме Only withdrawals, система перестает слать API запросы внешнему сервису с целью уведомления о поступивших платежах
Системный адрес
В криптошлюзе выделяется специальный системный адрес, с которого осуществляется переброска средств на холодный кошелек. Также пополнение горячего кошелька должно происходить именно на этот адрес. Процесс переброски средств см. ниже. Для удобства, при нажатии на иконку копирования, данный адрес можно сохранить в буфер.
Также в данной секции отображаются следующие информационные поля:
-
Текущий баланс - текущий баланс по всем адресам ноды, включая системный адрес
-
Неподтвержденный баланс - неподтвержденный баланс, т.е. транзакция поступила в сеть, но еще не подтверждена. При подтверждении транзакции, данный баланс перейдет в секцию Баланс
-
Количество транзакций - общее количество транзакций, произведенных системой (учитываются как транзакции по пополнению, так и по выводу средств)
-
Версия кошелька - версия кошелька wallet.dat
-
Дата пула ключей - дата последней записи значения в пул ключей
-
Размер пула ключей - текущее количество зарезервированных адресов, которые в дальнейшем будут выдаваться для совершения оплат.
В данной форме осуществляется переброска средств на холодный кошелек.
Для осуществления вывода средств на холодный кошелек, необходимо заполнить поля «Recipient address» (Адрес получателя) и «Amount» (Сумма) и нажать кнопку «Send» (Отправить).
Затем система потребует от вас ввести секретную фразу для разблокировки кошелька и подтвердить намерение вывести средства.
Примечание: при выводе средств происходит валидация введенного адреса и, если вдруг, адрес был введен неверно, система выдаст ошибку и вывод средств не будет осуществлен.
В следующей форме существует возможность сделать резервную копию вашего кошелька (файла wallet.dat) или осуществить дамп кошелька (дамп представляет из себя расшифрованную версию wallet.dat со списком всех адресов и соответствующим им приватными ключами)
Важно: данные сохраняются на сервере ноды. Крайне не рекомендуется, дамп кошелька оставлять на сервере. При осуществлении дампа, необходимо скачать его с сервера, определить в надежное место и удалить с сервера.
Для осуществления возможности произвести дамп кошелька требуется ввести секретную фразу для разблокировки кошелька. Результат операции отобразится в виде всплывающего сообщения.
В следующих формах существует возможность получить приватный ключ определенного адреса кошелька для его последующего импорта в другой кошелек или, собственно, произвести импорт приватного ключа.
Для получения приватного ключа необходимо заполнить поля «Internal node address» и «Unlock phrase» и нажать кнопку «Dump private key». При успешном выполнении операции, приватный ключ адреса отобразится во всплывающем сообщении.
Для осуществления импорта приватного ключа в кошелек, необходимо заполнить поля «Address private key» и «Address label» и нажать кнопку «Import private key» и при необходимости отметить флаг «Rescan». Если флаг «Rescan» отмечен, системе потребуется время для сканирования всех транзакций, принадлежащих импортируемому адресу. Стоит отметить, что все транзакции по данному адресу будут учтены системой после завершения процедуры сканирования и они также будут отосланы по API во внешнюю систему.
Список адресов
Каждый раз, когда пользователь запрашивает адрес для пополнения средств (в случае биржи) или формируется заказ (обменник, интернет-магазин), внешний сервис посылает команду криптошлюзу на получение адреса.
Биржа: в случае, если пользователь новый, для него выделяется адрес и закрепляется за ним или если пользователь уже запрашивал однажды адрес, то ему возвращается уже ранее выделенный адрес.
Обменник: в случае, если это вновь созданный заказ, для него выделяется адрес и закрепляется за ним или если пользователь оставил заказ в корзине и решил оплатить его чуть позже, то ему возвращается уже ранее выделенный адрес.
В данной секции отображается соответствие пользователя или уникального номера заказа и выделенного адреса.
Список адресов состоит из следующих полей:
- ID - уникальный номер записи в локальной БД криптошлюза;
- Created - дата создания адреса для пользователя/заказа;
- Updated - дата изменения записи (может отличаться от даты создания, в случае если были произведены принудительные RPC вызовы setlabel);
- Address - уникальный выделенный адрес для пользователя/заказа, на который мы ожидаем поступление средств;
- Account - уникальный идентификатор пользователя/заказа
Предусмотрена сортировка по всем полям и фильтры по полям Address и Account. Для снижения нагрузки на БД, предусмотрена пагинация записей по 5, 10, 15, 500 записей
Список транзакций
В данном списке содержатся транзакции по выводам и поступлениям, ассоциированные с определенным пользователем/заказом. В данный список попадают только подтвержденные сетью блокчейн транзакции с минимальным количеством подтверждений, заданным в настройках системы.
Список транзакций состоит из следующих полей:
- ID - уникальный номер транзакции в локальной БД криптошлюза;
- Created - дата обнаружения транзакции;
- Category - тип транзакции, имеющий два возможных значения: send – транзакция по выводу средств и receive – транзакция по пополнению средств;
- Account - уникальный идентификатор пользователя/заказа, соответствующий данной транзакции;
- Currency - символьный код криптовалюты;
- Amount - сумма пополнения/вывода. Пополнения отображаются с положительным знаком, выводы – с отрицательным.
- Address - в случае пополнения данное поле содержит соответствующий адрес для пользователя/заказа ноды, а в случае вывода – внешний адрес на который был запрошен вывод средств;
- Transaction - уникальный идентификатор транзакции в сети блокчейн;
- Fee - размер комиссии, выплаченный для осуществления вывода средств. Указывается только если «Category» = send
- Status - статус транзакции. Может принимать следующие значения:
- aml - транзакция по депозиту только поступила и была добавлена в локальную БД (в случае, если включен режим AML);
- new - транзакция только поступила и была добавлена в локальную БД; (в случае, если не включен режим AML или процедура AML была успешно пройдена)
- wait_aml - промежуточное состояние, присваиваемое транзакции по депозиту, котороая подлежит AML проверке (в случае, если включен режим AML);
- fail_aml - транзакция по депозиту не прошла автоматическую AML проверку и нуждается в ручном разборе ситуации (в случае, если включен режим AML);
- done - было произведено уведомление внешнего сервиса по данной транзакции
Предусмотрена сортировка по всем полям и фильтры по полям Address, Category, Account и Transaction. Для снижения нагрузки на БД, предусмотрена пагинация записей по 5, 10, 15, 500 записей
Список системных транзакций
В данном списке содержатся только системные транзакции по выводам и поступлениям. Системными транзакциями являются только транзакции по выводу средств на холодный кошелек и пополнение системного адреса из внешних источников. В данный список попадают только подтвержденные сетью блокчейн транзакции с минимальным количеством подтверждений, заданным в настройках системы.
Список системных транзакций состоит из следующих полей:
- ID - уникальный номер транзакции в локальной БД криптошлюза;
- Created - дата обнаружения транзакции;
- Category - тип транзакции, имеющий два возможных значения: send – транзакция по выводу средств и receive – транзакция по пополнению средств;
- Currency - символьный код криптовалюты;
- Amount - сумма пополнения/вывода. Пополнения и выводы отображаются с положительным знаком.
- Address - в случае пополнения данное поле содержит системный адрес ноды, а в случае вывода – внешний адрес холодного кошелька, на который был произведен вывод средств;
- Transaction - уникальный идентификатор транзакции в сети блокчейн;
- Fee - размер комиссии, выплаченный для осуществления вывода средств. Указывается только если «Category» = send
- Status - статус транзакции. Может принимать следующие значения:
- new - транзакция только поступила и была добавлена в локальную БД;
- done - было произведено уведомление внешнего сервиса по данной транзакции
Предусмотрена сортировка и фильтры по полям Address, Category и Transaction. Для снижения нагрузки на БД, предусмотрена пагинация записей по 5, 10, 15, 500 записей
Список запросов на вывод средств
В данном списке содержатся только запросы по выводам, которые система получила из внешнего сервиса, путем выполнения, соответствующего API вызова. В системе предусмотрена защита от возможности двойных выплат (система криптошлюза не добавит дважды запись с одним и тем же номером Ext. ID).
Список запросов на вывод средств состоит из следующих полей:
- ID - уникальный номер в локальной БД криптошлюза;
- Date - дата добавления записи в локальную БД криптошлюза;
- Account - сумма запрошенного вывода;
- Amount - сумма пополнения/вывода. Пополнения и выводы отображаются с положительным знаком.
- Address - адрес, на который необходимо произвести выплату;
- Transaction - уникальный идентификатор транзакции в сети блокчейн (данное поле заполнится только при подтверждении сетью блокчейн транзакции с минимальным количеством подтверждений, заданным в настройках системы);
- Ext. ID - уникальный целочисленный идентификатор запроса из внешней системы;
- Status - статус вывода. Может принимать следующие значения:
- aml - запрос на вывод только поступил и был добавлен в локальную БД (в случае, если включен режим AML);
- new - запрос на вывод только поступил и был добавлен в локальную БД (в случае, если не включен режим AML или процедура AML была успешно пройдена);
- wait_aml - промежуточное состояние, присваиваемое запросу на вывод средств, в котором вывод подлежит AML проверке (в случае, если включен режим AML);
- fail_aml - запрос на вывод средств не прошел автоматическую AML проверку и нуждается в ручном разборе ситуации (в случае, если включен режим AML);
- made - вывод был осуществлен системой криптошлюза;
- done - было произведено уведомление внешнего сервиса по произведенному выводу
Предусмотрена сортировка и фильтры по полям Ext. ID, Address, Account и Transaction. Для снижения нагрузки на БД, предусмотрена пагинация записей по 5, 10, 15, 500 записей
ETH, TRX, BNB
Данные ноды состоят из следующих секций: управление нодой, список адресов, управление токенами, список транзакций, список системных транзакций, список внутренних переводов и список запросов на вывод средств.
Ниже представлен общий вид страницы по администрированию нод на данных платформах. Это основное рабочее окно администратора. Данные обновляются автоматически в режиме реального времени. Для удобства администратора, каждая из секций сворачивается для возможности концентрации на определенной секции. Ниже рассматривается более подробно функционал каждой секции. А также все отличительные особенности каждой из нод.
Управление нодой
Секция по управлению нодой состоит из следующих информационных и функциональных составляющих:
Статус - статус ноды. Может принимать следующие значения:
- Online - ввод и вывод работают в штатном режиме;
- Only withdrawals - работает только вывод средств;
- Only deposits - работает только ввод средств;
- Suspended - ввод и вывод приостановлен;
- Synchronization - находится в процессе синхронизации (в данном статусе ввод и вывод недоступны. Как только процесс синхронизации завершится, нода перейдет в режим «Suspended»);
- Maintenance - нода находится в режиме обслуживания. Данный режим устанавливается автоматически системой, если не запущена серверная часть соответствующей ноды (например, при установке обновлений)
Примечание: следует отметить, что перевод ноды в любой доступный статус, переведет в соответствующий статус и все токены на данной платформе. Для возможности приостановить ввод/вывод определенного токена или самой монеты, следует воспользоваться соответствующим функционалом в секции Управление токенами.
Информация о блоках
Данная информация представлена в виде двух целочисленных значений. Желтым цветом обозначается номер последнего обработанного блока, а зеленым цветом обозначается номер последнего блока, синхронизированного с нодой.
Управление статусом
В выпадающем списке «Choose new status», вы можете перевести статус ноды в нужный вам статус. Возможные статусы ограничиваются 4 значениями: Online, Only withdrawals, Only deposits и Suspended. При переводе ноды в новый статус, система запрашивает от администратора подтверждение его действия для исключения случайного нажатия. Для отмены, нажмите клавишу ESC или кликните в затемненную область рабочего пространства.
Примечание: следует отметить, что перевод ноды в состояние Suspended не останавливает ноду: система продолжает обрабатывать поступающие из блокчейн транзакции, просто отключается взаимодействие с внешним сервисом (биржей, обменником).
В режиме Suspended, система перестает слать API запросы внешнему сервису (Получение запросов на вывод средств и Уведомления о поступивших платежах и подтвержденных в блокчейн сети выводах)
В режиме Only deposits, система перестает слать API запросы внешнему сервису для получения запросов на вывод средств
В режиме Only withdrawals, система перестает слать API запросы внешнему сервису с целью уведомления о поступивших платежах
Системный адрес
В криптошлюзе выделяется специальный системный адрес, с которого осуществляется переброска средств на холодный кошелек. Также, пополнение горячего кошелька должно происходить именно на этот адрес. Процесс переброски средств см. ниже. Также на этот адрес происходит автоматический сбор средств с других адресов, на который ранее поступали средства. Для удобства, при нажатии на иконку копирования, данный адрес можно сохранить в буфер.
В данной форме осуществляется переброска средств на холодный кошелек.
Для осуществления вывода средств на холодный кошелек, необходимо заполнить поля «Recipient address» (Адрес получателя), «Amount» (Сумма), выбрать из выпадающего списка валюту и нажать кнопку «Send» (Отправить).
Затем система потребует от вас подтвердить намерение вывести средства.
Примечание: при выводе средств происходит валидация введенного адреса и, если вдруг, адрес был введен неверно, система выдаст ошибку и вывод средств не будет осуществлен.
Также предусмотрен механизм переброски средств в ручном режиме с любого внутреннего адреса ноды на любой иной адрес (данный механизм не используется в штатном режиме и предусмотрен только для внештатных ситуаций)
Список адресов
Каждый раз, когда пользователь запрашивает адрес для пополнения средств (в случае биржи) или формируется заказ (обменник, интернет-магазин), внешний сервис посылает команду криптошлюзу на получение адреса.
Биржа: в случае, если пользователь новый, для него выделяется адрес и закрепляется за ним или если пользователь уже запрашивал однажды адрес, то ему возвращается уже ранее выделенный адрес.
Обменник: в случае, если это вновь созданный заказ, для него выделяется адрес и закрепляется за ним или если пользователь оставил заказ в корзине и решил оплатить его чуть позже, то ему возвращается уже ранее выделенный адрес.
В данной секции отображается соответствие пользователя/уникального номера заказа и выделенного адреса, а также существует возможность запросить баланс по данному адресу в любой поддерживаемой валюте (механизм запроса баланса используется при внештатных ситуациях, поскольку в обычном режиме на данных адресах должны быть нулевые остатки)
Данный список состоит из следующих полей:
- ID - уникальный номер записи в локальной БД криптошлюза;
- Created - дата создания адреса для пользователя/заказа;
- Updated - дата изменения записи (может отличаться от даты создания, в случае увеличения Nonce);
- Nonce - целочисленный инкрементный идентификатор, обозначающий количество произведенных транзакций по выплатам с данного адреса;
- Address - уникальный выделенный адрес для пользователя/заказа, на который мы ожидаем поступление средств в дальнейшем;
- Account - уникальный идентификатор пользователя/заказа;
- Asset - выпадающий список всех поддерживаемых валют на данной платформе;
- Balance - функционал по запросу баланса на определенном адресе по определенной валюте
Предусмотрена сортировка по всем полям и фильтры по полям Address и Account. Для снижения нагрузки на БД, предусмотрена пагинация записей по 5, 10, 15, 500 записей
Примечание: для платформы TRX отсутствует поле Nonce
Управление токенами
В данном списке содержатся все поддерживаемые токены на соответствующей платформе, а также возможность добавлять новые, редактировать параметры существующих токенов и удалять ненужные.
Данный список состоит из следующих полей:
- ID - уникальный номер записи в локальной БД криптошлюза;
- Asset - кодовый идентификатор токена;
- Token ID - уникальный идентификатор токена (смарт-контракта). Для валюты самой платформы идентификатор отображается как system;
- Token Size - определенное в смарт-контракте число десятичных знаков;
- Gas Limit - определяемое администратором максимальное количество газа, которое представляется возможным потратить для подтверждения транзакции в сети;
- Min. Deposit - минимально допустимый размер пополнения средств в соответствующей валюте, который будет обработан. Все пополнения ниже данного значения не рентабельны для обработки и будут исключены из процесса;
- State - статус определенной валюты по вводу/выводу. Возможные значения:
- Online - ввод и вывод работают в штатном режиме;
- Only withdrawals - работает только вывод средств;
- Only deposits - работает только ввод средств;
- Suspended - ввод и вывод приостановлен
- Actions - действия Редактирование и Удаление. Для валюты платформы доступно только действие Редактирование
Для добавления токена необходимо заполнить следующие поля:
- Asset code - кодовый идентификатор токена;
- Contract ID - уникальный идентификатор токена (смарт-контракта);
- Contract decimal size - определенное в смарт-контракте число десятичных знаков;
- Gas Limit - максимальное количество газа, которое представляется возможным потратить для подтверждения транзакции в сети;
- Min. Deposit - минимально допустимый размер пополнения средств в соответствующей валюте, который будет обработан системой;
- Status - статус ввода/вывода по токену
При редактировании параметров токена допускаются для изменения следующие поля:
- Gas Limit - максимальное количество газа, которое представляется возможным потратить для подтверждения транзакции в сети;
- Min. Deposit - минимально допустимый размер пополнения средств в соответствующей валюте, который будет обработан системой;
- Status - статус ввода/вывода по токену
Список транзакций
В данном списке содержатся транзакции по выводам и поступлениям, ассоциированные с определенным пользователем/заказом. В данный список попадают только подтвержденные сетью блокчейн транзакции с минимальным количеством подтверждений, заданным в настройках системы.
Список транзакций состоит из следующих полей:
- ID - уникальный номер транзакции в локальной БД криптошлюза;
- Date - дата обнаружения транзакции;
- Category - тип транзакции, принимающий один из следующих значений:
- send – транзакция по выводу средств
- receive – транзакция по пополнению средств
- Currency - символьный код криптовалюты;
- Amount - сумма пополнения/вывода;
- Address - в случае пополнения, данное поле содержит соответствующий адрес для пользователя/заказа ноды, а в случае вывода – внешний адрес на который был запрошен вывод средств;
- Transaction - уникальный идентификатор транзакции в сети блокчейн;
- Fee - размер комиссии, выплаченный для осуществления вывода средств;
- Status - статус транзакции. Может принимать следующие значения:
- aml - транзакция по депозиту только поступила и была добавлена в локальную БД (в случае, если включен режим AML);
- new - транзакция только поступила и была добавлена в локальную БД; (в случае, если не включен режим AML или процедура AML была успешно пройдена)
- wait_aml - промежуточное состояние, присваиваемое транзакции по депозиту, котороая подлежит AML проверке (в случае, если включен режим AML);
- fail_aml - транзакция по депозиту не прошла автоматическую AML проверку и нуждается в ручном разборе ситуации (в случае, если включен режим AML);
- fee_pending - создана внутренняя транзакция (fee) по переброске средств с системного адреса на адрес отправителя;
- fee - получили подтверждение принятия транзакции (fee) в сети;
- ready_pending - создана внутренняя транзакция (system) по переброске средств с адреса отправителя на системный адрес;
- ready - получили подтверждение принятия транзакции (system) в сети;
- done - было произведено уведомление внешнего сервиса по данной транзакции;
- fail - возникла ошибка при попытке произвести какое-либо действие
- State - состояние операции, выполняемое по транзакции. Может принимать следующие значения:
- success - успешное выполнение операции;
- wait - операция находится в процессе выполнения;
- fail - произошла ошибка при выполнении операции
В выпадающем списке детализации доступны для просмотра следующие данные:
- Account - уникальный идентификатор пользователя/заказа, соответствующий данной транзакции;
- Confirmations - текущее количество подтверждений транзакции;
- System transfer ID - уникальный идентификатор внутреннего перевода средств на системный адрес (заполнен только для транзакций по пополнению средств);
- System fee transfer ID - уникальный идентификатор перевода средств в валюте платформы с системного адреса на указанный для возможности в дальнейшем перевести средства на системный (применимо только для токенов платформы и только для транзакций по пополнению средств);
- Gas - потраченный газ для осуществления транзакции;
- Gas Price - цена за газ, которая была назначена системой для осуществления транзакции
Предусмотрена сортировка и фильтры по полям Address, Category, Asset, Account и Transaction. Для снижения нагрузки на БД, предусмотрена пагинация записей по 5, 10, 15, 500 записей
Список системных транзакций
В данном списке содержатся только системные транзакции по выводам и поступлениям. Системными транзакциями являются только транзакции по выводу средств на холодный кошелек и пополнение системного адреса из внешних источников. В данный список попадают только подтвержденные сетью блокчейн транзакции с минимальным количеством подтверждений, заданным в настройках системы.
Список системных транзакций состоит из следующих полей:
- ID - уникальный номер системной транзакции в локальной БД криптошлюза;
- Date - дата обнаружения транзакции;
- Category - тип транзакции, принимающий один из следующих значений:
- send – транзакция по выводу средств
- receive – транзакция по пополнению средств
- Currency - символьный код криптовалюты;
- Amount - сумма пополнения/вывода;
- Transaction - уникальный идентификатор транзакции в сети блокчейн;
- Fee - размер комиссии, выплаченный для осуществления вывода средств;
- Status - статус транзакции. Может принимать следующие значения:
- new - транзакция только поступила и была добавлена в локальную БД;
- done - было произведено уведомление внешнего сервиса по данной транзакции;
- fail - возникла ошибка при попытке произвести какое-либо действие
- State - состояние операции, выполняемое по транзакции. Может принимать следующие значения:
- success - успешное выполнение операции;
- wait - операция находится в процессе выполнения;
- fail - произошла ошибка при выполнении операции
В выпадающем списке детализации доступны для просмотра следующие данные:
- Confirmations - текущее количество подтверждений транзакции;
- Sender address - адрес отправителя;
- Recipient address - адрес получателя;
- Gas - потраченный газ для осуществления транзакции;
- Gas Price - цена за газ, которая была назначена системой для осуществления транзакции
Предусмотрена сортировка и фильтры по полям Address, Category, Asset и Transaction. Для снижения нагрузки на БД, предусмотрена пагинация записей по 5, 10, 15, 500 записей
Список внутренних переводов
В данном списке содержатся транзакции по вынужденным внутренним переводам, возникающие в результате процедуры автоматического сбора средств на системном адресе. В случае если произошло пополнение средств в валюте платформы, система просто производит перевод полученных средств за вычетом предполагаемой комиссии. В случае если произошло пополнение средств токенами, выпущенными на данной платформе, система сначала переводит средства на адрес отправителя в валюте платформы в размере, необходимом для дальнейшей переброски токенов на системный адрес, а затем совершает перевод токенов на системный адрес.
Список внутренних переводов состоит из следующих полей:
- ID - уникальный номер внутреннего перевода в локальной БД криптошлюза;
- Date - дата создания внутреннего перевода;
- Category - тип перевода, принимающий один из следующих значений:
- fee – транзакция по переводу средств с системного адреса на адрес отправителя;
- system – транзакция по переводу средств с адреса отправителя на системный адрес
- Currency - символьный код криптовалюты;
- Amount - сумма перевода;
- Transaction - уникальный идентификатор транзакции в сети блокчейн;
- Fee - размер комиссии, выплаченный для осуществления перевода;
- Status - статус перевода средств. Может принимать следующие значения:
- pending - транзакция только поступила и была добавлена в локальную БД;
- success - транзакция подтверждена в сети;
- reverted - транзакция не подтверждена в сети
- State - состояние операции, выполняемое по переводу. Может принимать следующие значения:
- success - успешное выполнение операции;
- wait - операция находится в процессе выполнения;
- fail - произошла ошибка при выполнении операции
В выпадающем списке детализации доступны для просмотра следующие данные:
- Check attempts - количество попыток проверить транзакцию по переводу средств на подтверждение в сети;
- Sender address - адрес отправителя;
- Recipient address - адрес получателя;
- Gas - потраченный газ для осуществления транзакции;
- Gas Price - цена за газ, которая была назначена системой для осуществления транзакции
Предусмотрена сортировка и фильтры по полям Transfer ID, Category, Asset и Transaction. Для снижения нагрузки на БД, предусмотрена пагинация записей по 5, 10, 15, 500 записей
Список запросов на вывод средств
В данном списке содержатся только запросы по выводам, которые система получила из внешнего сервиса, путем выполнения, соответствующего API вызова. В системе предусмотрена защита от возможности двойных выплат (система криптошлюза не добавит дважды запись с одним и тем же номером Ext. ID).
Список запросов на вывод средств состоит из следующих полей:
- ID - уникальный номер в локальной БД криптошлюза;
- Date - дата добавления записи в локальную БД криптошлюза;
- Currency - символьный код криптовалюты;
- Amount - сумма запрошенного вывода;
- Address - адрес, на который необходимо произвести выплату;
- Transaction - уникальный идентификатор транзакции в сети блокчейн (данное поле заполнится только при подтверждении сетью блокчейн транзакции с минимальным количеством подтверждений, заданным в настройках системы);
- Fee - размер комиссии, назначенный пользователю внешней системы для осуществления вывода средств;
- Status - статус вывода. Может принимать следующие значения:
- aml - запрос на вывод только поступил и был добавлен в локальную БД (в случае, если включен режим AML);
- new - запрос на вывод только поступил и был добавлен в локальную БД (в случае, если не включен режим AML или процедура AML была успешно пройдена);
- wait_aml - промежуточное состояние, присваиваемое запросу на вывод средств, в котором вывод подлежит AML проверке (в случае, если включен режим AML);
- fail_aml - запрос на вывод средств не прошел автоматическую AML проверку и нуждается в ручном разборе ситуации (в случае, если включен режим AML);
- made - вывод средств был произведен;
- checked - транзакция по выводу средств подтверждена в сети;
- reverted - транзакция по выводу средств не подтверждена в сети;
- done - было произведено уведомление внешнего сервиса по произведенному выводу
- State - состояние операции, выполняемое по выводу. Может принимать следующие значения:
- success - успешное выполнение операции;
- wait - операция находится в процессе выполнения;
- fail - произошла ошибка при выполнении операции
Предусмотрена сортировка и фильтры по полям Ext. ID, Asset, Address, Account и Transaction. Для снижения нагрузки на БД, предусмотрена пагинация записей по 5, 10, 15, 500 записей
Взаимодействие с внешним сервисом
Для взаимодействия с внешним сервисом, в нем (внешнем сервисе) должно быть реализовано всего 4 API для криптошлюза. А в самом криптошлюзе доступно 3 метода для вызова из внешнего сервиса: получить состояние ноды (для проверки возможности ввода/вывода), получить адрес (для пополнения средств), валидировать адрес (при запросе на вывод средств).
Список необходимых API запросов для внешнего сервиса
Получение запросов на вывод средств
Данный запрос посылается каждые n секунд/минут во внешний сервис посредством API вызова. Целью данного вызова является получение списка образовавшихся во внешнем сервисе запросов по выводу средств в определенной валюте. Если в качестве результата возвращается хотя бы одна запись, данная запись тут же отображается в секции «Список запросов на вывод средств» в состоянии «New». При добавлении записи, происходит проверка уникальности запрашиваемого вывода по полю «Ext ID». В дальнейшем, система производит вывод средств на указанный пользователем адрес и уведомляет внешний сервис о произведенной выплате.
Уведомление о поступивших платежах и подтвержденных в блокчейн сети выводах
Данный запрос посылается во внешний сервис посредством API вызова и содержит список поступивших подтвержденных транзакций, обработанный криптошлюзом. В данном списке содержится как список поступлений, так и список подтвержденных в сети блокчейн транзакций по выводу средств. По поступлениям, в зависимости от рода деятельности, внешний сервис может зачислить сумму поступивших средств на счет пользователя или инициировать обратную операцию по обмену или перевести статус заказа на «Оплачен». По выводам, внешний сервис сможет учесть реальную комиссию, потраченную на осуществление выплаты и оповестить пользователя о том, что выплата/обменная операция была успешно произведена.
Уведомление о произведенном выводе средств
Данный запрос посылается во внешний сервис посредством API вызова сразу же после произведенного вывода средств. В этот момент, внешний сервис может перевести запрос на вывод в определенный статус и оповестить пользователя по эл. почте о том, что его запрос на вывод средств принят к исполнению.
Уведомление о транзакции по переброске средств на холодный кошелек и обратно
Данный запрос посылается во внешний сервис посредством API с целью оповещения, что средства с системного адреса были списаны или средства были, наоборот, пополнены. В этом случае, внешний сервис сможет перерассчитать сумму зарезервированных для выводов средств или произвести иной необходимый учет средств.
Список поддерживаемых запросов от внешнего сервиса
Получение состояния ноды
Данная команда посылается по защищенному WebSocket соединению в адрес криптошлюза для определения текущего состояния ноды. При изменении состояния, например, на «Only Deposits», внешний сервис сможет вовремя отключить функционал по выводу средств.
Получение адреса
Данная команда посылается по защищенному WebSocket соединению в адрес криптошлюза для запроса адреса, который в дальнейшем будет ассоциироваться с данным пользователем или заказом. Единственный и обязательный передаваемый параметр: account. Именно по этому идентификатору пользователя/заказа в дальнейшем будут определяться поступления средств.
Валидация адреса
Данная команда посылается по защищенному WebSocket соединению в адрес криптошлюза для валидации введенного пользователем адреса, на который необходимо произвести вывод средств.