前言

我持有 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 部署上链。

核心运作流程:

  1. 发行方部署合约,铸造隐私代币存入金库
  2. 管理员将代币分发给用户
  3. 用户之间直接转账,金额在链上不可见
  4. 用户可以将隐私代币换成公开包装代币,或反向兑换
  5. 管理员可以拉黑用户、冻结资产、强制召回代币(合规机制,类似 USDC)

谁在做这个项目

开发者提交次数
Stan Bondi(sdbondi)53 次
mrnaveira8 次

基本上就是 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 做权限凭证,而不是硬编码管理员地址,这是成熟的智能合约设计模式。


当前完成度

以下完成度均为估算值。

维度状态完成度
核心合约逻辑主要功能完整,有已知 bug80%
测试覆盖主路径已覆盖,边界条件不足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