Skip to content

Commit 115f021

Browse files
committed
Add study notes for 2025-08-20
1 parent 6b44cb1 commit 115f021

1 file changed

Lines changed: 94 additions & 0 deletions

File tree

cigaho.md

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,100 @@ HKU大三Fintech专业在读, 对blockchain 生态有一定了解, 掌握solidit
1515
## Notes
1616

1717
<!-- Content_START -->
18+
# 2025-08-20
19+
20+
# Foundry Anvil 本地节点核心实践
21+
22+
## Anvil 核心功能
23+
### 本地开发环境
24+
- **一键启动私有链**:单命令创建本地以太坊环境
25+
- **预置测试账户**:10个带10000 ETH的账户
26+
- **即时交易确认**:0秒出块时间加速开发测试
27+
28+
### 核心使用场景
29+
1. 合约部署前测试
30+
2. 交易逻辑模拟
31+
3. 前后端集成调试
32+
4. Gas消耗分析
33+
34+
## 关键组件实践
35+
36+
### RPC 接口操作
37+
1. **端点访问**
38+
- HTTP:默认端口8545
39+
- WebSocket:8546端口实时监听
40+
2. **工具交互**
41+
- MetaMask 网络配置:`http://localhost:8545`
42+
- 前端应用:直接连接本地节点
43+
3. **链ID设置**
44+
- 默认31337
45+
- 支持自定义避免冲突
46+
47+
### 预言机集成方案
48+
1. **本地模拟策略**
49+
- 创建Mock预言机合约
50+
- 手动更新数据源
51+
2. **Chainlink集成**
52+
- 设置本地节点为Chainlink RPC
53+
- 使用Anvil分叉主网状态
54+
3. **数据控制**
55+
- 直接修改特定存储槽
56+
- 模拟价格波动场景
57+
58+
### 日志分析实践
59+
1. **交易追踪**
60+
- 实时监听`newBlock`事件
61+
- 过滤特定合约事件
62+
2. **调试工具**
63+
- 区块浏览器风格日志输出
64+
- 交易输入/输出解码
65+
3. **错误诊断**
66+
- 回退原因分析
67+
- Gas消耗分解
68+
- 调用栈追踪
69+
70+
## 核心工作流
71+
### 启动与配置
72+
- **内存链保留**`--no-mining` 暂停出块
73+
- **分叉主网**`--fork-url` 复制主网状态
74+
- **账户锁定**`--silent` 禁用预解锁
75+
76+
### 开发调试流程
77+
1. 启动Anvil本地节点
78+
2. 配置钱包连接网络
79+
3. 部署测试合约
80+
4. 执行交易测试
81+
5. 分析日志输出
82+
6. 修正迭代
83+
84+
### 状态管理技巧
85+
1. **快照创建**
86+
- 关键状态保存点
87+
- 随时回滚测试
88+
2. **时间操控**
89+
- 模拟时间跳跃
90+
- 测试时间锁合约
91+
3. **账户模拟**
92+
- 特定权限测试
93+
- 多签场景构建
94+
95+
## 生产级调试方案
96+
### 高级模拟场景
97+
1. 闪电贷攻击测试
98+
2. 跨合约交互追踪
99+
3. 高Gas消耗优化
100+
4. 大额交易压力测试
101+
102+
### 监控指标
103+
- **区块间隔**:模拟主网延迟
104+
- **交易池监控**:待处理交易队列
105+
- **资源消耗**:CPU/内存占用分析
106+
107+
### 工具链集成
108+
1. **测试框架**:结合Forge标准测试
109+
2. **CI/CD流程**:自动化测试节点
110+
3. **安全扫描**:状态快照对比检查
111+
18112
# 2025-08-19
19113

20114
# React + Wagmi + Foundry DApp 开发实战

0 commit comments

Comments
 (0)