阅读黄纸http://yellowpaper.io/文档以获取CALL。
如果此操作的代码执行由于异常停止,Z(σ,,I) =>或若S>σb (资金不足)或Ie = 1024 (达到调用深度限制),则为x=1,则为x=1。
所有这些情况是否会导致异常并停止执行,从而阻止CALL返回?
就像投下一枚带有贺卡的核弹.没有用,因为贺卡已经过时了。
发布于 2018-02-15 08:01:26
所有这些情况是否会导致异常并停止执行,从而阻止调用返回?
它阻止被CALL编辑的代码继续运行,但它以零返回值(指示失败)将控制返回给调用者。
你可以在里米克斯试试:
pragma solidity ^0.4.19;
contract Fail {
function fail() public {
revert();
}
}
contract TestCall {
Fail f = new Fail();
// This will revert.
function test1() public {
f.fail();
}
// This transaction will succed, but the CALL returns 0.
function test2() public {
f.call(bytes4(keccak256("fail()")));
}
}哦,我想你把你的问题说反了,但是对“在什么情况下叫返回非零”的答案呢?是“呼叫成功的时候”
https://ethereum.stackexchange.com/questions/39696
复制相似问题