@@ -15,6 +15,94 @@ timezone: UTC+8
1515## Notes
1616
1717<!-- Content_START -->
18+ # 2025-08-18
19+
20+ 今天又复习了以前的内容。以太坊核心机制与智能合约全栈开发学习笔记
21+ 日期:2025 年 8 月 18 日
22+ 主题:以太坊账户模型、交易机制与合约全栈开发流程
23+
24+ 一、以太坊核心机制
25+ 账户模型对比
26+
27+ 外部拥有账户 (EOA):由私钥控制,可以主动发起交易。地址由公钥计算而来。
28+
29+ 合约账户 (Contract Account):由代码控制,只能被动执行。地址由部署交易计算而来。
30+
31+ Gas 机制
32+
33+ Gas:衡量交易执行复杂度的单位。
34+
35+ Gas Limit:交易愿意消耗的 Gas 上限。
36+
37+ Base Fee:随网络拥堵动态调整的基础费用,会被销毁。
38+
39+ Priority Fee:给矿工/验证者的“小费”,用于优先打包。
40+
41+ 二、交易生命周期
42+ 签名构造:钱包收集交易参数,并使用私钥生成数字签名。
43+
44+ 广播到网络:签名后的交易进入节点的 mempool(内存池)。
45+
46+ 打包 / 提议区块:验证者(或矿工)将交易打包成区块。
47+
48+ 区块传播与共识:区块在网络中传播并得到大多数节点的确认。
49+
50+ 确认与终结:交易被打包进区块后,经过一定数量的区块确认(通常 12 个以上),被认为是不可逆的。
51+
52+ 三、合约部署与前端整合
53+ 测试网部署
54+
55+ 意义:在不消耗真实资产的情况下,测试合约功能与安全性。
56+
57+ 流程:
58+
59+ 通过水龙头(Faucet)获取测试币(如 Sepolia ETH)。
60+
61+ 在 Remix IDE 中连接 MetaMask,选择测试网。
62+
63+ 编译并部署合约,通过 MetaMask 确认交易。
64+
65+ 使用区块浏览器(如 Etherscan)验证合约是否成功上链。
66+
67+ 前端整合
68+
69+ 工作流程:前端通过 Web3 库(如 Web3.js)连接钱包,获取用户授权,创建合约实例,然后调用合约函数与链上交互。
70+
71+ 关键技术:ABI(应用二进制接口)是前端与合约交互的桥梁;send() 用于发送需要 Gas 的写操作,而 call() 用于免费的只读查询。
72+
73+ 四、高级内容与安全实践
74+ Gas 优化:
75+
76+ 减少存储操作:优先使用 memory,减少 storage 读写。
77+
78+ 位压缩:将多个变量打包进一个 uint256 以节省空间。
79+
80+ 循环优化:减少不必要的重复计算。
81+
82+ 函数可见性:对仅外部调用的函数使用 external。
83+
84+ 安全漏洞与防护:
85+
86+ 重入攻击:在 Checks-Effects-Interactions 模式下,先更新状态再进行外部调用。
87+
88+ 访问控制:使用 onlyOwner 或 AccessControl 等修饰符,限制敏感函数的调用权限。
89+
90+ 整数溢出:使用 Solidity 0.8+ 版本自带的溢出检查,或使用 SafeMath 库。
91+
92+ 智能合约审计:
93+
94+ 必要性:合约一旦部署无法修改,审计是保障资金安全的关键。
95+
96+ 工具:使用 Slither 等静态分析工具,并通过 Foundry 进行模糊测试。
97+
98+ 流程:静态分析 → 动态测试 → 人工审查 → 审计报告。
99+
100+ Layer 2 解决方案:
101+
102+ 分类:Optimistic Rollup(欺诈证明)和 ZK Rollup(零知识证明)。
103+
104+ 主流平台:Arbitrum、Optimism、Starknet、zkSync 等。
105+
18106# 2025-08-16
19107
20108以太坊核心机制与合约部署实践学习笔记
0 commit comments