Skip to content

Commit 0b7575f

Browse files
committed
Add study notes for 2025-08-14
1 parent 75343af commit 0b7575f

1 file changed

Lines changed: 61 additions & 0 deletions

File tree

ZK5uuu.md

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,67 @@ kafka 福州,在准备we3项目和技术栈,刚参加完chainlink黑客松
1515
## Notes
1616

1717
<!-- Content_START -->
18+
# 2025-08-14
19+
20+
0814
21+
DApp开发、Gas优化 & 审计技巧学习
22+
●学习重点:
23+
○ DApp开发流程:明确智能合约(业务逻辑)与前端交互(用户界面)的开发环节,涵盖需求分析、合约编写、前端适配及测试部署,需兼顾区块链特性与用户体验。
24+
○ Gas优化原理:理解Gas与代码复杂度、存储读写等的关联,掌握简化逻辑、存储优化、批量操作等优化策略,降低用户使用成本与提升合约性能。
25+
○ 合约审计要点:熟悉重入攻击、权限漏洞、数值溢出等安全风险类型,掌握人工review + 工具扫描 + 测试用例覆盖的审计流程。
26+
27+
●实践要点:
28+
○ DApp开发:从简单场景(投票、存证类)入手,用Remix、Hardhat/Truffle等工具编写调试合约,结合Web3.js/Ethers.js与React构建交互界面,部署测试网验证。
29+
○ Gas优化实践:运用简化逻辑、存储优化等策略改写合约,通过Hardhat测试对比优化前后gasUsed数据,沉淀适配方案。
30+
○ 审计模拟:选开源合约,用MythX、Slither等工具+人工分析找漏洞,输出修复建议(如加ReentrancyGuard防重入),强化安全意识。
31+
32+
OpenZeppelin合约及工具应用
33+
●核心模块及作用:
34+
○ 安全:ReentrancyGuard(防重入)、Ownable(权限管理 )等可用于DApp合约安全加固。
35+
○ 代币:ERC20、ERC721等适配DApp代币相关功能开发。
36+
○ 工具:SafeMath等辅助数值安全校验,Address、Strings助力合约开发。
37+
●引入方式:
38+
○ 安装依赖:npm install @openzeppelin/contracts
39+
○ 代码引用:
40+
solidity
41+
import "@openzeppelin/contracts/access/Ownable.sol";
42+
import "@openzeppelin/contracts/security/ReentrancyGuard.sol";
43+
●实际落地:
44+
在DApp合约开发中,继承Ownable + ReentrancyGuard,对敏感操作(如资产转移、参数修改)加onlyOwner修饰,借助SafeMath校验数值,降低安全风险与Gas消耗。
45+
46+
测试用例编写(DApp & 优化审计场景)
47+
●覆盖目标:
48+
○ DApp功能:合约存款、提款流程正常,交互界面与钱包适配功能验证。
49+
○ Gas优化验证:优化后Gas消耗降低,功能不受影响。
50+
○ 安全审计:漏洞场景(重入、溢出等)下交易回退,权限控制生效。
51+
●示例代码(Hardhat + Chai,以DApp提款流程及Gas测试为例 ):
52+
javascript
53+
// DApp提款流程测试
54+
it("should allow DApp withdraw", async function () {
55+
// 部署合约、模拟用户交互等操作
56+
const tx = await dappContract.withdraw(amount);
57+
await tx.wait();
58+
// 断言提款后状态正确
59+
});
60+
// Gas优化对比测试
61+
it("should reduce gas after optimization", async function () {
62+
const optimizedTx = await optimizedContract.someFunction();
63+
const gasUsed = (await optimizedTx.wait()).gasUsed;
64+
// 与未优化前对比断言Gas降低
65+
});
66+
// 审计漏洞测试(重入场景)
67+
it("should block reentrancy attack", async function () {
68+
// 模拟恶意重入调用
69+
await expect(attackerContract.attack()).to.be.reverted;
70+
});
71+
72+
Gas优化与对比(深化)
73+
●优化策略:
74+
○ 代码层面:简化逻辑、用calldata传参、减少storage写入、复用成熟库(如OpenZeppelin )。
75+
○ 部署交互:批量操作合并交易、依据场景选合适公链(以太坊Layer 2等 )。
76+
●测试方法:
77+
在Hardhat测试中,对优化前后合约调用关键函数,通过tx.wait().gasUsed记录并对比Gas消耗,分析策略有效性。
78+
1879
# 2025-08-13
1980

2081
智能合约安全基础学习

0 commit comments

Comments
 (0)