Skip to content

Commit 9fc886c

Browse files
committed
Add study notes for 2025-08-19
1 parent 9b2e348 commit 9fc886c

1 file changed

Lines changed: 46 additions & 0 deletions

File tree

buzhidaoa8848-hash.md

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,52 @@ timezone: UTC+8
1515
## Notes
1616

1717
<!-- Content_START -->
18+
# 2025-08-19
19+
20+
学习。太棒了!
21+
22+
* **以太坊:一个去中心化的“状态机”**
23+
以太坊是一个开源的区块链平台,它通过引入**智能合约**,使其不仅仅是一个转账系统,更是一个能运行去中心化应用(DApps)的“世界计算机”。
24+
25+
* **数据存储:不全在链上**
26+
为了节省存储成本,以太坊只在每个区块头中存储三棵核心默克尔树的**根哈希值**
27+
1. **世界状态树**:记录所有账户的最新状态(余额、代码等)。
28+
2. **交易树**:记录区块中的所有交易。
29+
3. **回执树**:记录交易的执行结果和日志。
30+
31+
* **账户类型:EOA vs. 合约账户**
32+
* **外部拥有账户(EOA)**:由**私钥**控制,用于发起交易和与合约互动。
33+
* **合约账户**:由**智能合约代码**控制,当收到消息时自动执行内部代码。
34+
35+
* **交易(Transaction):状态变化的驱动力**
36+
交易是执行操作的基本单位,由EOA发起。交易包含发送者、接收者、转账金额、Gas费用等信息,其生命周期包括创建、广播、打包、执行和确认。
37+
38+
---
39+
40+
### Solidity 编程基础
41+
42+
* **变量类型与数据位置**
43+
* **值类型 vs. 引用类型**
44+
* **值类型**(如 `int`, `uint`, `bool`, `address`):赋值时**复制**整个值。
45+
* **引用类型**(如 `mapping`, `array`):赋值时只**复制地址**,指向同一份数据。`mapping` 是一种特殊的引用类型,用于存储键值对,但**不能直接赋值**
46+
* **数据位置**
47+
* **`storage`**:用于永久存储合约的状态变量,数据会记录在区块链上,消耗 Gas。
48+
* **`memory`****`calldata`**:用于临时存储函数执行过程中的数据,不消耗链上存储。
49+
50+
* **函数类型:`pure` vs. `view`**
51+
* **`pure` 函数****不读取也不修改**任何状态变量。通常用于纯粹的计算,不消耗 Gas。
52+
* **`view` 函数****只读取但不修改**状态变量。通常用于查询合约状态,从外部调用时也不消耗 Gas。
53+
54+
* **特殊变量类型**
55+
* **`address`**:以太坊账户或合约的唯一标识符。
56+
* **`address payable`**:特殊的 `address` 类型,可以**接收**以太币转账。
57+
* **`contract`**:用于在合约内部引用和调用其他合约,是实现合约间交互的桥梁。
58+
59+
* **核心关键字**
60+
* **`internal`**:函数或变量仅能在**本合约或继承合约内部**使用。
61+
* **`external`**:函数只能从**合约外部**调用,本合约内部调用需加 `this`
62+
* **`constructor`****构造函数**,在合约部署时**只执行一次**,用于初始化状态变量。
63+
1864
# 2025-08-18
1965

2066
今天又复习了以前的内容。以太坊核心机制与智能合约全栈开发学习笔记

0 commit comments

Comments
 (0)