Cómo llamar al contrato de envío múltiple

Si tengo el contrato con el código

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);
}
}

¿Cómo lo llamaría (cómo crearía la matriz, dónde se debe almacenar el token)? Además, ¿cuántas transacciones podría hacer a la vez antes de que cause problemas? ¿Es ilimitado? ¿Podría hacer 10.000 a la vez ahorrando decenas de miles de dólares en gasolina?

¡Estoy dispuesto a contratar a alguien para que haga esto por mí y le pagaré!

¡Gracias!

Respuestas (1)

He creado Multisender Dapp: https://rstormsf.github.io/multisender/#/

Código fuente: 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);
}
¿Esto ahorraría gasolina?
@James no, no ahorra gasolina, solo te ahorra tiempo.