Skip to content

Latest commit

 

History

History
54 lines (32 loc) · 1.47 KB

File metadata and controls

54 lines (32 loc) · 1.47 KB

WTF Solidity 極簡入門:事件

重點內容

Note

介紹 solidity 中的 event

隨筆

事件

Solidity中的事件(event)是EVM上日志的抽象,它具有两个特点:

  • 响应:应用程序(ethers.js)可以通过RPC接口订阅和监听这些事件,并在前端做响应。
  • 经济:事件是EVM上比较经济的存储数据的方式,每个大概消耗 2,000 gas;相比之下,链上存储一个新变量至少需要 20,000 gas

聲明事件

事件的声明由 event 关键字开头,接着是事件名称,括号里面写好事件需要记录的变量类型和变量名。
ex:

   event Transfer(address indexed from, address indexed to, uint256 value);

Tip

帶有 indexed 關鍵字的變量,會被保存在以太坊虛擬機日誌的topics 中,方便之后检索。

釋放事件

使用 emit

EVM 日誌(log)

以太坊虚拟机(EVM)用日志 Log 来存储Solidity事件,每条日志记录都包含主题 topics 和数据 data 两部分。

主題(topics)

數據(data)

題目練習

  1. Q: 下列关于事件的说法中,错误的是?
    A: 鏈上儲存數據成本比儲存事件低

  2. Q: 可以使用emit关键字来释放一个事件?
    A: emit

  3. Q: 每个事件可以有无限个带indexed的变量?
    A: 錯誤

  4. Q: indexed关键字可以修饰任意类型的变量?
    A: 錯誤