这是我的 AI + Web3 实战营 的第 10 篇研发日志,前 9 篇如下:
AI+Web3实战营日志 #4 | Rebalancer合约
AI+Web3实战营日志 #8 | 重构ETFRouterV1
另外,关于 AI + Web3 实战营的相关介绍则有如下几篇文章:
我们的链上 ETF 产品「BlockETF」,终于迎来了第三个里程碑——测试网正式发布!
大家现在可以直接通过以下地址在测试网上体验申购与赎回流程:
🔗 https://blocketf.vercel.app/
页面如下图所示(UI 仍在持续优化中 👇):

当前支持的网络为 BSC Testnet,后续主网上线将切换至 BSC Mainnet。
目前测试网上仅部署了一个 ETF 产品——Top 5 Crypto。原计划的资产组合为 BTC、ETH、XRP、SOL、BNB 五个,但由于测试网预言机暂不支持 XRP 与 SOL,最终替换为 ADA 与 BCH。
页面展示的信息包括:
在资产列表上方,可以看到两项费率设置:
上方则展示当前 ETF 的份额价格与 TVL(总锁仓量)。
右侧为两个功能面板:
目前仅支持使用 USDT 进行申购。测试网中的 USDT 为我们自发行的 Mock 代币,因此还提供了 Faucet 页面,方便用户领取测试用 USDT。
整体界面简单直观,但背后其实隐藏着相当复杂的逻辑与工程工作。
回顾这一路:
累计投入 68 小时开发时间,录制了 42 段视频,完整记录了一个链上金融产品从 0 到 1 的全过程。
为了让测试网版本尽可能贴近主网环境,我们在过程中做了大量底层工作。
主网首个 ETF 的目标是追踪市值前五的加密资产(不含稳定币):BTC、ETH、BNB、XRP、SOL。它们合计占据加密市场 70% 以上的市值,也可以看作是整个行业的“蓝筹指数”。
用户在申购 ETF 时,理论上需投入这五种资产。但从用户体验角度,我们希望只需一键投入 USDT 即可完成申购。因此,系统必须支持 USDT 单资产申购与赎回。
在 BSC Testnet 上,我们首先部署了对应的 ERC20 Mock 资产:USDT、BTCB、ETH、WBNB、XRP、SOL。
接着,需要为这些资产获取可靠的 USD 价格。最初使用 Chainlink Oracle,但其在测试网上仅支持 BTC 与 BNB。我又转向 Binance Oracle,发现资产覆盖齐全,但其数据访问需要权限白名单。最终只保留了可访问的 ETH/USD,对 USDT 使用 BUSD/USD 替代,XRP 与 SOL 则替换为 ADA 与 BCH。因此测试网最终资产为:WBNB、BTCB、ETH、ADA、BCH,以 USDT 作为申购赎回资产。
接下来是流动性问题。为了实现 USDT 自动兑换底层资产,我们集成了 PancakeSwap V3。这些资产的主要流动性池都在 V3 上,因此我们在测试网手动创建并添加了对应池子。
最棘手的部分是:如何让池子价格与预言机价格保持同步。 由于 V3 价格计算较复杂,我让 AI 多次生成算法仍出错,最终选择在 PancakeSwap 官网手动校准流动性价格。价格同步算法也经历了多轮迭代与调试,最终实现了可稳定运行的方案。
此外,我们还 fork 了 Uniswap/view-quoter-v3,自建一套支持 view 的查询合约,因为 PancakeSwap 自带的 QuoterV2 不支持纯查询调用,使用不便。
前端部分几乎完全交由 Claude Code 负责,我仅负责反馈交互逻辑的问题。虽然界面目前仍较简陋,但核心交互已经完全可用。
最后,将前端部署至 Vercel,即现在你可以访问的: 🔗 https://blocketf.vercel.app/
测试网发布标志着核心架构已经跑通,下一步就是——部署并上线主网版本!
主网首个 ETF 的基本信息如下:
项目 | 内容 |
|---|---|
Name(名称) | Crypto Top5 Index |
Symbol(符号) | CT5 |
Type(类型) | On-chain Multi-Asset ETF |
Network(网络) | BSC(Binance Smart Chain) |
Underlying Assets | BTC、ETH、BNB、SOL、XRP |
Base Currency | USDT |
Mint / Redeem Mechanism | Single-asset entry & exit (USDT) |
Rebalancing | Automated weight adjustment via on-chain Rebalancer |