Skip to content

Commit 55f84e0

Browse files
committed
Add study notes for 2025-08-19
1 parent 26b1dae commit 55f84e0

1 file changed

Lines changed: 39 additions & 0 deletions

File tree

tikpen.md

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,45 @@ web2前端开发,对web3感兴趣,想加入web3.
1515
## Notes
1616

1717
<!-- Content_START -->
18+
# 2025-08-19
19+
20+
### Solidity用法
21+
22+
#### ABI
23+
24+
在以太坊生态系统中,**ABI(Application Binary Interface,应用二进制接口)** 是连接智能合约与外部应用(如前端 DApp)的关键桥梁。它定义了合约中的函数和事件如何与外部系统进行交互。
25+
26+
#### ABI的组成
27+
28+
一个标准的 Solidity ABI 是一个 JSON(JavaScript Object Notation)数组,每个数组元素描述了合约中的一个函数、构造函数或事件。每个元素包含以下字段:
29+
30+
- type: 描述类型,如 function、constructor、event。
31+
- name: 函数或事件的名称。
32+
- inputs: 输入参数的详细信息,包括类型和名称。
33+
- outputs: (仅限函数)输出参数的详细信息。
34+
- stateMutability: 函数的状态可变性,如 view(只读)、nonpayable(不接受以太币)等。
35+
- anonymous: (仅限事件)是否为匿名事件。
36+
37+
#### 事件
38+
39+
事件的作用
40+
41+
- **状态变更通知**:当合约状态发生变化时,通过事件通知外部应用。例如,代币转账事件。
42+
- **调试与记录**:开发者可以使用事件来记录合约执行过程中的关键信息,便于调试和审计。
43+
- **触发前端更新**:前端应用可以监听特定事件,以动态更新界面或执行特定操作。
44+
45+
事件的定义和使用涉及几个关键概念:签名、主题和索引参数。
46+
47+
每个事件都有一个唯一的签名,它包括事件名称和参数类型。例如,一个事件 Transfer(address indexed from, address indexed to, uint256 value),它带有 address 类型的 from 和 to 参数,以及 uint256 类型的 value 参数,其签名就是 Transfer(address,address,uint256)。
48+
49+
事件签名经过 Keccak-256 哈希运算后,得到的哈希值被称为事件的主题(Topic)。这个主题用于在区块链上唯一标识该事件,使得外部应用能够快速定位和过滤特定类型的事件。
50+
51+
Solidity 允许使用 indexed 关键字标记事件参数。这些被标记的参数称为索引参数,它们具有特殊的属性:
52+
53+
- 索引参数允许外部应用基于这些参数值高效地过滤和查询相关事件。
54+
- 每个事件最多可以有三个索引参数。
55+
- 索引参数的值被存储在日志的主题部分,而不是数据部分,这使得它们更容易被检索。
56+
1857
# 2025-08-18
1958

2059
1.Twitter Space海报制作,与团队成员确定策划方案终版并宣发。

0 commit comments

Comments
 (0)