编者按:本文来自以太坊爱好者,作者:AvihuLevy&UriKolodny,翻译:阿剑,Odaily星球日报经授权转载。引言
在本文中,我们将从错误性证明与有效性证明的区别出发,分析和比较不同的Layer-2可扩展性方案。我们断言,相较之下,有效性证明在根本上具有优势,因为有效性证明方案保证了只有合形式的状态转换才会被接受。背景
在最近几个月,基于证明的以太坊可扩展性方案——比如Truebit、GluonPlasma、dFusion、Roll-Up以及Ignis这样的项目——开始浮出水面,让人颇为激动。这些项目背后的理念很简单:与其给区块链写入很多交易,不如产生一个证明,可以简洁地表示这些交易,进而表示出新的状态。上面提到的所有项目都是Layer-2方案:它们定义了一种运行在Layer-1上的协议,并且基于这些协议来提供多种服务:存储资金/取出资金、一个根据链下状态时时更新的账本,并作为一种“全局时钟”而运作。重要的是,这些协议没有嵌入Layer-1,因此Layer-1也无法强制执行任何Layer-2的逻辑。在此,我们想展开一种框架来比较这些方案,尤其是关注“错误性证明”与我们所谓的“有效性证明”之间的区别。错误性证明和有效性证明不是Layer-2的专利,在Layer-1上也可以存在,但当前大家仅在Layer-2上做尝试,因此我们的分析也都基于Layer-2方案。错误性证明即表示某个状态转换不正确的证据。这种方案反映了一种乐观的态度:假设区块上表示的Layer-2状态都是正确的,除非有人能证明不是。实际上,提交到链上的区块也很有可能包含着一次不合逻辑的状态转换。有效性证明即表示某个状态转换正确的证据。这种方案的态度更为消极:当且仅当某个状态是正确的,区块才应该包含代表相应Layer-2状态的值。在继续推进分析之前,有必要强调的是:证明系统既可以被用作错误性证明,也可以用作有效性证明。我们不应该混淆证明的方式和证明的目的。深度分析
错误性证明
错误性证明的主要优点是无需为每一次状态转换都提供证明,只在系统需要中断的时候提供。因此,错误性证明方案需要的计算资源更少、更适合可扩展性受限的环境。这种方案的主要缺点则来源于其非交互性:它定义了多方之间的“会话”。一次会话要求各方——尤其是断言状态转换有误的一方——必须在线,并且允许其它方用多种方式打断会话。但问题的核心是:协议会将沉默视为默示的同意。实际上,攻击者完全可以尝试用DDoS攻击制造出表面的沉默。概念上,错误性证明方案可以表述如下:因为区块有可能包含不正确的状态转换,错误性证明协议设定了一个时间框架——纠纷时间窗口——来处理不正确的状态。这一窗口的长度也是用区块数量来定义的。如果在纠纷时间窗口内无人提交错误性证明,相应的Layer-2状态转换就会被认为是有效的。如果有人向智能合约提交了错误性证明,而且经证明是正确的,则智能合约会将Layer-2状态回滚到最后一个正确状态。除此之外还可能实施对作恶一方的惩罚,等等。DTF时间长度的选择很重要:DTF时间越长,发现错误状态转换的几率就越高——听起来很棒。但同时,时间越长,用户需要等待的时间也越长,这就是一个副作用了。有效性证明
有效性证明总体上说更为简单:向一个智能合约发送一些链下计算已然发生的证据。智能合约仅在一个新值被证明为正确之后才更新区块链。有效性证明的主要优点是区块链上总是能反映出一个正确的Layer-2状态,而且一个新状态可以即时使用。而主要缺点就是每个、每次状态转换都需要一个证明,不单单是状态转换受到质疑时才需要提交证明,这就影响到了其可扩展性。51%攻击
在多种可能的攻击方法中,我们主要关注Layer-1上的51%攻击。最近51%攻击频发,连以太坊经典也未能幸免。那么错误性证明和有效性证明如何应付这种攻击呢?错误性证明:一场51%攻击会在区块链中引入一个欺诈性的状态,比如从交易所中“偷取”一些资金。细节如下:攻击者用一个欺诈性的状态转换创建了区块BlockFr。例如,区块中包含了一笔交易,将交易所中所有的资金转移到攻击者的账户。在BlockFr之后,他们还会接上DTF区块,以一个包含取款交易的区块告终。然后他们在DTF区块后面继续生成区块,直到超过当前链成为更长的链。他们能这么做是因为他们掌握了51%的算力难搞的是,发动这样一场攻击的运营成本跟“奖金”规模无关。这就意味着,随着密码学货币交易所的体量上升,攻击交易所会越来越有吸引力。总而言之,问题的根源在于Layer-2解决方案定义了自己的逻辑,而且允许一个区块包含欺诈性的的状态转换。这样一来,攻击者偷盗资金之后的账本状态也会被认为是一个合法的状态!甚至都没有什么双重花费,只是出现了一桩欺诈。有效性证明:51%攻击只能遮蔽已有的账本历史,可能可以提供另一种历史;但重要的是,这一新的历史也是完全合形式的。这里所说的攻击范围仅限于在Layer-1上可能发动的攻击。在币币交易所中,覆写历史的勾当有时候是一本万利的:例如,一个卖家,可能会很乐于遮蔽掉一笔时候来看成交价位于谷底的交易,但是,在给定区块链上的交易所中,没有办法可以直接吞掉对方的钱。我们提议的解决方案
如果有这么明显的劣势,错误证明型系统还会作为一个选项?主要原因就是提供有效性证明迄今为止都仍是非常昂贵而且繁琐的。在使用证明系统以前,免许可系统中唯一一种“有效性证明”就是简单重复运算,因此可扩展性大为受限;而且,这种重复计算直至今天仍在Layer-1上使用,虽然众所周知它是可扩展性的一个障碍。证明系统则提供了一种非常有吸引力的特性,叫做简洁性:为了验证一个状态转换操作,你只需要验证一个证明,而且验证的开销是完全独立于状态转换的计算量大小的关系)。Ignis/Roll-up都基于SNARK,需要一个受信任的初始设定,并且相较于STARK,需要证明者使用更多的计算资源。StrakWare正在努力部署StarkDEX,为去中心化交易所提供可扩展性方案;他会使用STARK来实现有效性证明,我们预计会在2019年第一季度末部署到测试网上。结论
本文比较了错误性证明和有效性证明作为Layer-2可扩展性方案的工具价值。我们强调了有效性证明应对51%攻击的内在优势。而STARK,因为证明时间更快,而且验证简单、无需受信任的初始设定,是一种生成有效性证明的有力工具。感谢DanRobinson、LindaXie、AlexeyAkhunov以及GeorgiosKonstantopoulos审读本文的初稿。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。