Solidity 小白教程:12. 事件
这一讲,我们用转账 ERC20 代币为例来介绍solidity中的事件(event)。
事件
Solidity中的事件(event)是EVM上日志的抽象,它具有两个特点:
- 响应:应用程序(ethers.js)可以通过RPC接口订阅和监听这些事件,并在前端做响应。
- 经济:事件是EVM上比较经济的存储数据的方式,每个大概消耗 2,000 gas;相比之下,链上存储一个新变量至少需要 20,000 gas。
声明事件
事件的声明由event关键字开头,接着是事件名称,括号里面写好事件需要记录的变量类型和变量名。以ERC20代币合约的Transfer事件为例:
event Transfer(address indexed from, address indexed to, uint256 value);
我们可以看到,Transfer事件共记录了 3 个变量from,to和value,分别对应代币的转账地址,接收