Solidity 练习:事件

2022-12-29 Web3 Solidity

# 一、题目说明

事件允许智能合约在不使用状态变量的情况下将数据记录到区块链。

事件通常用于调试和监控,也是存储数据的状态变量的廉价替代方案。

# 二、任务列表

  1. 声明一个 Message 事件,包含 3 个参数:
    1. address 类型的 _from(带索引)
    2. address 类型的 _to(带索引)
    3. string 类型的 _message
  2. 编写函数 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

# 四、参考资料

Last Updated: 2023-01-28 4:31:25