Главная | Документаци для разраотчиков | Модуль "Управление криптовалютами"

Модуль "Управление криптовалютами"

Обратите внимание, что для корректной работы данного модуля на сервере должно быть установлено расширение ICU, версия не ниже 4.9.

Добавление криптовалюты

Для того чтобы добавить новую криптовалюту в модуль необходимо создать класс и в нем реализовать интерфейс common\modules\crypto\contracts\ClientInterface, после чего необходимо добавить запись в таблицу {{%crypto_currency}} с информацией о криптовалюте:

  • symbol - тикер криптовалюты
  • name - наименование криптовалюты
  • client_class - класс клиента криптовалюты (указывается вместе с namespace)
  • rate - курс криптовалюты
  • commission - комиссия майнерам
  • min_amount_output - минимальная сумма к выводу

Пример добавления записи о криптовалюте через миграцию

  1. $this->insert('{{%crypto_currency}}', [
  2. 'symbol' => 'ETH',
  3. 'name' => 'Ethereum',
  4. 'clientClass' => 'common\modules\crypto\business\ethereum\Client',
  5. 'updated_at' => time()
  6. ]);

В качестве примера для реализации класса клиента криптовалюты можно использовать класс клиента Ethereum, который уже реализован в модуле common\modules\crypto\business\ethereum\Client.

Клиент криптовалюты Ethereum использует следующие расширения для работы:

  • h0rseduck/ethereum - расширение для работы с нодой криптовалюты Ethereum по RPC API
  • h0rseduck/yii2-etherscan - расширение для работы с блокэксплорером Etherscan через API

Помимо реализации класса клиента криптовалюты необходимо настроить и запустить клиент криптовалюты на сервере. Как это сделать лучше смотреть в документации конкретной криптовалюты.

Cron команды

  • yii crypto/transaction-input-actualize - Синхронизация транзакций пополнения с API (рекомендованный период запуска: 1 минута)
  • yii crypto/transaction-output-actualize - Актуализация информации о транзакциях на вывод (рекомендованный период запуска: 1 минута)
  • yii crypto/currency-rate-actualize - Обновление курса криптовалют к курсу по умолчанию (рекомендованный период запуска: 10 минут)
  • yii crypto/cold-address-transfer - Пересылка криптовалюты на холодный кошелек (рекомендованный период запуска: 1 минута)
  • yii crypto/cold-address-actualize - Обновление баланса холодных кошельков (рекомендованный период запуска: 1 минута)
  • yii crypto/transaction-email-notify - Уведомление пользователей по E-mail о завершении транзакций ввода/вывода (рекомендованный период запуска: 1 минута)
  • yii crypto/transaction-output-cancel - Отмена не подтвержденных транзакций на вывод (рекомендованный период запуска: 1 минута)

Курс криптовалюты хранится относительно фиатной валюты выбранной по умолчанию. Для того чтобы курс корректно обновлялся необходимо реализовать интерфейс common\modules\crypto\contracts\CurrencyDefaultInterface. Класс реализующий данный интерфейс должен быть унаследован он yii\db\ActiveRecord.

В модуле уже доступно два сервиса для обновления курсов криптовалют:

  • Bitfinex
  • CoinMarketCap

Для добавления сервиса необходимо реализовать интерфейс common\modules\crypto\contracts\RateApiInterface и заменить класс указанный в конфигурации common/modules/crypto/config/common.php в DI контейнере своим

  1. 'container' => [
  2. 'definitions' => [
  3. 'common\modules\crypto\contracts\RateApiInterface' => 'common\modules\crypto\business\rate\Bitfinex',
  4. ],
  5. ],

Настройки безопасности

Настроить фаервол на сервере таким образом чтобы он блокировал все соединения по порту 8090 (порт RPC API ноды), кроме локальных обращени.