零知识证明框架
发布网友
发布时间:2024-10-21 22:57
我来回答
共1个回答
热心网友
时间:2024-11-22 10:03
零知识证明框架指的是证明者向验证者证明自己知道某些声明,而不揭露信息内容本身。在区块链中,零知识证明有三种主要用途:隐私保护、数据压缩和计算外包。比特币和以太坊等公开区块链上的交易数据是公开透明的,而Zcash使用零知识证明进行隐私保护,使得交易数据无法暴露交易者的身份信息。tornado.cash则允许取款人使用零知识证明向智能合约证明自己的取款权,而无需提供账户、余额等身份关联信息。
区块链存储数据成本高,通过零知识证明可以将大数据压缩,节省大量链上空间。例如,Filecoin的复制证明使用零知识证明压缩数据。以太坊的layer2扩容方案zkRollup通过在layer2进行交易计算和处理,使用零知识证明保证layer1可以验证某笔交易确实发生并执行了特定业务逻辑,从而达到扩容目的。
实现零知识证明的基本逻辑是通过多项式。验证者随机选择挑战参数,证明者据此求解多项式的值,然后将结果发送给验证者,验证者验证结果是否一致。多项式能做到这一点是因为一元多项式最多有与多项式次幂相等的根数,不同多项式最多有相同数量的交点。通过多次交互和扩大取值空间,证明者可以提高蒙对概率,最终实现零知识证明。
zk-SNARK(零知识简洁非交互知识论证)是目前在区块链中广泛应用的一种零知识证明方法。它是非交互的,通过可信设置将验证者的挑战参数隐藏起来,用于计算验证。zk-SNARK提供简洁证明,适合链上存储和验证。其一般流程包括将问题转化为多项式,并构建多项式的证明系统。在实践中,通过算术电路约束验证者完成计算,生成的证明被验证者接受,无需重复计算。
电路生成过程中的私有参数是证明者可见的,对外隐藏关键知识。取款过程不包含commitment,确保链上取款与存款信息无法关联。每一笔存款信息通过合约event公开,证明者本地验证默克尔路径,合约验证证明的合法性和根哈希,不暴露路径信息,实现链下证明链上验证。此外,证明者可以指定收款人等参数,证明信息公开,丢失无妨。
将计算过程分解为门电路,形成R1CS(1阶约束系统),是对算术电路的进一步约束表达。构建R1CS涉及将复杂系统分解为门电路,通过L(左输入)、R(右输入)和O(输出)来约束计算过程。约束检验通过给定值判断是否满足系统运算约束。最终,R1CS转换成QAP(二次算术程序),表示为一组多项式,用于构建零知识证明系统。
构建证明的数学系统涉及隐藏参数、杜绝瞎猜、实现零知识和非交互性。幂模运算和椭圆曲线加密用于隐藏参数,确保验证者仅在加密空间进行计算。阿尔法变换用于*多项式,确保证明者遵循规定的计算规则。德尔塔变换实现零知识特性,隐藏多项式信息。通过可信设置仪式生成公共证明参数,实现非交互式证明。
Groth16算法是零知识证明领域广泛采用的方案,其生成的证明小、验证快。设置参数涉及生成多项式系数多项式,并通过椭圆曲线配对等技术实现证明过程。生成证明后,验证者可以快速验证证明的正确性。