Post Byzantium,当我测试合同函数时,有些(1)返回带有status字段的事务对象/收据,而另一些(2)失败并恢复。
检查返回的事务对象
assert(txReceipt.receipt.status === 0)检查引发的错误
contract.someMethodThatWillFail(params)
.then(
() => assert.throw('should not have reached here'),
e => assert.isAtLeast(e.message.indexOf('revert'), 0)
)是什么决定了方法是否会表现为(1)和(2)?(试验及错误除外)
我尝试过违反require()的S和函数的修饰符,我看不出这个函数是否会产生1vs2的模式。
发布于 2017-12-06 20:38:43
想清楚了,很明显是想起来了。事务收据只返回事务挖掘后的状态。
因此,场景(1)发生在事务被挖掘之后,但是(2)可以在调用函数之后立即检查,甚至在挖掘事务之前。
https://ethereum.stackexchange.com/questions/32595
复制相似问题