详解ZeroSync:Starkware为比特币开发的零知识证明系统
作者 | [email protected]
1. 前言
零知识证明(ZKP)为区块链的可扩展性和隐私性上带来一种快速转变。到目前为止,以太坊社区正在广泛应用这项技术并且已经取得了飞速进展。由L2beat官方数据显示,以zkrollup技术的两条以太坊二层公链zksync以及starknet为主,截止目前为止,两条公链共有5.38亿的TVL,此外值得注意的一点是,同样以starknet公司推出的zk-rollup技术为底层的dYdX去中心化交易所拥有3.38亿的TVL。
截止目前为止,BTC市场占有率46.69%,ETH市场占有率18.39%。而对于比特币,零知识证明却仍然处于处女地。此外,根据数据显示,BTC整体的区块为500.16GB,想要证明数百GB内存的区块链需要消耗的计算算力是及其昂贵的。因此,Starkware公司旗下ZeroSync被创建出来的目的就是为了填补这个市场空白,将零知识证明系统带到比特币,通过小巧紧凑的证明系统,拓展BTC生态网络。ZeroSync无论从商业价值角度,市场需求还是技术角度,都拥有难以想象的成长空间。
2. ZeroSync介绍
ZeroSync将要通过零知识证明技术解决在比特币生态系统中可扩展性、可访问性和隐私性问题。官方通过创建即刻同步比特币链上状态的证明系统、为BTC生态上的开发者提供的工具包并且通过零知识证明(ZKP)增强BTC生态上的协议、应用和服务。官方的技术团队实力非凡,团队成员AndrewMilson他成功地使用Sandstorm和miniSTARK在StarkNet网络上生成了第一个开源证明,进一步推动开源技术在区块链和加密技术领域的发展。
众所周知,尽管设置比特币节点可能很简单,但它需要从网络中的其他节点下载大量的区块数据——这通常需要花费几天的时间。而为了确保新启动的节点最终持有比特币链的正确状态,这个花费时间的过程是必要的。想要证明BTC500GB内存的区块链需要消耗的计算算力也是及其昂贵的。但是如果通过压缩的方式,那最终就会形成一个小巧而紧凑的证明。而一旦生成了此类证明,BTC网络中的任意数量的节点都可以使用它来与网络即刻同步。通过利用零知识证明,任何人都可以立即验证链的最新状态。证明将不会受到链自身固有大小的影响。当下一个区块被挖出时,任何证明者都可以递增地扩展到前一个状态的证明。
这个证明系统的意义在于,它将与比特币的不可变形无缝连接。ZeroSync将作为一个工具将用来填补上述空白,证明比特币区块链的正确验证。它类似于一个全节点实现,不仅可以在应用所有区块的交易后得到最终状态,而且还可以在后来的时间验证这个验证过程。ZKP系统在比特币的刚性基础层之上提供了极大的灵活性,并引入了一系列新的应用供探索。
3. 状态证明技术三阶段
ZeroSync基于STARK证明,与其他证明系统相比,STARK证明相对简单。STARK只依赖于哈希函数和多项式。不需要新的密码学假设。最重要的是,没有信任设置的需求。
为了实现比特币证明,官方正在使用StarkWare创建的Cairo语言,Cairo是一种用于创建可证明程序的语言。技术团队可以创建一个验证单个区块的程序,并且只有在验证成功时,才能为其生成证明。官方正在与所有支持ZeroSync的STARK工具的开发者紧密合作。实现链状态证明非常复杂,所以ZeroSync的官方团队将其分为三个连续的阶段进行推出。截止目前为止,官方团队已经完成了前两个阶段的原型。
1.区块头证明
区块头:每个区块中都包含前一个区块的Hash,以及本区块的时间戳,从而形成一个按时间顺序排列可以追溯到第一个区块的链式结构。
与SPV(SPV就是一个在轻客户端环境下,验证交易有效性的过程。)轻客户端类似,区块头状态证明只验证区块头、工作量证明和难度调整。此外,它还通过在所有区块头上构建一个Merkle树来增强区块头链,从而使所有区块和交易的包含证明变得简洁。这种状态证明相对简单、轻量级,并且计算成本低。目前官方已经完成区块头证明系统,通过官方网站的demo进行的区块头验证过程,速度仅需几秒种即可同步btc节点状态。
Demo链接如下:https://zerosync.org/headers-chain.html
区块头链验证规则:
轻客户端在接收到比特币网络的区块头信息时,需要进行一系列的检查以验证区块的有效性和链的正确顺序。这一过程可以简化为以下四个步骤:
1.验证工作证明:轻客户端首先会检查区块的哈希值是否低于当前的目标值,这个目标值与区块的挖矿难度有关。如果区块的哈希值低于目标值,那么就说明这个区块的工作证明是有效的。
2.确认链的顺序:轻客户端会检查当前区块中编码的前一个区块的哈希值是否与实际的前一个区块的哈希值一致。这个步骤用来确认区块在链中的正确顺序。
3.检查时间戳:轻客户端会检查区块的时间戳是否在一个合理的范围内。具体来说,区块的时间戳不能低于前11个区块时间戳的中位数,也不能超过网络时间加上两小时。
4.确认目标值的正确性:最后,轻客户端会检查区块中编码的目标值是否正确。如果区块间的时间间隔有所变动,新的目标值需要根据时间戳来进行调整。
以上四个步骤可以确保比特币网络中区块的有效性和链的正确顺序,同时防止了恶意节点通过修改目标值来进行作弊。
区块头验证的可验证计算:
ZeroSync通过在Cairo中实现上述规则。官方使用的是一个名为giza的开源Cairo证明器(并为递归证明的实现做出贡献)来证明生成的程序及其执行跟踪。由于底层的STARK协议,此协议确保一个伪造的证明执行的证明是不可能的,并且一个正确的证明的大小为几百上千字节,可以在其他区块链上、链下(例如用于节点同步)甚至在另一个STARK证明中进行验证。
为了生成多个连续区块头的证明,官方将它们的验证批量在一个Cairo程序中进行,只要底层的证明器有足够的处理能力。可以通过在新的STARK证明中验证几个批量验证证明,来为整个比特币链创建证明。
2.假设有效状态证明
这一步骤是模仿比特币核心的“假设有效”选项。它验证所有除了交易签名比特币的共识规则。更准确地说:所有的见证数据都被假定为有效。此外,这个证明使用Utreexo来增强链上的UTXO集合承诺。团队在2023年2月完成了这个状态证明的初始原型。
假设有效区块是一种优化技术,用于加快比特币全节点的同步速度。这种技术允许节点在同步过程中跳过某些区块的签名验证,从而节省大量的计算资源和时间。
在具体操作中,如果一个新的全节点在启动时知道某个区块是有效的(这通常是由于软件默认设置或者用户手动设置),那么在同步到这个已知有效的区块之前的所有区块,节点都可以跳过签名验证,直接接受这些区块。而在这个已知有效的区块之后的所有区块,节点仍然会进行正常的签名验证。
需要注意的是,假设有效区块并不改变比特币的安全模型或共识规则,它只是一种优化手段。即使用户没有设置任何假设有效区块,或者设置的假设有效区块并不在最长的区块链上,比特币节点也能正常工作,只不过同步速度会慢一些。
3.全节点证明
使用SHA256对区块头进行两次哈希是区块头验证中最耗费计算资源的操作。当前的比特币区块可能包含超过2000个交易。因此,全面验证这些交易比仅验证区块头要复杂得多,因为每个交易都需要进行哈希运算。我们不能在一个证明中验证大量的区块,除非使用递归证明,并且还需要跟踪一个链状态(主要由每个区块后的未花费交易输出集合组成),这个状态需要在每个区块的验证过程中进行更新。
虽然STARK证明是简洁的,使得它们比验证相应的区块更容易,但链状态必须是每个证明的公开输入的一部分,这会使其大小增加数个G字节。应对UTXO集合的增长是一个重要的问题,因为过大的UTXO集合可能会影响节点的性能和存储需求。处理大型UTXO集合可能导致节点需要更多的存储空间和更长的同步时间,从而影响整个区块链网络的效率和可扩展性
为了解决这个问题,我们可以使用一种叫做累加器的技术,具体来说,就是一种叫做UTreeXO的技术,它是一种可以交换树节点的Merkle山脉范围。通过这种方式,我们可以减少每次验证时需要的输入和输出,只需要包含代表整个UTXO集合的UTreeXO根哈希的列表。如果一个交易使用了特定的UTXO,它可以连同一个成员证明一起提供给程序,这个过程不需要包含在公开的输入中。这样,我们就可以大大减小证明的大小,提高比特币网络的效率和可扩展性。
证明机制:
在这里,技术团队正在尝试使用一种叫做增量可验证计算(Incrementally Verifiable Computation,IVC)的技术来优化证明的生成和验证过程。可以将IVC想象成一种将大任务分解成多个小任务的方法。在这个例子中,每个"任务"就是生成一个区块的证明。在正常的情况下,每生成一个区块的证明,就需要进行一次验证。但是,这种方式需要很多的计算资源和时间。因此,技术团队提出了一种新的方法:首先并行生成10个区块的证明,然后将这10个证明压缩成一个单一的证明。这个压缩的过程就像是在一棵树上,每个树枝(证明)都指向一个中心点(压缩后的证明)。这样,验证的过程只需要对这个单一的证明进行,大大减少了计算的复杂性和时间。然后,这个压缩后的证明可以作为输入,输入到下一个区块的验证中。这种方式可以确保在前一个证明还在运行的时候,就可以开始下一个证明的生成和验证,从而提高了效率。最后,为了确保数据的一致性,验证过程必须检查所有的输入状态是否匹配前一个的输出状态。这就像是在检查每一步的结果是否符合预期,以确保整个过程的正确性。
验证所有比特币的共识规则,包括所有的见证数据。这是在计算方面最昂贵的证明,它需要对证明者进行大量的优化才能变得可行。未来官方的第一个主要应用将是通过Blockstream Satellite从太空广播状态证明,使得地球上几乎任何地方的人都能立即通过全节点证明同步到比特币区块链。
4.总结:
ZeroSync可以生成比特币区块链的STARK证明,并旨在为整个链创建一个单一的证明。这个证明与相应的UTXO(未使用的交易输出)集合结合使用,可以用来快速同步比特币全节点。目前,Starkware官方团队已经到达了一个“假定有效节点”的阶段,但是尚未进行交易脚本验证,官方团队正在努力实现递归验证。初次试验结果能够在大约500万个Cairo步骤内验证包含108笔交易的区块。ZeroSync是一个开源项目,通过零知识证明技术解决在比特币生态系统中可扩展性、可访问性和隐私性问题,一旦成功,意义深远,具体体现在以下几点:
1.提高比特币网络的效率和可扩展性:通过使用ZeroSync,比特币网络的节点可以立即同步最新的链状态,而无需下载和验证所有的区块数据。这将大大提高比特币网络的同步速度,使更多的用户和设备可以参与到比特币网络中来,从而提高比特币网络的可扩展性。
2.提高比特币网络的安全性和隐私性:ZeroSync利用ZKP技术,可以在不泄露任何具体交易信息的情况下验证交易的有效性,这大大增强了比特币网络的隐私性。此外,由于ZKP的非交互性,即使证明者和验证者之间存在恶意行为,也无法影响证明的正确性,从而提高了比特币网络的安全性。
3.推动比特币生态的发展:ZeroSync不仅可以作为一个工具,使得开发者可以更方便地开发和部署比特币应用,而且还可以增强比特币生态中的协议、应用和服务,推动比特币生态的发展。
随着项目不断的研发,Web3CN也将会持续跟踪ZeroSync,为您带来独家最新投研咨询。
参考文献
https://geometry.xyz/notebook/A-light-introduction-to-ZeroSync