Метод 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]);
}
}
}
}
Метод forward →