Я хочу вызвать другой метод контракта надежности с помощью 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)
Любая помощь приветствуется. Спасибо