Как позвонить по контракту Multisend

Если у меня есть контракт с кодом

contract Airdropper is Ownable {

function multisend(address _tokenAddr, address[] dests, uint256[] values)
onlyOwner
returns (uint256) {
    uint256 i = 0;
    while (i < dests.length) {
        ERC20(_tokenAddr).transfer(dests[i], values[i]);
        i += 1;
    }
    return(i);
}
}

Как бы я это назвал (как бы я создал массив, где должен храниться токен)? Кроме того, сколько транзакций я могу выполнить одновременно, прежде чем это вызовет проблемы? Это без ограничений? Могу ли я сделать 10 000 сразу, сэкономив десятки тысяч долларов на бензине?

Я готов нанять кого-нибудь, чтобы сделать это для меня, и я буду платить им!

Спасибо!

Ответы (1)

Я создал Multisender Dapp: https://rstormsf.github.io/multisender/#/

Исходный код: https://github.com/rstormsf/multisender/blob/master/contracts/contracts/multisender/UpgradebleStormSender.sol

function multisendToken(address token, address[] _contributors, uint256[] _balances) public hasFee payable {
    uint256 total = 0;
    require(_contributors.length <= arrayLimit());
    ERC20 erc20token = ERC20(token);
    uint8 i = 0;
    for (i; i < _contributors.length; i++) {
        erc20token.transferFrom(msg.sender, _contributors[i], _balances[i]);
        total += _balances[i];
    }
    setTxCount(msg.sender, txCount(msg.sender).add(1));
    Multisended(total, token);
}
Экономит ли это бензин?
@ Джеймс, нет, это не экономит бензин, а только экономит ваше время.