30 call与直接调用函数这两种调用方式的区别

在合约中,如果使用call或者delegatecall这种low-level的合约调用方式时,如果调用的合约方法失败时,仅仅是返回0或者1.
然而如果是在合约中直接调用一个方法,如果该方法失败,则会导致回退。
为什么会出现这种差别?solidity中对于low-level和直接方法调用中有什么不同吗?还是说solidity在直接方法调用中,在编译阶段加入了revert逻辑?

请先 登录 后评论

1 个回答

Tiny熊
  擅长:智能合约,以太坊

这个差别是需要的。

有时需要合约合约里处理这个失败, 甚至是依赖这个失败。
如果是直接方法调用,这整个交易就失败了。

背后具体是怎么处理的,我也没有研究过, 不过, 直接方法调用按道理最后也应该是转换 底层的 call .

请先 登录 后评论
  • 1 关注
  • 0 收藏,3411 浏览
  • bixia1994 提出于 2021-09-28 14:56