门罗币的转账在区块链浏览器里看不到金额,这不是“数据没索引”,而是链上根本没有以明文写出金额。承担这件事的核心机制叫 RingCT(Ring Confidential Transactions,环机密交易):让每个节点不需要看到数字,也能验证书目平衡、无人凭空造币。理解它,是理解“隐私币到底隐藏了什么、没隐藏什么”的一把钥匙。
金额可见本身就是一种泄露
在比特币上,转账金额全网公开。攻击者不需要破解任何密码,只靠金额匹配就能把一笔交易的输入和输出对上号,再把碎片拼成资金流向图。门罗币早期已经用环签名隐藏“钱从哪个输出花出”、用隐形地址避免收款地址复用,但只要金额还是明文,这条分析链就有一环是亮的:输入总和等于输出总和的等式本身就是指纹。RingCT 要补的正是这一环——把金额也加密,同时保证等式依然可验证。
三个部件怎么配合
RingCT 是一组密码学部件的组合拳。第一层是 Pedersen 承诺:把金额乘上一个曲线基点、再加上一个随机掩码对应的曲线点,合成一个 commitments 值——别人从这个点反推不出金额,但承诺满足同态加法:把一堆承诺相加,等于把金额相加后再做承诺。这就允许节点检查“输入承诺之和等于输出承诺之和加手续费”而不拆开任何一个数字。第二层是范围证明:同态加法有个洞,负数也能配平,所以每个输出还必须证明承诺里的数落在 0 到 2 的 64 次方减 1 之间而不泄露具体值;从早期的逐位 Borromean 签名,到 2018 年 10 月部署的 Bulletproofs,再到 2022 年升级的 Bulletproofs+,这笔证明从十几 KB 一路压到约 2 KB 量级。第三层是链接环签名:证明“这些候选输出里有一个是我的、我有权花”,同时通过公开的 key image(由真实输出的私钥派生的确定性哈希)保证同一笔钱花第二次会立刻被全网拒掉。
上线时间与强制姿态
RingCT 在 2017 年 1 月的区块 1220516 附近实现,2017 年 9 月的硬分叉之后成为所有交易的强制选项。这里的“强制”是设计重点:不存在明文的兼容通道,每笔交易结构完全一致,任何人无法通过“选没选隐私功能”被区分出来。环的大小也刻意统一(近年来固定为 16:15 个陪衬加 1 个真实输出),目的就是消除“自定义参数的人格外显眼”的指纹效应。这类默认值一致性和密码学本身同等重要。
它隐藏了什么、没隐藏什么
隐藏的是:金额、真实输入来源(被环内陪衬混淆)、收款地址(隐形地址)。没有隐藏的是:交易时刻、手续费、节点 IP 层面的网络元数据(这部分靠 Dandelion++ 等传播层缓解),以及交易所这类服务端的 KYC 记录。所以隐私保障的正确表述是“链上分析面被压到很小”,不是“绝对匿名”。学术界的实证攻击研究反复给出的共同结论是:环签名层面的密码学在默认参数下没有露出统计钩子,可用的推断线索集中在时间关联与元数据侧——这也是为什么官方文档反复强调“保持默认设置、不要自定义参数”。
常见误区
一是把环签名理解为“16 个里随机藏 1 个所以有十六分之一概率暴露”:key image 机制保证重花必被查,环只负责来源不可区分,两者不能混为一谈。二是把 RingCT 与零知识证明路线对立成优劣:Zcash 的屏蔽池用 zk-SNARK 可以把匿名集扩到整个池子,代价是密码学奠基仪式(trusted setup);RingCT 的取舍是无需可信设置、匿名集受环大小约束,两条路线各有明确边界。三是以为RingCT能藏住合约和审计场景:链上不可见不等于法律义务免除,披露与合规是另一层问题。
风险提示:本文仅做密码学机制科普,不构成投资建议,也不为任何违法行为提供指导;各项目参数随升级变化,请以官方文档当期版本为准。
发表评论
还没有评论,来说两句吧。
评论区为展示样式,提交不会被处理。