-
-
[原创]零知识证明区块链的先进形式化验证
-
发表于: 2024-10-10 16:14 1723
-
形式化验证是一个数学证明过程,用以证明系统的正确性,确保其在所有可能的条件下都完全符合预期运行。鉴于区块链技术的复杂性和高风险性,其中的缺陷可能导致重大的财务损失或隐私泄露。形式化验证超越了传统的测试或审计,通过数学证明来验证程序的某些性质的正确,从而消除了大量的潜在错误及漏洞。
零知识证明(ZKP)对于区块链的扩展性至关重要。未来的智能合约将在先进的零知识虚拟机(zkVM)上运行,例如用于以太坊合约的zkEVM和用于Wasm合约的zkWasm。这是从传统虚拟机向由零知识证明驱动的虚拟机的范式转变,可以适应更广泛的应用范围,如游戏平台和高性能计算解决方案。
CertiK最近完成了zkVM(zkWasm电路)的首次全面形式化验证,这是一个重要的里程碑。这一突破在行业中树立了新的标准,证明了对复杂的零知识电路进行全面形式化验证的可行性。通过确保每个验证过的零知识证明都一一对应其预期的智能合约的执行,CertiK在保护下一代区块链应用方面处于领先地位。
零知识证明应用的形式化验证
对于基于零知识证明的应用而言,形式化验证在解决两类重要的安全性和正确性问题中起着关键作用。
第一类问题是关于零知识电路的正确性验证。这一验证过程可确保证明检查器接受的每个零知识证明都精确对应于该应用特定的一个合法交易。由于这种类型的验证对每个零知识电路都是特别的,因此需要对每个应用进行定制。
第二类问题是针对零知识证明检查器本身的正确性,包括其底层密码学。形式化验证在这一领域是普适的,它确保了所有应用中作为验证证明的基础组件都是可靠且能正常工作的。
尽管这两类形式化验证都至关重要,但因其需要对每个应用进行定制,零知识电路的形式化验证备受关注,且有着大量的需求。CertiK优先考虑这一部分的形式化验证,解决零知识电路的细微差异和特定需求,以确保最高等级的安全性和正确性。
对于zkVM电路而言,在VM电路上运行的实际智能合约代码也参与定义了交易的内涵。对这些智能合约代码的安全性和正确性进行形式化验证也是非常必要的。CertiK在这些智能合约的形式化验证方面一直处于行业领先地位。
零知识证明的形式化验证现状
此前,零知识证明的形式化验证主要在特定应用电路上进行,例如专门用于代币转移的电路。这些验证工作在复杂性上的努力不容忽视。然而,当验证涉及更通用的虚拟机(例如处理智能合约的虚拟机)中使用的zkVM电路时,面临的挑战会急剧增加。
zkVM电路本身高度复杂,同时其支持的智能合约执行也有着巨大的规模和动态性,这使得对它们进行完整的形式化验证变得极为困难。一直以来,业界都没有对实际运行中的区块链zkVM电路实现过完整的形式化验证。这一艰巨的任务常常迫使研究人员将验证工作限定在zkVM的很小范围内,只能针对部分子集进行验证;而在尝试更全面地验证之前,往往只能解决一些较为简单的技术问题。
一般来说,区块链系统及智能合约的安全性和正确性主要通过审计来建立,而形式化验证则作为一种可选但更为强有力的保障手段。部分原因是在实现去中心化共识的同时,可以运行链的多重实现,从而有助于发现潜在的错误和攻击。然而,在下一代基于零知识证明的区块链领域,形式化验证将不再是奢侈品,而是必需品。由于零知识证明的密码学理论和算法的复杂性,以及在zkVM等通用零知识电路中智能合约执行的动态性,导致只有形式化验证才能提供必要程度的审查。这些零知识电路由于其同实现的相关性而面临额外挑战:它们需要将完整的计算压缩成简洁的证明,这使得它们不太能借助传统区块链的去中心化共识优势来提升安全性。
CertiK对zkWasm的开创性形式化验证
CertiK对基于Rust实现的zkWasm电路进行了全面的形式化验证,这是一个重要的成就,该成就标志着世界上首次对zkVM实现进行了完整的形式化验证。CertiK的验证过程确保了由zkWasm证明检查器验证的每一个零知识证明都唯一地关联到zkWasm虚拟机上相应智能合约的执行。
通过管理动态的zkWasm状态和操作,如内存处理和函数调用/返回,CertiK有效地增强了系统的可靠性。同时,在形式化验证的过程中发现并纠正了一些关键错误,这凸显了形式化验证在zkVM的开发和部署中的关键作用。
这种全面验证意味着所有在zkWasm链上运行的智能合约,其零知识证明的存在和正确性都得到了普遍地保障,从而无须对每个智能合约进行单独的零知识证明形式化验证。此外,我们还对zkWasm进行了全面的安全审计。这一并行过程发现并解决了zkWasm早期实现中的一些关键错误,增强了系统的总体可靠性和安全性。
zkWasm的先进形式化验证过程
CertiK开发了一个模块化的形式化验证框架,专门针对zkWasm电路的复杂性(如Halo2风格的电路算术化)进行建模,从而为zkWasm提供了一种先进的形式化验证方法,该框架旨在反映虚拟机操作的特定保证和固有假设。CertiK通过结合机器自动化的高效性和安全专家的洞察力,得以生成严格且经过机器校验的数学证明。
这些证明证实了zkWasm电路的实现满足了所有的指定保证,并完全按预期执行。此外,证明也验证了这些电路生成的零知识证明可以准确地对应于Wasm智能合约的正确执行。这确保了zkWasm上智能合约的部署和功能具有高水平的信任和安全性。
zkEVM及未来
CertiK的高级形式化验证框架最初是为zkWasm开发的,但该框架也适用其他zkVM,其中也包括零知识以太坊虚拟机(zkEVM)。该框架解决了智能合约虚拟机面临的常见挑战,例如管理动态内存和控制流。这种适应性至关重要,因为它允许框架有效地应用于不同zkVM的独特要求。
CertiK在全面验证zkWasm方面取得的成功,证明了该技术能够扩展应用于更广泛的零知识证明电路领域。在处理零知识电路算术化的过程中,CertiK积累了丰富的经验,特别是针对Halo2(一种在众多零知识证明应用中广泛使用的技术)实现的经验。这些经验赋予了CertiK在协助零知识证明项目进行形式化验证的独特优势。
下一代区块链技术需要形式化验证,尤其是对于使用了零知识证明的系统。
如果你是零知识区块链的开发者或所有者,想了解更多关于CertiK如何证明系统安全性的细节,请与我们联系。
想要了解关于zkWasm先进形式化验证的细节,请参阅同期发布的“零知识证明的先进形式化验证:如何验证一条ZK指令”文章。
常见用语注释
什么是零知识证明?
零知识证明是一项重大的技术进步,对隐私和可扩展性有着深远的影响。在Web3.0中,去中心化计算必须在隐私和性能之间取得平衡,零知识证明则提供了一个强大的解决方案。这项技术可以将复杂的计算数据和执行步骤压缩成简洁的证明,这些证明中不包含任何关于输入数据本身的信息。通过这样的方式,零知识证明解决了区块链网络面临的性能和可扩展性的严峻挑战。零知识证明既能增强隐私性又能提高性能,这给区块链技术的广泛采用带来了双重优势。
什么是zkVM(零知识虚拟机)?
零知识证明可以通过两种主要方式在区块链上实现。第一种方法是创建特定应用“电路”,为特定类型交易(如代币转移)生成零知识证明。这种方法类似于处理像比特币转账这样的基本交易。
第二种方法更为复杂,它涉及开发用于智能合约虚拟机的通用电路,例如以太坊虚拟机(EVM)。这些通用电路被称为zkVM,它们能够加载任意智能合约及其输入数据,并为合约的特定执行生成零知识证明。
zkVM结合了智能合约的灵活性和零知识证明的隐私保护与高效率,对推动Layer 2解决方案的扩展至关重要,并且有望成为未来可扩展Layer 1网络的基础。鉴于其关键作用,确保zkVM电路达到最高安全标准和正确性是至关重要的任务。
什么是zkWasm?
zkWasm是zkVM的一个具体应用,它将零知识证明(ZKP)与WebAssembly(Wasm)相结合,从而显著提高区块链应用的隐私性和可扩展性。WebAssembly是一种为快速、高效执行而设计的紧凑的二进制指令格式,越来越多地用于高性能的Web和区块链环境(包括游戏平台)。通过集成零知识证明,zkWasm能够在不暴露任何敏感底层数据的情况下,安全地执行复杂计算。这对于增强智能合约和其他基于区块链的应用程序的隐私至关重要。
什么是zkEVM?
zkEVM,即零知识以太坊虚拟机,是专门为以太坊生态系统量身定制的zkVM变体。该技术利用零知识证明,在以太坊内实现安全、可扩展和私密的交易。与zkWasm更具通用性的设计侧重点不同,zkEVM与以太坊的现有基础设施深度集成,并已实现更广泛的开发和使用。它提供了一种独特的方法来增强可扩展性和隐私,提供了和zkWasm互补的一些功能,但专注于以太坊的特定需求。
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课