多数链的隐私是加在某一枚原生币上的:Zcash 藏的是 ZEC,门罗币藏的是 XMR。一旦你想让桥来的、别人发的各种代币也一起藏进同一个池子,Sapling 那套每枚资产各占一个屏蔽池的老办法就不够用了。Namada 的 MASP 想解决的正是在一条链上给多种资产共用一个隐私集合。它不是凭空造轮子,而是在 Zcash Sapling 电路上做多资产扩展,再配一个叫 Convert Circuit 的转换电路。这篇顺着官方规范和仓库说明,讲清楚入池、池内转账、转换、出池四步各发生什么,以及它和 nullifier 如何防双花 的关系。
一个池子,多种资产
屏蔽池的核心是票据(note)加 nullifier 那一套:钱被拆成一张张票据藏进池子,花掉时释放一个 nullifier,观察方只能看到票据承诺和空指针被公开,却没法把某个 nullifier 对应回某张票据、也没法把某个地址对应回某张票据。对观察者来说,谁付、谁收、用什么资产付、付了多少,全被藏在承诺后面。当所有资产挤进同一个池子,这些不可区分性就有了乘数效应——不同代币的交易混在一起,更难被按币种聚类,这正是默克尔树怎么证明交易在链上那类包含证明帮不上、要靠承诺隐藏的地方。
从 Sapling 到多资产:一个关键改动

Sapling 电路本身假定单一资产,金额承诺绑在一个固定的曲线基点上。MASP 让每种资产用一个由资产标识推导出来的动态生成元(价值基点),并额外假设不同资产的基点之间不存在已知的离散对数关系,从而在一笔交易里混合多种资产而不串味。官方文档的口径是:MASP 保留了 Sapling 大部分安全与性能性质,改动集中在用三十多字节的资产标识去区分资产类型。
入池与出池:屏蔽账户其实是透明的
有个反直觉的点:从透明账本的视角看,屏蔽池本身只是一个持有资产的账户,它的资产余额是公开的。入池(shielding)时,底层资产被锁进托管,客户端生成一份零知识证明说明资产种类、金额和归属票据,账本据此把资产铸进屏蔽集;出池(unshielding)时,用户公开当初入池用的信息和对应 nullifier,验证通过后由一个本地有效性谓词从托管释放等额资产,并要求把资产换算到最新纪元。对用户来说,屏蔽不是把钱变没,而是把可见的一栏资产,换成池子里一张别人看不懂的票据。Namada 还支持经 IBC 直接从别的链屏蔽进来,也就是不先落到 Namada 的透明地址、再一步入池,这在官方钱包 Namadillo 里分成 IBC Shield 与 Internal Shield 两种入口。具体哪些资产支持、走什么路由以官方文档为准。
Convert Circuit:不换对手方也能换币
MASP 电路管票据的铸与烧,Convert Circuit 则管屏蔽资产之间按一张公开转换表的换算。许可的转换被组织成一棵默克尔树(AllowedConversion Tree)存在账本里,证明只保证用了表里允许的转换。关键在于它是铸造加销毁意义上的转换,不需要流动性池、不需要对手方、也不叫撮合:比如一个资产随纪元产生的补贴,可以通过转换表按 1 换 1 加一点 NAM 的方式发放,用户拿旧纪元的票据,换成带补贴的新纪元票据,全程不出池、不泄露。这也是 Namada 给隐私这个公共品做补贴的技术底座——官方把它描述为对正外部性的补偿,用奖励鼓励大家把资产留在池子里,池内资产越少、补贴率越高、越接近饱和越低。
边界
第一,屏蔽池的余额对透明世界是账户级的公开,池内才是不透明的;第二,你要花自己的票据,得先扫描整池并尝试解密,这是隐私的代价,本地算力与同步都要多干活;第三,转换表由治理决定、会随纪元变化,能不能在两个具体资产间转换要看当前表;第四,能看见不等于能支配,把查看密钥分享出去,只是暴露自己的账、动不了钱。涉及金额、资产支持与补贴率请以官方文档与链上数据核验,本文只讲机制,不构成投资建议。
发表评论
还没有评论,来说两句吧。
评论区为展示样式,提交不会被处理。