Solidity 练习:事件
睡不醒的鲤鱼 2022-12-29 Web3 Solidity
# 一、题目说明
事件允许智能合约在不使用状态变量的情况下将数据记录到区块链。
事件通常用于调试和监控,也是存储数据的状态变量的廉价替代方案。
# 二、任务列表
- 声明一个 Message 事件,包含 3 个参数:
- address 类型的 _from(带索引)
- address 类型的 _to(带索引)
- string 类型的 _message
- 编写函数 sendMessage(address _addr, string calldata _message),用于记录 Message 事件,其中 _from 为 msg.sender。
# 三、解答代码
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;
contract Event {
event Log(string message, uint val);
// Up to 3 parameters can be indexed
event IndexedLog(address indexed sender, uint val);
event Message(address indexed _from, address indexed _to, string _message);
function examples() external {
emit Log("Foo", 123);
emit IndexedLog(msg.sender, 123);
}
function sendMessage(address _addr, string memory _message) external {
emit Message(msg.sender, _addr, _message);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18