> For the complete documentation index, see [llms.txt](https://manual.boxexchanger.net/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://manual.boxexchanger.net/obmen/merchant-i-api/merchant-eth-erc20.md).

# Мерчант ETH ERC20

{% hint style="info" %}
**RPC parity:** Для работы модуля у вас должна быть установлена нода и синхронизирована с сетью **Ethereum**. \
\
<https://github.com/openethereum/parity-ethereum>
{% endhint %}

### Настройка модуля

1. Перейдите в раздел **Merchant & API** -> **Merchant system**
2. Перейдите к настройки модуля **Ethereum ERC20 Token**
3. Заполните раздел **Config** в данном модуле:\
   \
   **RPC node URL (parity)** - URL к вашей BSC RPC ноде \
   **Wait confirms blocks** - Количество подтверждений необходимых для подтверждения \
   &#x20;   оплаты \
   **Gas price (in gwei)** - цена за транзакцию (gas price) (транзакции по слиянию приятых \
   &#x20;   средств на мастер адрес)\
   **Contract address** - Адрес контракта который принимаем с помощью этого модуля\
   **Contract ABI** -  ABI json контракта получить его можно в сканере [**https://etherscan.io/**](https://etherscan.io/)    \
   &#x20;    нужно перейти в адрес контракта **Contract -> Code -> Contract ABI**\
   **Collect token when amount greater than or equal** (>=) - минимальное количество токенов \
   &#x20;    полученных на кошелек (адрес выдается повторно через 2 дня после создания заявки)\
   **Master address** - Адрес на который собирать ваши средства с адресов которые были \
   &#x20;    выданы для обмена \
   **PrivateKey service account** -  Приватный ключ от адреса который отвечает за сбор \
   &#x20;   средств с него происходит оплата комиссии сети (в целях безопасности рекомендуем \
   &#x20;   использовать другой кошелек  отличающийся от **Master address**) [создать кошелек](https://www.boxexchanger.net/gen-eth/)

### Установка блока синхронизации

Для установки блока с которого нужно начинать синхронизировать платежи необходимо выполнить команду в папке exchange-api: (рекомендуем предварительно остановить сервис **api-http**)

```
npm run setting-set merchant:eth_erc_20:fromBlock 123 force
```

Вместо 123 установите свой номер блока.

### Как работает мерчант ETH ERC20?

1. Под каждую заявку получаем адрес ETH он будет заморожен под этой заявкой **2 дня** через 2 дня он может быть использован повторно под другую заявку. (срок заморозки можно изменить в самом модуле)
2. Далее клиент оплачивает средства и мы отмечаем заявку оплаченной
3. Производим сбор средств на **Master address** который указан в настройках модуля для этого производятся следующие действия: \
   1\) Проверяем адрес сколько токенов на нем сейчас сумма должена быть больше или \
   &#x20;   равна сумме которая настроена в модуле "**Collect token when amount...**"\
   2\) Проверяем есть ли доступ на перевод с нашего сервисного аккаунта (**PrivateKey** \
   &#x20;     **service account**) если нет то даем это разрешение путем переводим необходимое \
   &#x20;    количество ETH на адресс с которого будет вызова функция\
   &#x20;    `approve(:serviceAddress,totalSupply)` будтьте внимательны контролируйте \
   &#x20;    баланс **ETH** у вашего **service account** вызов этих функций платный в сети ETH\
   3\) После того как мы проверили что у нас есть разрешение на перевод совершаем \
   &#x20;    перевод средств на наш **Master address** владелец транзакции будет **service account**    \
   &#x20;    также контролируйте чтоб было достаточно ETH для оплаты транзакции&#x20;

   <br>

   <figure><img src="/files/icedfmhyAUREdAqDoi6k" alt=""><figcaption></figcaption></figure>
