事件是以太坊虚拟机(EVM)日志基础设施提供的一个便利接口。当被发送事件(调用)时,会触发参数存储到交易的日志中);
触发一个事件使用emit;
触发后的事件记录会存储在区块链上。
当触发事件后,在remix控制台之上会出现事件的记录。
from:代表合约地址
topic:代表的是事件的唯一标示,其本质也是hash函数,如在此例子中,为keccak256 (eve(string))的结果。
event:代表事件的名字
args:参数以及长度
源码:
pragma solidity ^0.8.7;
contract Enum{
event Log(string message, uint val);
//up to 3 index 最多三个索引
event IndexedLog(address indexed sender, uint val);
function example() external {
emit Log("foo",1234);
emit IndexedLog(msg.sender, 789);
}
event Message(address indexed _from, address indexed _to, string message);
function sendMessage(address _to, string calldata message) external {
emit Message(msg.sender, _to, message);
}
}