@@ -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