@@ -15,6 +15,178 @@ timezone: UTC+8
1515## Notes
1616
1717<!-- Content_START -->
18+ # 2025-08-17
19+
20+ # 一、Hardhat和Foundry
21+
22+ - ** Hardhat** :以 Node.js 生态为核心的“脚手架 + 本地区块链 + 海量插件”平台,最强在** 插件生态、部署编排、与前端/TS 工程体系的整合** 。
23+
24+ - ** Foundry** :Rust 实现的** 高性能 Solidity 原生开发套件** (forge/cast/anvil)。最强在** 编译/测试速度、内置模糊/不变式测试、低摩擦链上脚本化** 。
25+
26+
27+ # 二、特性对比(工程视角)
28+
29+ | 维度| Hardhat| Foundry|
30+ | ---| ---| ---|
31+ | 主要语言/脚本| TypeScript/JavaScript(测试、任务、部署脚本)| Solidity(测试、脚本)+ ` cast ` CLI|
32+ | 本地链| Hardhat Network(主网分叉稳定、插件多)| Anvil(启动快、资源占用低、分叉快)|
33+ | 编译与速度| 基于 ` solc ` ,速度中等,依赖 Node 生态| 并行编译,普遍更快;缓存机制优秀|
34+ | 测试形态| Mocha/Chai + ethers.js/viem(从“用户视角”写测试)| Solidity 原生单测,Cheatcodes 丰富,天然“合约内视角”|
35+ | Fuzz/Invariant| 依赖外部工具(Echidna 等)或插件集成| ** 内置** fuzz/invariant 与 shrink,易上手|
36+ | Gas 工具| ` hardhat-gas-reporter ` 等插件| ` forge test --gas-report ` 、` forge snapshot ` |
37+ | 覆盖率| ` solidity-coverage ` 插件成熟| ` forge coverage ` (现已可用,集成度高)|
38+ | 调试体验| ` hardhat/console.sol ` 、详细 error 堆栈、任务系统| ` -vvvv ` 级别调用追踪、` console2 ` 、Cheatcodes(` prank/deal/warp ` 等)|
39+ | 依赖管理| npm/pnpm/yarn| ` forge install ` (git 源)+ remappings|
40+ | 插件生态| ** 极其丰富** (部署、验证、升级、Defender…)| 相对轻;更多“内建”而非“插件化”|
41+ | 与前端集成| ** 一流** (TS 类型提示、viem/wagmi、任务式部署产物)| 可行但更“工具箱化”,常与 Hardhat/前端仓分离|
42+ | CI/DevOps| 基于 Node 工具链,模板众多| 二进制工具,CI 速度快、镜像小|
43+
44+ > 选择:
45+ >
46+ > - ** 以 DApp/前端驱动、依赖插件和部署编排** → 选 ** Hardhat** 或 ** Hardhat+Foundry** 混合。
47+ >
48+ > - ** 以研究/安全/性能与测试为中心** → 选 ** Foundry** 主导。
49+ >
50+
51+ # 三、选择
52+
53+ 常见高效组合:
54+
55+ - ** Foundry 负责:** 编译、单测、fuzz、不变式、gas 回归;
56+
57+ - ** Hardhat 负责:** 多网络部署、Etherscan/区块浏览器验证、与前端/脚本任务编排、OpenZeppelin Upgrades 等插件链路。
58+ 做法:同一仓或 mono-repo 中,保留 ` foundry.toml ` 与 ` hardhat.config.ts ` ,合约源码共享,CI 中分别跑 ` forge test ` 与 ` hardhat deploy/verify ` 。
59+
60+
61+ # 四、安全技术栈
62+
63+ ## 1) Hardhat 安全栈
64+
65+ ** 内核理念:** “插件驱动 + 外部安全工具的无缝集成 + 主网分叉回归”。
66+
67+ - ** 基线库**
68+
69+ - ** OpenZeppelin Contracts** (安全基元、权限/代币/代理模式)
70+
71+ - OpenZeppelin ** Upgrades** 插件(Transparent/UUPS 代理、** 存储布局检查** )
72+
73+ - ** 静态分析**
74+
75+ - ** Slither** (Python,静态分析、漏洞检测、结构报告、脚本化审计)
76+
77+ - Solhint(风格/易错点 Lint)
78+
79+ - ** 属性/规约与形式化**
80+
81+ - ** Scribble** (规范注释 → 仪表化断言,可与 Hardhat 流程集成)
82+
83+ - ** Certora Prover** (规则级形式化验证;对关键合约很有价值)
84+
85+ - ** 模糊/符号执行**
86+
87+ - ** Echidna** (基于性质的模糊测试)
88+
89+ - Mythril / Manticore(符号执行;更偏“审计/研究”)
90+
91+ - ** 覆盖率与 gas**
92+
93+ - ` solidity-coverage ` 、` hardhat-gas-reporter `
94+
95+ - ** 运行时与回归**
96+
97+ - Hardhat Network ** 主网分叉** (对 DeFi/跨协议交互尤为重要)
98+
99+ - Defender(Sentinel/AutoTasks/Timelock/多签工作流)
100+
101+ - ** 最佳实践**
102+
103+ - 升级合约:强制存储布局 Diff、冻结不可变变量、独立 ` initialize ` 访问控制
104+
105+ - 多签、延时(Timelock)与角色最小化;事件审计与** 变更公告** 流程
106+
107+
108+ ## 2) Foundry 安全栈
109+
110+ ** 内核理念:** “把安全测试做成默认路径:快、原生、可编排”。
111+
112+ - ** 内置能力(无需额外工具即上强度)**
113+
114+ - ** Fuzz/Invariant** :` forge test ` 直接开启;` targetSelectors ` /` targetContracts ` 配置;Shrinking 默认支持
115+
116+ - ** Cheatcodes** :` prank/warp/roll/deal/record/revertTo ` 等模拟权限、时间、随机性与链上状态
117+
118+ - ** Gas/Trace** :` --gas-report ` 、` -vvvv ` 深度调用轨迹
119+
120+ - ** Coverage** :` forge coverage `
121+
122+ - ** Scripts** :` forge script --broadcast ` 安全复现部署步骤、支持 Dry-run 与模拟
123+
124+ - ** 可叠加的外部工具**
125+
126+ - 同样可无缝接入 ** Slither、Echidna、Scribble、Certora** (很多审计团队就是 Foundry+Slither/Echidna 的组合)
127+
128+ - ** 测试范式**
129+
130+ - ** 不变式测试** (Invariants)→ 对 DeFi 等状态机强约束非常有效(如“系统总余额守恒”、“永不出现负债爆表”)
131+
132+ - ** 差分测试** (与参考实现或旧版本对比)
133+
134+ - ** 主网分叉** :` anvil --fork-url ` + ` forge test ` 在真实协议上下文中 fuzz
135+
136+ - ** 最佳实践**
137+
138+ - 为关键不变量写“** 最小可复现攻击面** ”测试(单次交易 + 多 tx 序列)
139+
140+ - 为权限逻辑写“反向”用例(恶意调用者、错误角色、EOA/合约混合)
141+
142+
143+ # 五、端到端的安全流程
144+
145+ 1 . ** 编码前** :选用 ** OZ Contracts** 基元;定稿** 信任模型** 与** 升级策略** (是否可升级?由谁升级?是否 Timelock/多签?)。
146+
147+ 2 . ** 静态检查** :Solhint + ** Slither** 基线扫描;定制 Slither 脚本做结构性检查(如授权点、外部可重入点)。
148+
149+ 3 . ** 单元/集成测试** :
150+
151+ - Hardhat:Mocha/Chai + viem/ethers 写“用户视角”流程;
152+
153+ - Foundry:Solidity 单测覆盖“合约内细节与边界”。
154+
155+ 4 . ** Fuzz / Invariant** :
156+
157+ - Hardhat:引入 ** Echidna** 或把合约仪表化(Scribble)后跑;
158+
159+ - Foundry:直接用内置 fuzz/invariant(推荐,把性质写清楚)。
160+
161+ 5 . ** 主网分叉回归** :模拟真实协议外部交互(预言机、Dex、借贷),验证经济安全与沙盒参数。
162+
163+ 6 . ** 形式化关键路径** :对资金关键模块用 ** Scribble** 断言或 ** Certora** 规则做“证明级”保障。
164+
165+ 7 . ** 覆盖率 & Gas 回归** :将覆盖率和 gas 预算纳入 CI 阈值(PR 降级即阻断)。
166+
167+ 8 . ** 部署/运维安全** :
168+
169+ - 可升级合约强制存储布局对比;
170+
171+ - 多签/Timelock;
172+
173+ - ** Etherscan/Blockscout 验证** + 生成 SBOM(依赖清单);
174+
175+ - 线上 ** 监控与告警** (Defender Sentinel、事件订阅)。
176+
177+ 9 . ** 应急预案** :暂停开关(可控可见)、速撤流动性/参数限制脚本、公告模板与回滚计划。
178+
179+
180+ # 六、如何选择(网上建议)
181+
182+ - ** 偏应用/前端协作/插件链路** 重:** Hardhat** (或 Hardhat 做部署,Foundry 做测试)。
183+
184+ - ** 偏安全/研究/高覆盖测试** 重:** Foundry** 主导,必要时加上 Hardhat 的部署插件链路。
185+
186+ - ** 团队 TS 很强** 、与前端复用类型/工具:** Hardhat**
187+
188+ - ** 团队以审计/协议为中心** 、强调 fuzz/invariant 与高频回归:** Foundry**
189+
18190# 2025-08-15
19191
20192# Uniswap
0 commit comments