Copyright © 2022-2024 aizws.net · 网站版本: v1.2.6·内部版本: v1.23.3·
页面加载耗时 0.00 毫秒·物理内存 67.3MB ·虚拟内存 1300.5MB
欢迎来到 AI 中文社区(简称 AI 中文社),这里是学习交流 AI 人工智能技术的中文社区。 为了更好的体验,本站推荐使用 Chrome 浏览器。
Soliddity Event 事件是以太坊虚拟机(EVM)日志基础设施提供的一个便利接口。
当被发送事件(调用)时,会触发参数存储到交易的日志中。这些日志与合约的地址关联,并记录到区块链中。
区块链是打包一系列交易的区块组成的链条,每个交易“收据”会包含0到多个日志记录,日志表明着智能合约所触发的事件。
在 Solidity 代码中,使用 event 关键字来定义一个事件 Event,语法如下:
event EventName(<parameter list>);
在 Solidity 代码中,使用 emit 关键字来触发一个事件 Event,语法如下:
emit EventName(<parameter list>);
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; contract Envent { // 定义 event event Log(string, uint); function operations() external{ // 触发 event emit Log("Info", 123); } }
事件 Event 还有一种特殊形式 event indexed,也就是索引事件,语法如下:
event EventName(TypeName indexed varibleName....);
事件中 indexed 标记过的参数,可以在链外进行搜索查询。
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; contract Envent { // 定义 event event Log(address indexed, string); function operations() external{ // 触发 event emit Log(msg.sender, "Info"); } }
一个事件中 indexed 标记过的参数最多有 3 个。
记录区块链的日志,可以使用状态变量,也可以使用事件 Event,但 Event 使用的 gas 费比状态变量低。
Solidity immutable 是另一种常量的表达方式。与常量类似,但是不必硬编码,可以在构造函数时传值,部署后无法改变。immutable 不可变量同样不会占用状态变量存储空间,在部署 ...