“详解ZeroSync:Starkware为比特币开发的零知识证明系统”

"ZeroSync:Starkware为比特币开发的零知识证明系统"

ZeroSync:将零知识证明引入比特币生态系统

作者:[email protected]

1. 前言

零知识证明(Zero-Knowledge Proof, ZKP)技术为区块链的可扩展性和隐私性带来了重大的革新。迄今为止,以太坊社区已经广泛应用了这项技术,并取得了飞速进展。根据L2beat官方数据显示,以zkrollup技术为基础的两条以太坊二层公链zksync和starknet总共有5.38亿的Total Value Locked(TVL)。另外,starknet公司推出的zk-rollup技术在底层支持的dYdX去中心化交易所拥有3.38亿的TVL。截至目前为止,比特币市场占有率为46.69%,以太坊市场占有率为18.39%。然而,对于比特币来说,零知识证明仍然处于起步阶段。与以太坊相比,比特币的区块大小为500.16GB,需要消耗巨大的计算算力才能证明这些庞大的区块链数据。因此,Starkware公司推出了ZeroSync,旨在填补比特币市场的这一空白,通过小巧紧凑的证明系统,拓展比特币生态网络。ZeroSync在商业价值、市场需求和技术角度上拥有巨大的发展潜力。

2. ZeroSync介绍

ZeroSync通过零知识证明技术解决了比特币生态系统中的可扩展性、可访问性和隐私性问题。通过创建即刻同步比特币链上状态的证明系统、为比特币生态系统上的开发者提供工具包、以及通过零知识证明增强比特币生态系统中的协议、应用和服务。ZeroSync的技术团队非常强大,其中的成员Andrew Milson成功地使用Sandstorm和miniSTARK在StarkNet网络上生成了第一个开源证明,推动了区块链和加密技术领域的开源技术发展。

传统上,设置比特币节点相对简单,但需要从网络中的其他节点下载大量的区块数据,通常需要花费数天的时间。为了确保新启动的节点最终持有正确的比特币链状态,这个时间消耗是必要的。然而,证明数百GB内存的比特币区块链需要耗费昂贵的计算算力。但是,如果采用压缩的方式,就可以获得一个小巧而紧凑的证明。一旦生成了这样的证明,比特币网络中的任意数量的节点都可以使用它即刻同步。通过利用零知识证明,任何人都可以立即验证链的最新状态,而证明的大小不会受到链自身大小的影响。当下一个区块被挖出时,任何证明者都可以递增地扩展到前一个状态的证明。

这个证明系统的意义在于,它将零知识证明与比特币的不可修改性无缝连接起来。ZeroSync将填补上述空白,成为一个验证比特币区块链正确性的工具。它类似于全节点实现,不仅可以在应用所有区块的交易后得到最终状态,还可以随后验证这个验证过程。ZKP系统在比特币刚性基础层之上提供了极大的灵活性,并引入了一系列新的应用领域供探索。

3. 状态证明技术三阶段

ZeroSync基于STARK证明,与其他证明系统相比,STARK证明相对简单,只依赖于哈希函数和多项式,无需新的密码学假设,并且无需信任设置。

为了实现比特币证明,ZeroSync正在使用StarkWare创建的Cairo语言,Cairo是一种用于创建可证明程序的语言。技术团队可以创建一个验证单个区块的程序,并且只有在验证成功时,才能为其生成证明。官方团队正在与所有支持ZeroSync的STARK工具的开发者密切合作。由于链状态证明的复杂性,ZeroSync的官方团队将其划分为三个连续的阶段进行推出。目前为止,前两个阶段的原型已经完成。

1. 区块头证明

区块头包含前一个区块的哈希和本区块的时间戳,形成按时间顺序排列、可以追溯到第一个区块的链式结构。

与轻量级验证(Simplified Payment Verification, SPV)类似,区块头状态证明只验证区块头、工作证明和难度调整。此外,通过在所有区块头上构建Merkle树,区块头链得以增强,从而简化了所有区块和交易的包含证明。这种状态证明相对简单、轻量级,计算成本低。官方已经完成了区块头证明系统,并通过官方网站的演示进行了区块头验证,速度仅需几秒即可同步比特币节点状态。

详细验证规则如下:

  1. 验证工作证明:验证区块的哈希值是否低于当前目标值,目标值与区块的挖矿难度有关。如果区块哈希值低于目标值,则说明该区块的工作证明有效。
  2. 确认链的顺序:检查当前区块中编码的前一个区块的哈希值是否与实际前一个区块的哈希值一致,用于确认区块在链中的正确顺序。
  3. 检查时间戳:检查区块的时间戳是否在合理范围内,时间戳不能早于前11个区块时间戳的中位数,也不能晚于网络时间加上两小时。
  4. 确认目标值的正确性:检查区块中编码的目标值是否正确,如果区块间时间间隔发生变动,需要根据时间戳进行调整。

以上四个步骤可以确保比特币网络中区块的有效性和链的正确顺序,同时防止恶意节点通过修改目标值进行作弊。

区块头验证的可验证计算通过在Cairo中实现上述规则实现。官方使用开源Cairo证明器giza(并为递归证明的实现做出贡献)来证明生成的程序及其执行跟踪。由于底层的STARK协议,一个伪造的证明执行证明是不可能的,而一个正确的证明只有几百到上千字节大小,可以在其他区块链、链下(用于节点同步)甚至另一个STARK证明中进行验证。

为了生成多个连续区块头的证明,官方将它们的验证批量进行,只要底层证明器处理能力足够。通过在新的STARK证明中验证几个批量验证证明,可以为整个比特币链创建证明。

2. 假设有效状态证明

