我试图理解Aion scheduling system,所以我尝试了这里的代码示例。
下面是代码片段:
pragma solidity ^0.4.24;
// interface Aion
contract Aion {
uint256 public serviceFee;
function ScheduleCall(uint256 blocknumber, address to, uint256 value, uint256 gaslimit, uint256 gasprice, bytes data, bool schedType) public payable returns (uint,address);
}
// Main contract
contract MyContract{
uint256 public sqrtValue;
Aion aion;
function schedule_rqsr(uint256 number) public {
aion = Aion(0xFcFB45679539667f7ed55FA59A15c8Cad73d9a4E);
bytes memory data = abi.encodeWithSelector(bytes4(keccak256('sqrt(uint256)')),number);
uint callCost = 200000*1e9 + aion.serviceFee();
aion.ScheduleCall.value(callCost)( block.number+15, address(this), 0, 200000, 1e9, data, false);
}
function sqrt(uint256 number) public {
sqrtValue = number**2;
}
function () public payable {}
}合同成功部署在ropsten地址0x91FDda60342d55B249A05083A5e9cB8102674D05
在启动函数schedule_rqsr时,我面临一个问题。当触发此函数时,我将面临“气体估计失败”的错误。
在这里找到错误截图:

发布于 2020-09-01 19:10:38
通常情况下,当你被警告气体评估失败时,它只是一个警告。这意味着系统试图估计您应该提供多少气体(应该是gas limit),但是失败了。在这种情况下,您可能需要手动提供气体限制,只需发送事务。如果你提供足够大的汽油限制,一切都会很好。
气体估计可能由于各种原因而失败,但肯定会失败;这意味着,由于相同的契约和功能调用,每次都会失败。通常,契约具有过于复杂的内部逻辑或调用外部契约,这将导致评估失败。
https://ethereum.stackexchange.com/questions/79655
复制相似问题