Page 388 - 《软件学报》2025年第8期
P. 388

张子龙 等: 基于原生链的跨       Rollup  机制研究                                               3811


                 由该批明文数据生成, 详见图         6. 由于零知识证明具有完好性的特性, 即如果上述零知识生成过程不通过, 证明者
                 无法伪造出一个有效的证明使得其通过验证方的检. 因此只要证明者提供了一份有效的证明和对应的明文输入,
                 那么说明证明者拥有了有效的密文输入, 且对密文输入的检查结果都是合法的. 在进行零知识证明验证时, 只需要
                 校验明文输入的有效性, 等同于密文输入的有效性以及整个验证函数执行的有效性. 通过这种方式, 验证者可以不
                 必获取完整的密文输入, 也不必完整的执行整个验证函数流程.


                                                                       表 1 零知识证明的明文数据


                      明文输入                                       明文输入字段                 具体含义
                                                                ReceiptRootList  原始交易的交易收据树根列表
                                           验证函数 f (x)                         该批次证明中所有接收方交易组合成
                                                                TX receiver TreeRoot
                                                                                       默克尔树根
                      密文输入
                                                                       表 2 零知识证明的密文数据

                                                                  密文输入字段                 具体含义
                                                                   TX sender List     所有原始交易列表
                                                                  TX receiver List  所有跨Rollup交易列表
                    见证 (witness)
                                                                   ReceiptList     原始交易的交易收据列表
                                        生成零知识证明 proof
                                                               ReceiptMerklePathList  原始交易收据的默克尔路径证明

                                                                  明文数据
                                                                                          验证证据是否正确
                                                               零知识证明证据     零知识证明验证电路
                    证明方参数
                          图 5    零知识证明的生成阶段                            图 6    零知识证明的验证阶段
                 2.3.3    零知识证明算法并行化
                    本文具体所采用的零知识证明算法是基于               DeVirgo  [14] 和  Groth16 [10] 的并行化零知识证明方案  [15] . 选择并行化
                 零知识证明的原因是, 跨       Rollup  交易验证中所实现的零知识证明的验证函数具有高度可并行的部分. 传统的零知
                 识证明生成过程通常是单线程执行的, 而并行化零知识证明可以利用多线程并行化生成证明过程, 减少证明生成
                 的时间. 通过并行化证明的方式, 可以提高单次零知识证明的生成速度, 从而使系统能够处理更大规模的证明任
                 务. 这样可以增加单次零知识证明的交易量, 进一步降低单笔交易的平均链上计算成本, 并提高系统的性能和效
                 率. 并行化零知识证明的验证方法如图            7  所示.
                    并行化证明策略的核心思想是选择一种零知识证明方式作为并行证明策略, 并选择一种零知识证明算法生成
                 最终的零知识证明       proof, 通过证明并行化策略下的零知识证明的证据的有效性来证明整体证明的有效性. 具体而
                 言, 首先将原始待证明函数拆分成多个可并行化的证明函数. 在本方案中, 可并行的函数部分指的是各笔证明不冲
                 突的待验证的发送方交易, 本文通过对该部分进行并行处理, 加速零知识证明的生成过程. 在验证交易不会发生冲
                 突时, 由于不同交易的验证之间没有依赖关系, 因此各自独立生成零知识证明的过程是可行的. 接下来, 针对分拆
                 后的各并行化证明函数选择一种并行零知识证明算法. 各个函数独立使用并行零知识证明算法, 得到多个辅助证
                 明模块. 最后, 在最终的零知识验证算法中, 将各并行部分的零知识证明的证据以及原始证明过程中的串行部分合
                 并为新的最终证明函数.
                    从整体上看, 零知识证明的目标是证明该批交易都能通过验证函数有效性检查. 验证并行化部分的辅助模块
                 的证据, 实际上相当于使用并行化零知识证明算法证明单笔交易的有效性. 因此, 只要每一笔交易的零知识证据的
                 验证有效, 就相当于单笔交易原始验证函数有效. 而最终的验证函数则由所有并行化零知识证明证据的验证以及
                 原始串行部分组成. 因此, 若最终可以生成零知识证明的证据, 那么便是证明每一笔交易的原始验证函数有效, 进
                 而可以推导出整体证明函数的有效性.
                    Virgo  是目前已知的零知识证明中, 少数不需要提前进行可信的初始化设置就可以达到抗量子安全级别的零
   383   384   385   386   387   388   389   390   391   392   393