假设有效状态证明是一种类似比特币核心的“假设有效”选项。它验证除了交易签名外的所有比特币共识规则,更具体地说,假设所有见证数据都是有效的。此外,此证明使用Utreexo来增强链上的UTXO集合承诺。该状态证明的初始原型已于2023年2月完成。

假设有效区块是一种优化技术,用于加快比特币全节点的同步速度。通过这种技术,如果新的全节点在启动时知道某个区块是有效的(通常由软件默认设置或者用户手动设置),在同步到该已知有效区块之前的所有区块,则可以跳过签名验证,从而节省大量的计算资源和时间。

具体操作中,如果新的全节点在启动时知道某个区块是有效的,那么在同步到该已知有效区块之前的所有区块,节点可以跳过签名验证,直接接受这些区块。而在该已知有效区块之后的所有区块,节点仍然会进行正常的签名验证。

需要注意的是,假设有效区块并不改变比特币的安全模型或共识规则,它只是一种优化手段。即使用户没有设置任何假设有效区块,或者设置的假设有效区块并不在最长的区块链上,比特币节点仍然能正常工作,只不过同步速度会较慢一些。

3. 全节点证明

使用SHA256对区块头进行两次哈希是区块头验证中最耗费计算资源的操作。当前的比特币区块可能包含超过2000个交易。因此,全面验证这些交易比仅验证区块头要复杂得多,因为每个交易都需要进行哈希运算。我们不能在一个证明中验证大量的区块,除非使用递归证明并且需要跟踪一个链状态(主要由每个区块后的未花费交易输出集合组成),该状态需要在每个区块的验证过程中进行更新。

尽管STARK证明相对简洁,使得验证相应区块比较容易,但链状态必须是每个证明的公开输入的一部分,这将增加证明的大小。处理庞大的UTXO集合是一个重要问题,因为过大的UTXO集合可能影响节点的性能和存储需求。处理大型UTXO集合可能导致节点需要更多的存储空间和更长的同步时间,从而影响整个区块链网络的效率和可扩展性。

为了解决这个问题,我们可以使用一种叫做累加器的技术,具体来说,就是一种叫做UTreeXO的技术,它是一种可以交换树节点的Merkle山脉范围。通过这种方式,我们可以减少每次验证时需要的输入和输出,只需要包含代表整个UTXO集合的UTreeXO根哈希的列表。如果一个交易使用了特定的UTXO,它可以连同一个成员证明一起提供给程序,而无需包括在公开输入中。这样,我们就可以大大减小证明的大小,提高比特币网络的效率和可扩展性。

为了优化证明的生成和验证过程,ZeroSync团队采用了一种叫做增量可验证计算(Incrementally Verifiable Computation, IVC)的技术。通过将证明任务分解成多个小任务,可以大大降低计算资源和时间消耗。在这个例子中,每个“任务”是生成一个区块的证明。在正常情况下,每生成一个区块的证明,都需要进行一次验证,但这需要大量计算资源和时间。因此,团队提出了一种新的方法:首先并行生成10个区块的证明,然后将这10个证明压缩为一个单一的证明。这个压缩的过程类似于在一棵树上,每个树枝(证明)指向一个中心点(压缩后的证明)。这样,验证的过程只需要对这个单一的证明进行,大大降低了计算复杂度和时间消耗。然后,压缩后的证明可以作为输入,输入到下一个区块的验证过程中。这种方式可以确保在前一个证明仍在运行时就开始下一个证明的生成和验证,提高了效率。最后,为了确保数据的一致性,验证过程必须检查所有的输入状态是否匹配前一个的输出状态,以确保整个过程的正确性。

全节点证明涉及验证比特币的所有共识规则,包括所有的见证数据。这是计算方面最昂贵的证明,需要对证明进行大量的优化才能变得可行。ZeroSync的首个主要应用将通过Blockstream Satellite从太空广播状态证明,使地球上几乎任何地方的人都能立即通过全节点证明同步到比特币区块链。

4. 总结

ZeroSync可以生成比特币区块链的STARK证明,并旨在为整个链创建一个单一的证明。这个证明与相应的UTXO集合结合使用,可以用来快速同步比特币全节点。目前,Starkware的官方团队已经到达“假设有效状态”的阶段,但尚未进行交易脚本验证,团队正在努力实现递归验证。初步实验结果表明,证明一个包含108笔交易的区块只需大约500万个Cairo步骤。ZeroSync是一个开源项目,通过零知识证明技术解决比特币生态系统中的可扩展性、可访问性和隐私性问题,一旦成功,将具有深远的意义,体现在以下几个方面:

  1. 提高比特币网络的效率和可扩展性:通过使用ZeroSync,比特币网络的节点可以立即同步到最新的链状态,无需下载和验证所有区块数据。这将大大提高比特币网络的同步速度,使更多的用户和设备可以参与其中,提高比特币网络的可扩展性。
  2. 提高比特币网络的安全性和隐私性:ZeroSync利用ZKP技术,在不泄露具体交易信息的情况下验证交易的有效性,极大增强了比特币网络的隐私性。此外,由于ZKP的非交互性,即使存在恶意行为的证明者和验证者,也无法破坏证明的正确性,提高了比特币网络的安全性。
  3. 推动比特币生态的发展:ZeroSync不仅可以作为一种工具,使开发者能够更便捷地开发和部署比特币应用,还可以增强比特币生态系统中的协议、应用和服务,推动比特币生态的发展。

ZeroSync作为一个开源项目,引入了零知识证明技术,充分发挥了比特币的潜力,为比特币生态系统的可扩展性、可访问性和隐私性带来了革新。通过ZeroSync,比特币将进一步发展并在全球范围内发挥重要作用。