не удалось вызвать методы другого контракта солидности - PullRequest
0 голосов
/ 10 июля 2020

Я хочу вызвать другой метод контракта надежности с помощью Call / DelegateCall. Хотя транзакция кажется успешной, но я не получил ожидаемого результата, и отображается сообщение «Хотя одна или несколько ошибок произошла [закончился газ] Выполнение контракта завершено».

Я новичок в коде надежности и я используйте ремикс и метамаск для компиляции и развертывания контракта на ropsten tes tnet. Я не уверен, допущу ли я какую-нибудь глупую ошибку. Вот два моих кода контракта:

pragma solidity ^0.4.6;

contract Callee {
    uint[] public values;

    function getValue(uint initial) public view returns(uint) {
        return initial + 150;
    }
    
    function storeValue(uint value) public {
        values.push(value);
    }
    
    function getValues() public view returns(uint) {
        return values.length;
    }
}
pragma solidity ^0.4.6;

contract Caller {
    function someUnsafeAction(address addr) public {
        addr.call(bytes4(keccak256("storeValue(uint256)")), 100);
    }
}

Я попытался вызвать метод Callee storeValue () в контракте вызывающего абонента (https://ropsten.etherscan.io/address/0x082d72c6bc9488fce83953fe74eece642b81dc05), передав "0x300997B17aEC75F636Ced66570Af76c05Dd380c9" в функция someUnsafeAction (). Транзакция прошла, но я не получил ожидаемого результата, значение «100» не сохраняется в контракте Callee (https://ropsten.etherscan.io/address/0x300997b17aec75f636ced66570af76c05dd380c9).

Вот транзакция (https://ropsten.etherscan.io/tx/0x625f7cac9aec9613f3e1ab81fbe06a4f57b85517e89521775cdaad2a3a656c5e)

Любая помощь приветствуется. Спасибо

...