假设目标地址是具有特定方法_addr的契约,那么我有一个方法可以对地址isValid()进行低级别调用:
contract Dummy {
function doCall(address _addr) public returns (bool) {
return _addr.call(abi.encodeWithSignature("isValid()");
}
}如果地址_addr不是契约而是EOA,会发生什么情况?在Remix中尝试它表明,当true是EOA时,调用返回_addr。
如果确实是这样的话,是否有人能向我解释或指点文档中的这部分内容,使之欢欣鼓舞?
提前感谢!
发布于 2018-08-17 13:27:53
(按要求将我的评论移到一个答复中)
是的,这个电话会成功的。通常,除非接收地址恢复,否则呼叫将成功。EOA和契约之间的区别是契约有代码(因此代码可能会恢复,例如,如果它没有定义给定的函数,并且缺少回退函数)。EOA没有代码,因此不可能恢复。
https://ethereum.stackexchange.com/questions/56743
复制相似问题