我正在使用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
第一个是“视图”方法,因此称为脱链,第二个是事务方法。这是造成差异的原因吗?