основательность - я хочу вызвать функцию передачи из моего контракта токена ERC20 через делегат - PullRequest
0 голосов
/ 11 декабря 2018

Я хотел бы использовать делегатский вызов для отправки многих людей, которые участвовали в передаче моего токена одной транзакцией, поэтому я пытаюсь вызвать функцию Transfer (), объявленную в контракте токена ERC20, который я развернул в контракте MultiSend.Первый код - Multisend Contract

 contract MultiSend {                                                
  function multiSend(address _token, address[] addresses, uint256 amount) public {

for(uint i = 0; i < addresses.length; i++) {
  require(_token.delegatecall(bytes32(keccak256("transfer(address, uint256)")), addresses[i], amount));
}

}}

В коде токена ERC20 указан код code ().

    function transfer(address _to, uint256 _value)
public
returns (bool) {
    unlockBalance(msg.sender);

    locker storage l = lockerList[msg.sender];

    if (l.isLocker) {
        require(_value <= balances[msg.sender].available);
        require(_to != address(0));

        balances[msg.sender].available = balances[msg.sender].available.sub(_value);
        addLockedUpTokens(_to, _value, l.lockUpPeriod, l.unlockCount);
    } else { 
        require(_value <= balances[msg.sender].available);
        require(_to != address(0));

        balances[msg.sender].available = balances[msg.sender].available.sub(_value);
        balances[_to].available = balances[_to].available.add(_value);
    }
    emit Transfer(msg.sender, _to, _value);

    return true;
}

Я успешно развернул MultiSend контракт, а ERC20Токен-контракт тоже работает самостоятельно.Тем не менее, когда я попытался отправить транзакцию через MultiSend контракт, эта транзакция не удаласьЯ не знаю, почему я не могу отправить токены по этому контракту.

...