公链分析报告(7)--Zcash-2: 可审计性

参考文章

可审计的

核心思想可以在[ST99]中找到。[ST99]文章名字叫“Auditable, anonymous electronic cash”。可以看出这篇文章除了意在设计一个匿名电子货币,重点还在于要保证这个匿名货币是可审计的(Auditable)。

那么具体可审计性这个性质是如何保证的呢?主要就是通过Merkle tree(见图1)来记录上述事件

为了保证用户在使用所取得电子货币的隐私性,用户在支付这个操作上需要使用零知识证明来对应地证明用户知道Merkle tree对应的某个叶节点的秘密,从而证明他对货币的所有权和货币的合法性。

由这张从Zcash文章[SCGGMTV14]摘录的图3中可见,93%以上的计算都是Merk tree及其和可审计性相关的运算导致的。

通过Merkle tree证明vin的合法性与支配权

用户使用自己的货币时只需证明他知道其货币对应的随机数,以及该货币承诺是属于聚合器所包含元素中的一员即可。

针对货币本身的合法性证明,就得通过证明承诺本身在Merkle tree上的membership proof 来证明

这个方案非常复杂,因为首先需要用零知识证明的方案来证明哈希计算的正确性,这个本身涉及的电路就已经够复杂了,另外随系统中发行的货币量增加,对应的Merkle tree变大,需要验证的电路数目量随之增加。

区间证明

区间证明能做到证明某个金额属于一个合理的范围,但又不透露这个金额具体是什么,区间证明也是一种特殊的零知识证明。

其所定义的运算是模q运算,这里q是个非常大的素数,那么如果交易输出结果是个很小的负数,在这个有限域里是和一个非常大的正数等价的,攻击者就有可能利用这点凭空打印Monero。区间证明后来成为所有隐私币方案的标配也是这个原因。

发布了58 篇原创文章 · 获赞 66 · 访问量 8166

猜你喜欢

转载自blog.csdn.net/wcc19840827/article/details/101689459