# Мерчант 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>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://manual.boxexchanger.net/obmen/merchant-i-api/merchant-eth-erc20.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
