我用 AI 逐行读取了 Tari 隐私稳定币的代码
前言
我持有 XTM。Tari 项目方多次提到过未来会有人在 Tari 网络上做隐私稳定币。这个说法听起来很有吸引力,一个像 USDT 一样可以用、但别人看不到你余额和转账金额的稳定币。
但说归说,代码到底写了没有?写到什么程度了?是真在做,还是只是画了个饼?
最近社区成员在群里发了一个 GitHub 链接,让我注意到了这个仓库:
https://github.com/tari-project/stable-coin
我决定认真查一查。
找到仓库
这个仓库藏在 tari-project 组织下的 132 个仓库里,没有出现在常规展示列表,0 个 star,4 个 fork,几乎没有人关注。
基本情况:
- 创建时间:2023 年 11 月 13 日,从第一天就是公开的
- 最近更新:2026 年 4 月 7 日,查看当天数小时前还有代码提交
- 开发时长:两年半,总共 63 个 commit
- 主要开发者:Stan Bondi(sdbondi)——同时也是 tari-ootle(Tari L2)的核心开发者
用 Claude Code 查代码
我不是专业程序员,看不懂 Rust 代码。所以我用了 Claude Code,让它拉取仓库的每一个文件,逐行阅读分析。整个过程大约花了一分半钟。
仓库结构如下:
stable-coin/
├── applications/
│ ├── cli/ → 命令行管理工具
│ └── web/ → 网页管理界面
└── templates/
├── stable-coin/ → 第一版:基础公开版(已废弃)
├── private_stable_coin/issuer/ → 第二版:带用户徽章的隐私版
├── private_stable_coin/issuer-no-user-badge/ → 第三版:当前主力版本
└── private_stable_coin_custom_account/ → 第四版:最复杂的自定义账户版四个版本从简单到复杂,能看出来是一步步演进的,不是东拼西凑。
稳定币是怎么实现的
说白了就是三样东西:
1. 隐私代币(stealth token)
这是稳定币本体。和普通代币不同,别人看不到你有多少、转了多少。底层用的是一种叫"Pedersen 承诺"的密码学技术——你可以理解为,金额被锁进一个密码箱里,只有持有钥匙(view key)的人才能看到。这层隐私由 Tari L2 底层提供,合约本身只调用接口。
2. 包装代币(wrapped token)
有时候你需要在公开场合使用这个稳定币,可以把隐私代币换成公开版本,1:1 兑换,收 1% 手续费。反向兑换免费。
3. 管理员徽章(admin badge)
管理员拿的是一个 NFT 形式的"通行证"。只有拿着这个通行证,才能铸造新代币、冻结资产、拉黑用户。没有通行证的人调用这些功能会被直接拒绝。
整个合约跑在 Tari 的 L2 网络(Ootle)上,代码编译成 WebAssembly 部署上链。
核心运作流程:
- 发行方部署合约,铸造隐私代币存入金库
- 管理员将代币分发给用户
- 用户之间直接转账,金额在链上不可见
- 用户可以将隐私代币换成公开包装代币,或反向兑换
- 管理员可以拉黑用户、冻结资产、强制召回代币(合规机制,类似 USDC)
谁在做这个项目
| 开发者 | 提交次数 |
|---|---|
| Stan Bondi(sdbondi) | 53 次 |
| mrnaveira | 8 次 |
基本上就是 Stan Bondi 一个人在做。两年半,63 个 commit,平均每月不到 3 个。他同时在负责 tari-ootle 的核心开发,稳定币更像是主线工作之余顺带维护的项目。
Claude Code 发现的真实问题
问题一(中等严重):暂停功能是摆设
合约有一个"暂停"按钮,管理员可以调用 pause() 来紧急停止所有操作。听起来是重要的安全功能。
但实际上,pause() 只是把一个标志位设成了 true,合约的所有其他功能根本不检查这个标志位。也就是说,你按了紧急停止,但机器根本不理你,照样运行。
问题二(较严重):高级版本核心合规功能不工作
最复杂的第四版里,跨合约冻结用户账户的功能,代码注释里开发者自己承认:
"authorization doesnt carry though to the cross-component call, so this doesnt actually do anything"
翻译过来:由于授权无法传递,这个冻结调用实际上什么都没做。标记为 TODO 待评估。
问题三:基础版无法编译
V1 版本引用了一个不存在的字段,直接无法编译。该版本已废弃但未清理,不影响当前主力版本(V3)的正常运行。
问题四:手续费计算有溢出风险
手续费计算中,中间步骤会把金额先乘以 1000,在极大金额下可能超出数值上限并静默截断,导致计算结果错误。
问题五:反向兑换可能影响总供应量
用包装代币换回隐私代币时,合约直接铸造新代币,而非从金库取出。如果正向销毁和反向铸造没有精确对应,可能导致总供应量出现偏差。
做得好的地方
测试写得认真。 测试文件接近 1000 行,覆盖了增发销毁、用户转账、黑名单管理、包装代币兑换、兑换额度限制、权限拒绝验证等 10 个主要场景,每个测试结构清晰。
代码规范严格。 启用了大量代码检查规则,禁止未使用变量、死代码、数组越界等常见错误。
每个操作都有链上日志。 增发、销毁、转账、拉黑,每个操作都会在链上记录事件,方便事后审计。
权限模型设计合理。 用 NFT 做权限凭证,而不是硬编码管理员地址,这是成熟的智能合约设计模式。
当前完成度
以下完成度均为估算值。
| 维度 | 状态 | 完成度 |
|---|---|---|
| 核心合约逻辑 | 主要功能完整,有已知 bug | 80% |
| 测试覆盖 | 主路径已覆盖,边界条件不足 | 65% |
| Web 管理前端 | 已打包,可运行 | 70% |
| CLI 工具 | 功能存在,文档极少 | 65% |
| 安全审计 | 无任何第三方审计记录 | 0% |
| 文档 | 几乎没有 | 10% |
| 多签管理员机制 | 当前单管理员无上限 | 0% |
离生产部署还需要:
修复已知 bug、补充边界条件测试、第三方安全审计(正规发行方的硬门槛)、引入多签机制、将依赖从开发分支切换到稳定版本、完善文档。
按当前人手和节奏,保守估计距可部署状态还需要 12 至 18 个月。如果团队扩充人手,有可能缩短至 6 至 9 个月。
补充说明
关于中心化程度
管理员权力较大,可以无限创建新管理员、强制召回任何用户代币、冻结任意资产。这是法币抵押型合规稳定币的标准设计(USDC 也有类似机制),不是技术缺陷,但用户需要了解。
关于发行方
Hack VC 投资论文确认已有发行方签约,等待 Ootle 主网就绪后进场。发行方进场的前提条件是:合约经过安全审计、核心功能无已知缺陷、依赖版本稳定。这些条件目前尚未全部满足。
总结
稳定币在不在做? 在做,代码是真的,架构是对的,从 V1 到 V3 有清晰的设计演进。
做到什么程度了? 基本功能框架搭好了,核心流程可以跑通,但有未修复的 bug,没有安全审计,没有文档,离能上线的产品还有明显距离。
代码质量怎么样? 中上水平。写代码的人懂密码学也懂智能合约设计,测试覆盖比大多数 Web3 项目认真。但团队太小,进度慢,关键安全功能有缺陷。
隐私稳定币这件事能不能做成? 技术上完全可行,Tari L2 的隐私原语已经提供了底层支持。但从代码到产品,中间还有安全审计、多签机制、法币储备对接、监管合规等很长的路要走。
以上是代码层面看到的事实,不做任何投资建议。仓库是公开的,任何人都可以自己去验证。
查看时间:2026 年 4 月 8 日
仓库地址:https://github.com/tari-project/stable-coin
分析工具:Claude Code Opus 4.6