Метод sendByContract

Блокчейн: [Ethereum] [Polygon] [Binance Smart Chain] [TRON]
Стоимость: 1 единица


Создать заявку на отправку ТОКЕНА с адреса from на адрес to, заплатив комиссию с адреса feePayer, используя функцию function контракта contract.
Параметры:
token - токен
feePayer - адрес-плательщик комиссии
contract - адрес Вашего специального контракта, получившего разрешение от адреса from
*function - имя вызываемой функции контракта [tokenMultiSend]
Может использоваться для групповой отправки.
Остальные параметры и результат как в методе send.

Принцип работы

Сервис выбирает заявки с одинаковым group и формирует из них ОДНУ транзакцию на контракт contract, вызывая функцию function с параметрами:
_from - список адресов, откуда происходит списание токенов
_to - список адресов, куда происходит зачисление токенов
_token - список адресов контрактов токенов
_amount - список сумм токенов
Используя этот метод можно "собирать" токены с нескольких разных адресов и отправлять на любые другие адреса одной транзакцией, при этом комиссия снимается только с адреса feePayer.
ОБЯЗАТЕЛЬНОЕ УСЛОВИЕ: contract должен иметь approve от from для token!

Пример кода контракта

Замените в примере адрес 0x000000000000000000000000000000000000000000 на feePayer.

pragma solidity 0.4.25;

contract ERC20 {
   function transferFrom(address from, address to, uint256 value) public returns (bool);
}

contract TokenMultiSender {
   function tokenMultiSend(address[] _from, address[] _to, address[] _token, uint256[] _amount) public payable {
      if (msg.sender == 0x000000000000000000000000000000000000000000) {
         uint256 clen = _to.length;
         ERC20 erc20token;
         for (uint8 i = 0; i < clen; i++) {
            erc20token = ERC20(_token[i]);
            erc20token.transferFrom(_from[i], _to[i], _amount[i]);
         }
      }
   }
}


Метод approve