Connext:有效性证明不是用于跨链桥的适当解决方案
来源:Hadas Zeilberger ,下文由 DeFi 之道编译。
随着最近在以太坊生态掀起一股零知识(ZK) Rollup(ZK Rollup)的浪潮,区块链社区对这些基于有效性证明的系统作为区块链的可扩展基础设施感到兴奋。
但有效性证明有时也被视为有效的跨链通信(或桥)解决方案。 人们认为,有效性证明避免了诚实参与者在桥接时的需要,就像他们为第 2 层(Layer2)可扩展性解决方案所做的那样。
不幸的是,这种情况并非如此。
在 Connext,我们一直在研究使区块链之间的通信更加安全和高效的方法,因此我们希望阐明该技术及其可行的解决方案。
在这篇博文中,我将解释什么是有效性证明,以及为什么它们不是一个足够的用于桥接的独立解决方案。
区块链和共识
在较高的层面上,区块链网络是一个点对点网络,所有参与者都在其中跟踪不断增长的交易账本。 他们每个人都在本地存储该分类帐的副本,在他们拥有所有权的计算机上。
这些参与者使用一组他们事先同意的规则——称为共识协议。 共识协议保证所有本地存储的分类账保持相同,即使分类账增长。 只要超过一半的参与者诚实地遵守协议,这个保证就得以维持。
当交易提交到区块链时,它会在点对点网络中传播。 参与者在收到交易时收集交易,并将它们排序成区块。 然后他们使用共识协议来确定新的交易集将如何改变账本。 共识协议分两个阶段工作。
第 1 阶段:要将区块添加到账本中,他们需要执行一个特定的操作,即一个函数,该操作将一组交易作为输入,然后根据这些交易输出一个新的账本。 完成此操作后,他们会生成一个新的候选账本,并将其传播到网络的其余部分。
第 2 阶段:现在每个参与者都从网络中的其他参与者那里收到不同的候选账本。 他们使用另一个函数来告诉他们选择哪个候选账本。 一旦他们运行了这个函数并拥有了正确的新候选账本,他们就会执行阶段 1 的相同函数来验证候选账本的计算是否正确。 如果验证成功,他们会将其包含在本地账本副本中,并丢弃所有其他候选账本。
区块链共识协议
有效性证明(validity proof)
有效性证明是第一阶段计算的证明。它们允许证明者从一组交易中输出一个新的候选分类帐,然后证明这个分类帐是使用正确的函数计算的。
我们使用证明这个词是有原因的。 如果 p 是一个有效性证明,则存在一个验证函数,如果给定一个有效的新账本,则输出 True。 另一方面,如果给定一个计算错误的账本,或者在一组非法交易上,验证函数将几乎 100% 确定输出 False(误报的机会小于被闪电击中) 。
因此,我们不需要假设证明者是诚实的。 这是一个非常强大的功能。 由于数学、概率和(限制)计算的魔力——即使证明者不诚实,他们也无法作弊。
有效性证明对于扩展解决方案(例如 zk-rollups)非常方便,因为它们使链下流程能够计算多个交易并证明它是正确的。
在处理完这些交易后,zk rollup 会向其第 1 层区块链提交一个新的候选账本和一个有效性证明(阶段 1 的计算证明)。
由于新的候选账本和证明在点对点网络中传播,参与者只需验证证明,而不是重新运行第 1 阶段的计算。
重要的是,他们能够同时验证多个交易,这减少了第一阶段的计算时间。
这种优化是可能的,因为有效性证明的铁定安全性,证明者在物理上不可能不诚实,即使在链下计算时也是如此。
在 ZK Rollup 中,链下计算机处理交易,然后将结果和证明发送到第 1 层区块链
ZK Rollups 能够使共识过程的第 1 阶段更加高效。
另一方面,第 2 阶段仍然留给底层区块链。
有效性证明和跨链桥
区块链 A 和区块链 B 之间的安全桥接协议保证,如果交易被处理并添加到区块链 A 的账本中,那么它将在某个预先指定的时间间隔内被处理并添加到区块链 B 的账本中。
如果我们想模仿 ZK Rollups 中有效性证明的安全性和信任假设(即证明是如此安全以至于不诚实的参与者总是会被阻止),那么区块链 A 需要向区块链 B 证明共识协议的第 1 阶段和第 2 阶段。
我们已经知道如何证明第 1 阶段。我们只是像使用 ZK Rollups 一样提供有效性证明。第 1 阶段计算只需要检查是否使用了正确的函数来处理一组交易。它并不真正关心这些交易是什么——只关心它们是可接受的交易,并且只关心它们在计算新的候选账本时得到了正确处理。
另一方面,第 2 阶段无法证明。为了说明这一点,让我们考虑一下我们将从第 2 阶段的计算证明中学到什么。第 2 阶段的计算证明会告诉我们,给定一组候选账本,获胜的账本是正确选择的。
但是我们怎么知道区块链 B 收到的这组候选账本准确地反映了通过区块链 A 的 p2p 网络传播的候选账本呢?无法知道声称的输入反映了系统的实际物理现实。
密码证明只能对静态数据进行编码。它非常适合对公知函数和与该函数一起使用的数据进行编码。但是证明不能在一个不断变化的无许可网络中编码不断变化的信息流。
无法为第 2 阶段提供证明,因此无法创建完全无需信任的桥协议。
一些桥已经通过艰难的方式学会了这一点。例如,Ronin 有一个跨链桥,如果交易由 9 个权威成员中的 5 个签署,则该交易被认为是“经过验证的”。 4 月,它成为攻击的受害者,黑客设法获得了 9 个密钥中的 5 个,并将欺诈性交易发送到接收方区块链。
在这种情况下,Ronin 提供了第 2 阶段的计算证明,其中接受候选账本的功能是检查它是否由 9 个验证者中的 5 个签名。但是,它无法提供实际物理系统状态的证明,因此自然成为审查攻击的受害者,发布到原始区块链(区块链 A)分类账的实际交易被审查,而不是发送到目标区块链(区块链 B)。
桥解决方案需要一个受信任的一方。 可以在此处找到该事实的正式证明。 可以在许多人之间分配这种信任,并且可以使用博弈论技术来抑制不良行为。 但是没有办法创建一个完全无需信任的桥协议。
由于不信任诚实的一方就无法证明第 2 阶段,因此安全的桥协议要求有人同时监视两个区块链以确保它们彼此一致。 精心设计的桥将尽可能减少此类观察者所需的信任。 可以很好地做到这一点的一类协议是 Optimistic Bridges。
Optimistic Bridges
Optimistic Bridges 的设计者认为需要一个可信赖的第三方。他们努力分配这种信任,并以尽可能减少这种信任的方式设计激励措施。
更具体地说,当前的Optimistic Bridges通过将任务委派给外部参与者网络来运行。其中一些参与者,称为更新者(Updaters),轮询区块链 A 的交易,签署它们,然后将签名和交易发送到区块链 B。其他参与者扮演观察者(watcher)的角色,他们轮询区块链 B,将其账本与区块链 A 进行比较,并注意任何差异。
当观察者报告区块链之间的差异时,它会发送签名的错误交易。请记住,交易是由更新者签署的。因为加密数字签名是不可能伪造的,所以观察者没有办法撒谎,所以恶意的更新者总是会受到牵连。
您可能已经注意到,没有任何加密机制可以确保更新者和观察者是诚实的。如上一节所述,这种机制不存在。相反,我们使用金钱激励措施,以便诚实行事符合他们的最大利益。负责签署和发送交易的更新者(并且有能力进行欺诈)必须质押资金来承担其角色。如果观察者报告欺诈行为,这笔钱将交给观察者。
重要的是,你只需要一个诚实的观察者来监控链来保证系统的安全。
Optimistic 系统仍在改进中。 Connext 研究团队的主要目标之一是设计 Optimistic 系统,使用密码学和博弈论技术的组合尽可能减少信任。 但即使在目前(和早期)的状态下,Optimistic 机制对任何区块链桥系统都非常有帮助。
结论
这篇博文的目的是阐明跨链桥中有效性证明的概念,并为桥中的“有效性证明与欺诈证明”辩论添加一些细微差别。