@@ -15,6 +15,144 @@ timezone: UTC+8
1515## Notes
1616
1717<!-- Content_START -->
18+ # 2025-08-16
19+
20+ - 1.日常晚自习
21+ - 2.写了一篇关于lighter 这个prep dex的教程
22+ - 3.参与了x的space
23+ - 4.参与了BN广场的直播,最近疯狂吃瓜ing
24+ - 5.继续学习部分技术学习手册
25+ ## 高阶内容
26+
27+ ### 1. Gas 优化
28+ - ** 基本原理** : Gas 是 EVM 执行操作的单位,优化减少总 Gas 消耗,提升体验,降低成本。
29+ - ** 常见技巧** :
30+ - ** 减少存储操作** : 存储读取 2100 gas(后续 100 gas),写入 20,000 gas;优先用内存(3 gas)。
31+ ``` solidity
32+ // ❌ 非优化
33+ mapping(address => uint256) public balances;
34+ function deposit() public payable {
35+ balances[msg.sender] += msg.value;
36+ }
37+ // ✅ 优化
38+ function deposit() public payable {
39+ uint256 current = balances[msg.sender];
40+ balances[msg.sender] = current + msg.value;
41+ }
42+ ```
43+ - **位压缩**: 多个变量存入一个 uint256。
44+ ```solidity
45+ struct Packed {
46+ uint128 a;
47+ uint128 b;
48+ }
49+ ```
50+ - **循环优化**: 缓存 array.length。
51+ ```solidity
52+ // ❌ 非优化
53+ for (uint256 i = 0; i < arr.length; i++) { ... }
54+ // ✅ 优化
55+ uint256 len = arr.length;
56+ for (uint i = 0; i < len; ++i) { ... }
57+ ```
58+ - **函数可见性**: `external` 比 `public` 更省 Gas。
59+
60+ ### 2. 合约安全
61+ - **设计原则**: 最小权限、模块化结构、显式错误处理、事件记录。
62+ - **常见漏洞**:
63+ - **重入攻击**: 外部合约在 fallback 中重复调用。
64+ - **案例**: The DAO 漏洞,6000 万美元 ETH 被盗。
65+ - **防护**: 先更新状态,再转账。
66+ ```solidity
67+ // ❌ 有漏洞
68+ function withdraw() public {
69+ require(balance[msg.sender] > 0);
70+ (bool sent,) = msg.sender.call{value: balance[msg.sender]}("");
71+ require(sent);
72+ balance[msg.sender] = 0;
73+ }
74+ // ✅ 修复
75+ function withdraw() public {
76+ uint256 amount = balance[msg.sender];
77+ balance[msg.sender] = 0;
78+ (bool sent,) = msg.sender.call{value: amount}("");
79+ require(sent);
80+ }
81+ ```
82+ - **预言机操纵**: 使用 Chainlink、TWAP、多源验证。
83+ - **整数溢出/下溢**: 用 Solidity 0.8+ 或 SafeMath。
84+ - **权限控制缺失**: 用 `onlyOwner` 或 `AccessControl`。
85+ - **未初始化代理**: 确保初始化函数安全,防止接管。
86+ - **案例**: Harvest Finance 未初始化漏洞。
87+ - **前置交易/三明治攻击**: 2025 年 3 月 Uniswap V3 损失 21.5 万美元。
88+ - **防护**: 评估滑点,优化交易设计。
89+
90+ ### 3. 智能合约审计
91+ - **必要性**: 部署后不可修改,审计确保资金安全和合规。
92+ - **审计工具**:
93+ - **Slither**: 静态分析,`slither MyContract.sol`。
94+ - **MythX**: 云平台,`mythx analyze MyContract.sol`。
95+ - **Foundry**: 模糊测试,`forge test`。
96+ - **审计流程**:
97+ 1. 静态分析(Slither、Mythril)。
98+ 2. 动态测试(模糊测试)。
99+ 3. 人工审查业务逻辑。
100+ 4. 生成审计报告。
101+ - **知名机构**:
102+ | 机构 | 特点 | 项目经验 |
103+ |------|------|----------|
104+ | 慢雾科技 | 攻击复现 | EOS、币安 |
105+ | OpenZeppelin | 社区信赖 | Compound、Balancer |
106+ | ConsenSys Diligence | 以太坊底层 | Uniswap、1inch |
107+
108+ ### 4. 开发协作规范
109+ - **GitHub 工作流**:
110+ - **分支策略**:
111+ - `main`: 可部署状态。
112+ - `develop`: 功能开发。
113+ - `feature/xxx`, `fix/xxx`, `release/xxx`: 功能、修复、发布分支。
114+ - **提交信息**:
115+ ```
116+ 类型: 简要描述
117+ 说明: 详细信息
118+ Issue: 编号
119+ ```
120+ 类型: `feat`, `fix`, `docs`, `refactor`, `test`, `chore`.
121+ - **PR 流程**:
122+ - 新分支提交 PR,确保通过测试、静态检查。
123+ - PR 标题简洁,需 reviewer 审查。
124+ - 使用 `PULL_REQUEST_TEMPLATE.md` 统一格式。
125+ - **Code Review 检查**:
126+ - 代码规范、逻辑正确性、安全性、Gas 优化、注释、测试覆盖。
127+ - **Issue 管理**:
128+ - 描述结构: 背景 + 问题 + 尝试方法 + 环境。
129+ - 标签: `bug`, `enhancement`, `security`, `documentation`, `high-priority`.
130+ - 自动化: GitHub Actions 添加标签、标记 `stale`。
131+ - **开源协作礼仪**:
132+ - 代码配测试和文档。
133+ - 公开沟通,优先 PR 评论。
134+ - 重大变更用讨论区。
135+
136+ ### 5. Layer 2 解决方案
137+ - **Rollup 技术比较**:
138+ | 类型 | 原理 | 优点 | 缺点 |
139+ |------|------|------|------|
140+ | Optimistic Rollup | 欺诈证明期 | EVM 兼容,成本低 | 提现延迟 (1-2 周) |
141+ | ZK Rollup | 零知识证明 | 安全性高,快速提现 | 开发难度大,EVM 兼容有限 |
142+ - **主流 L2 平台**:
143+ - **Starknet**: Cairo 语言,ZK-STARK,高扩展性。
144+ - **zkSync**: 支持 Solidity,ZK Rollup,开发友好。
145+ - **Arbitrum**: Optimistic,兼容 EVM 工具链。
146+ - **Base**: OP Stack,生态支持强,成本低。
147+ - **开发入门指南**:
148+ 1. **环境准备**: 安装 SDK(如 zkSync CLI),配置 L1/L2 RPC,搭建 Devnet。
149+ 2. **合约部署**: 注意 CREATE2、Gas 差异,使用平台部署脚本。
150+ 3. **跨链交互**: 用官方桥接器(zkSync Bridge)或第三方协议(LayerZero)。
151+ 4. **案例**:
152+ - zkSync: Uniswap V3 fork。
153+ - Starknet: Cairo 构建 NFT 合约。
154+ - Arbitrum: Nitro 模式 Gas 竞拍。
155+
18156# 2025-08-15
19157
20158- 1.参加8.15周例会:大家都很强啊,运营组这个执行力真的是max
0 commit comments