Skip to content

Commit f92cdd2

Browse files
committed
Add study notes for 2025-08-16
1 parent ac0f657 commit f92cdd2

1 file changed

Lines changed: 138 additions & 0 deletions

File tree

0x-jian.md

Lines changed: 138 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)