Solidity事件触发顺序

时间:2018-01-13 22:33:09

标签: events ethereum solidity

我一直在看OpenZeppelin的Ownable合同,并且采用以下方法:

/**
 * @dev Allows the current owner to transfer control of the contract to a wOwner.
 * @param newOwner The address to transfer ownership to.
 */
function transferOwnership(address newOwner) public onlyOwner {
  require(newOwner != address(0));
  OwnershipTransferred(owner, newOwner);
  owner = newOwner;
}

此处,事件OwnershipTransferred会在实际所有者设置为新所有者之前触发。 EVM原子中的方法执行是否意味着事件只会在方法执行完后执行后触发?否则,我发现当EVM尚未处于正确状态时,某些事件监听器可能会对此事件起作用。我并不是100%确信这是安全的。

1 个答案:

答案 0 :(得分:2)

变异状态的函数被称为事务的一部分,就是这样。整个事务成功或整个事务失败。从外部观察者的角度来看(例如观察事件的事情),是的,交易是原子的。