解释不同的错误消息:“ VM异常”与“错误退出”

时间:2019-08-15 07:35:15

标签: ethereum truffle

我正在使用Truffle和Ganache在智能合约中测试“失败”。一切正常,即抛出了错误,但我注意到错误消息有所不同,我想知道区别的确切含义是什么。

此功能时:

  function checkGranular(uint256 n) internal view {
    require(isMultiple(n), "Granularity breached");
  }

从以下位置致电:

function t(uint256 n) public view returns (address) {
  checkGranular(n)
}

失败,它给出此错误:

Returned error: VM Exception while processing transaction: revert Granularity breached

但从以下位置调用了相同的名称:

  function b(uint256 n) public {
    checkGranular(n);
  }

给予:

Transaction: 0x4d3513b9d5b0a9999af8e95891979b4a7c16d681cd08bd4da4c683770869a1ee exited with an error (status 0). Reason given: Granularity breached

第一个是“视图”方法,因此称为脱链,第二个是事务方法。这是造成差异的原因吗?

0 个答案:

没有答案