我想使用Call/DelegateCall调用另一个实体契约的方法。虽然事务看起来很成功,但我没有得到预期的结果,它显示了“虽然一个或多个错误发生了无气合同执行完成”的消息。
我对稳固代码很陌生,我使用remix在ropsten testnet上编译和部署契约。我不知道我是否犯了什么愚蠢的错误。这是我的两个合同代码:
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);
}
}我使用我的元掩码帐户在ropsten测试网上部署Callee合同和Caller契约,然后将Callee合同地址"0x300997B17aEC75F636Ced66570Af76c05Dd380c9“传递给Caller的someUnsafeAction方法。事务完成了,但我没有得到预期的结果,值"100“没有保存到Callee合同(https://ropsten.etherscan.io/address/0x300997b17aec75f636ced66570af76c05dd380c9)中。
这是事务(https://ropsten.etherscan.io/tx/0x625f7cac9aec9613f3e1ab81fbe06a4f57b85517e89521775cdaad2a3a656c5e)
任何帮助都是非常感谢的。谢谢
发布于 2020-07-11 14:12:28
正如Ismael所提到的,解决方案是当您的交易信任弹出元掩码窗口时,我们可以编辑(增加)那里的气体限制,以获得我们预期的结果。
https://ethereum.stackexchange.com/questions/84933
复制相似问题