Pairings, KZG, SNARK
KZG承诺方案是一种加密方法,用于安全地锁定多项式,使得后续验证者可在不透露秘密内容的情况下确认其存在。这种方案在以太坊生态中至关重要,尤其在与零知识证明的结合下,提高了区块链交易的隐私性和可扩展性。KZG的实现依赖于椭圆曲线和复杂的数学原理,适合在其升级过程中高效、安全地验证交易。
由 Kate、Zaverucha 和 Goldberg 引入的承诺方案(又名“KZG 承诺”方案)是可用于承诺 4844 blob交易的最佳机制。
零知识证明 - KZG多项式承诺
本文定义了向量承诺(VC)方案,并详细介绍了相关的算法和结构,包括Vanilla VCs、SVCs以及交叉聚合SVCs的具体实现与验证过程。内容包括算法的工作流程以及认证数据的用法,还涉及了相关算法的应用场景,为理解向量承诺提供了深入的技术资料。
本文介绍了如何在 zk 证明中有效地使用 KZG 承诺,提高证明验证的效率。
多项式承诺正在重塑整个区块链的架构,不论是在链的数据结构优化上,模块化区块链的数据可用性上,还是零知识证明系统上都将大有作为。
一段代码生成零知识证明可以分为代码变成多项式阶段,多项式生成承诺两个阶段。
第一阶段,简单来说就是把代码转换成 a * b = c 三元算式的列表(就是写电路),然后套数据公式把三元算式的列表转换成多项式,然后用R1CS&QAP的方式对多项式进行约束;
第二阶段,先是通过f(x) = h(x)t
Trusted Setup其实就是生成一个非对称加密的私钥,即s;然后生成一系列的公钥,即g^(s^i), i = 0....n;其中g是椭圆曲线中的生成元; i是从0到n的整数,n是多项目的degree。其中的s必须销毁,谁都不能知道;只保留下来一系列的公钥;以太坊基金会已经生成了4组这类的公钥对
此项目旨在扩展 Constantine (Nim 语言实现的 KZG) 以包含 PeerDAS 功能和纠删码,并将其集成到 Nimbus 客户端后端。目标是实现 EIP7594 的 polynomial-commitments 共识规范函数,并提供 Constantine 的实现作为 Nimbus 客户端的后端选项。面临的挑战包括集成 Constantine 库和性能优化。
本文针对KZG、Groth16、Sonic、Fractal、Halo2、SuperSonic、Marlin、Plonk等8种零知识证明或多项式承诺协议,分别从算法特点、算法复杂度(主要关注证明/验证复杂度)、安全性、应用场景四个方面进行简要分析,便于你在对比或选型时有更清晰的思路。
文章介绍了以太坊的EIP-4844提案,即Proto-Danksharding,旨在通过引入新的交易类型和数据字段(blob)来优化以太坊的扩展性,特别是对Layer 2 Rollup解决方案的益处。