# 链上ETF研发日志 #4：合约部署完成

By [Keegan小钢](https://paragraph.com/@keeganlee) · 2025-08-01

---

这是我正在开发的链上 ETF 项目「**BlockETF**」的第四篇研发日志。

前三篇分别是：

1.  [链上ETF重启Day 1：重新出发，我终于开始写代码了](https://mp.weixin.qq.com/s/OcqvUuRzxAzCg-YmSeTlhA)
    
2.  [链上ETF研发日志 #2：智能合约开发完毕，测试准备中](https://mp.weixin.qq.com/s/jCmV_RIfB7dDZFg7e095mg)
    
3.  [链上ETF研发日志 #3：合约测试完成](https://mp.weixin.qq.com/s/CO2957DHicj12yKv-MRY7Q)
    

我是从 7 月 27 日开始启动这个项目的，今天是第六天。截止撰文之时，**合约已经部署到了测试网**，意味着整个 DApp 项目的合约部分可以先告一段落了。

部署系统：AI 帮我打下了底层
---------------

这次的部署脚本、配置系统，基本是我把需求扔给了 Claude Code，由它生成一整套脚本，我再按需修改了几处。

现在这套部署系统包括了：

*   一键部署脚本（`./scripts/deploy.sh`）
    
*   自动地址管理（JSON + `.env`）
    
*   合约验证脚本（`Verify.s.sol`）
    
*   网络配置统一管理（`NetworkConfig.s.sol`）
    
*   补了一份部署说明文档，主要写给未来的自己看
    

这部分没太花时间，Claude 给出的结构已经很接近我之前习惯的方式了。

合约模块小结
------

目前整个 BlockETF 合约系统一共拆成了 6 个模块，各自职责分明。

1.  **BlockETFCore** 主要负责 ETF 的铸造、赎回、总资产估值等核心逻辑。
    
2.  **BlockETFRouter** 提供给用户操作的入口，封装了使用单一代币投资赎回接口，使用更方便。
    
3.  **RebalanceManager** 实现了资产再平衡逻辑，支持触发时动态计算目标权重。
    
4.  **DEXIntegrator** 集成了 PancakeSwap V3，用于资产兑换。
    
5.  **PriceOracle** 基于 Chainlink PriceFeed 做价格计算，保证估值合理。
    
6.  **FeeManager** 统一管理赎回费和管理费，可配置上限，防止误设或恶意提取。
    

整体上，我希望每个模块都能独立工作、独立测试，不耦合太多。

测试覆盖情况
------

这次测试部分完成得出奇地快，所有测试代码全是 Claude Code 写的，写了 220 多个测试用例，而且覆盖率非常高，包括：

*   核心逻辑流程验证
    
*   各种边界输入和异常路径
    
*   跨模块调用的状态一致性检查
    
*   模拟用户视角的端到端操作流程
    

包括了单测、集成测试和 e2e 模拟用户操作流程，算是把合约部分该测的都测了。

安全性方面做的事
--------

虽然并没有引入专业审计，但我在开发阶段就加了一些基础安全措施：

*   使用 `nonReentrant` 防止重入攻击
    
*   所有敏感操作都加了权限控制
    
*   铸造/赎回都带滑点限制，防止交易价格被操控
    
*   所有 fee 参数都设置了 max cap，防止超额提取
    

下一步计划
-----

合约部分已经完成，并部署在测试网上。接下来我会开始搭前端，把用户交互的那一部分补上。

不知道 Claude Code 对前端这块能帮我提效多少呢，拭目以待吧。

---

*Originally published on [Keegan小钢](https://paragraph.com/@keeganlee/etf-4)*
