零知识证明
零知识证明(ZKP)是 Anon 隐私保护背后的密码学基础。它让你在不透露某件事本身的情况下,证明你知道这件事,或证明某个陈述为真。
直观理解
假设你需要证明自己已满 18 岁才能进入某个场所,但不想出示会暴露姓名和确切出生日期的身份证。零知识证明就像一个写着“已验证年满 18 岁”的印章,不泄露其他信息。
在 Anon 中,“需要证明的事”是:“我拥有 Railgun 池中价值至少 X 个代币的票据,并且正在为这个接收方创建一笔有效转账。” 对于私密转账,证明会验证支出规则,而不披露私密票据。屏蔽和解除屏蔽仍会暴露公开地址及金额。
zk-SNARKs
Anon 使用 zk-SNARKs,即简洁非交互式零知识知识论证。其主要特点是:
- **零知识:**验证方除了知道陈述为真之外,不会获知其他信息
- **简洁:**证明很小,通常为几百字节,验证速度也很快
- **非交互式:**证明与验证异步进行,无需反复往返通信
Railgun 的电路使用基于 BN254 椭圆曲线的 Groth16 证明系统构建。
证明在本地生成
一个关键的隐私特性是:证明完全在你的设备上生成。私密证明输入在本地处理。生成的交易及服务所需数据会通过选定的提交方式发送。本地生成证明不代表所有请求或公开交易字段都会变为私密。
这意味着:
- 证明服务不需要你的私密支出输入
- 网络可用性与网络层隐私仍是两个独立的问题
- 你仍需信任钱包软件和自己的设备;证明使用 Railgun 电路在本地生成
性能
生成 zk-SNARK 证明需要大量计算。在现代计算机上,Anon 通常会在 5–20 秒内生成证明,具体时间取决于交易复杂程度。每笔交易只需支付一次这样的计算成本;链上验证快速且成本较低。