考虑以下人为的合同功能:
function submitOffer(uint256 foo) public payable {
emit MyEvent(foo);
// then later...
require(foo > 10, "Foo must be greater than 10");
}
该函数在第一行上发出一个事件,然后检查一些require条件。如果条件失败,任何状态更改都会被恢复。这会导致事件也被“恢复”(或从未真正发出)吗?我想答案是肯定的,因为事务永远不会被包含在一个块中,但是有什么我没有考虑的吗?