以太坊牵头创始人Vitalik Buterin在其近期公布的博文《基础层和功能逃逸速度》中提及,“维持 layer 1非常简单,用于layer 2来填补严重不足” 并不是解决问题区块链可扩展性和功能性问题的广泛答案,因为这种思路没考虑到layer 1区块链本身必需要具备充足的可扩展性和功能性,否则所谓的layer 2协议只是可靠的中介。在这篇文章中,Vitalik明确提出了“功能逃逸速度”的概念,他还回应,短期内我们必须分段研发layer 1与 layer 2 ,而长年则要更加注目layer 2的研发。
以下是译文:区块链世界有这样一个少见的思路:区块链应当是最简单的,因为它们是很难转变的基础设施,如果再次发生了毁坏,之后不会造成极大的危害,并且应当以layer 2协议的形式在一层区块链顶部创建比较简单的功能,例如:状态地下通道、Plasma、rollup等等。Layer 2应当是持续的创意地点,而layer 1应当是平稳的,只有在应急情况下才不会都有的变化(例如为了避免基础协议的密码学被量子计算机密码,一次根本性的突破性变化就是可以的)。
这种层分离出来的点子是十分好的,从将来来看,我反感反对这一点子。然而,这种思维忽视了一个最重要的点:虽然layer 1无法太强大,因为更大的功率就意味著更好的复杂性,因此不会有更大的脆弱性,但layer 1也必需要充足强劲,这样创建在其之上的layer 2协议才能是确实不切实际的。
一旦layer 1协议构建了或许的功能,我将称作“功能逃逸速度”,然后,是的,你可以在不更进一步转变基础的情况下,在上面做到任何其它事情。而如果layer 1过于强劲,你可以谈论用layer 2系统来填补空白,但现实毕竟,如果不新的引进layer 1企图挣脱的一整套信任假设,你是没办法去建构这些系统的。这篇文章将辩论包含“功能逃逸速度”的大于功能是什么。
一种编程语言必需需要在链上继续执行自定义用户分解的脚本。这种编程语言可以很非常简单,实质上不必须高性能,但它最少必须不具备所需的功能级别,才能检验有可能必须检验的给定内容。这一点很最重要,因为要建构在上面的layer 2协议必须某种检验逻辑,而这种检验逻辑必需由区块链以某种方式继续执行。你有可能听闻过图灵完善性,外行一般不会指出,如果一门编程语言是图灵完善的,那么它可以做到任何计算机理论上可做的事情。
一种图灵完善语言撰写的任何程序,都可以翻译成任何其它图灵完善语言的等效程序。然而,事实证明,我们只必须一些稍轻的东西:可以容许为不带循环的程序,或者确保在特定步骤中中止的程序。富-有状态性(Rich Statefulness)这不仅牵涉到一门编程语言,如何将编程语言精确地构建到区块链中也很最重要。如果一种语言被用作纯粹的交易检验,那么它构建的方式就更加受限:当你将币发送到某些地址时,该地址回应一个计算机程序P,该程序将用作检验从该地址发送到币的交易。
也就是说,网卓新闻网,如果你发送到一笔哈希为 h的交易,那么你将获取一个亲笔签名S,然后区块链将运营 P(h, S),而如果该输入为TRUE,那么该交易就是有效地的。一般来说,P是密码亲笔签名方案的检验器,但它可以继续执行更加简单的操作者。
留意,在这个模型中,P无法访问交易的目的地。然而,这种“显函数”的方法是过于的。
这是因为这种显基于函数的方法,足以构建人们确实想构建的多种layer 2协议。它可以构建地下通道(以及基于地下通道的系统,如雷电网络),但它无法构建其它具备更加强劲特性的配套技术,也无法用作具备更加简单状态概念的附属系统,等等。
荐个非常简单的例子来解释显函数范式所无法构建的事情,考虑到一个具备以下特征的储蓄账户:有一个密码密钥k可以发动付款,如果其展开了付款,则在接下来的24小时内,同一密钥k可以中止付款。如果付款在24小时内未有中止,那么任何人都可以“闯进”这个账户,然后已完成付款。
其目的是,如果密钥被盗,账户持有人可以避免骗子萃取资金。窃贼当然可以制止合法所有者取得资金,但反击对窃贼来说是无利可图的,因此他们有可能会为此而苦恼(有关这种技术的说明,请参阅完整论文)。
意外的是,这种技术无法非常简单地通过显函数来构建。问题是:必须有某种方法将币从“长时间”状态移往到“等候存款”状态。但是程序P无法访问目的地!因此,任何可以许可将币移往到等候存款状态的交易,也可以许可立刻偷走这些币,也就是说,P无法区分两者的区别。
在不几乎获释币的情况下,转变币状态的能力,对许多应用于而言都是很最重要的,还包括 layer 2 协议。Plasma本身合乎这个“许可、落幕、中止”的范式:从Plasma的解散操作者首先必需要取得批准后,然后不会有7天的挑战期,并且在这个挑战期内,如果挑战者获取了准确的证据,则解散就可以被中止。
Rollup也必须这个属性:Rollup中的币必需由一个追踪状态根R的程序控制,如果某个检验器P(R, R', data) 回到TRUE,则从R更加改回R',但它只将状态更加改回R',在这种情况下,它会获释币。这种许可状态变化,而不必须几乎将所有币设置在一个免费账户的能力,就是我所说的“富-有状态性”(rich statefulness)。它可以有多种构建方式,有些是基于UTXO的,而没它,且不还包括信任假设的情况下(例如,一组被集体信任的工作人员来继续执行那些富状态程序),区块链就足以构建大多数layer 2 协议。
留意:是的,我告诉如果P可以采访h,那么你可以将目的地地址作为S的一部分,并将其与h展开较为,然后以这种方式容许状态变化。但也有可能会经常出现一种编程语言资源过于受限(或受到其他容许),从而无法确实做这一点。
令人吃惊的是,在区块链脚本语言中,这种情况是常常再次发生的。充份的数据可扩展性和较低延后事实证明,plasma、地下通道以及其它几乎链外的layer 2协议都有一些根本性的弱点,这些弱点妨碍了它们几乎拷贝layer 1的功能。我在这里详尽辩论过这个问题(译者录:中文版在这里);总结是,这些协议必须有一种方式,来判决某些缔约方蓄意不获取其允诺提供数据的情况,而且,由于数据公布是不能全局检验的(除非你自己iTunes了数据,否则你不告诉何时公布数据),这些判决游戏在理论上并不平稳。地下通道和Plasma通过减少额外的假设,精妙地跨过了这种不稳定性,尤其是假设对于每一个状态,都有一个对该状态感兴趣的参与者没被错误地改动(一般来说是因为它代表了他们享有的币),因此可信任他们。
然而,这相比之下不是标准化的,例如,Uniswap这样的系统就包括了一个大型的“中心”合约,它可不任何人享有,因此它们无法有效地受到这种模式的维护。有一种方法可以解决问题这个问题,那就是一种在链上公布少量数据,但在链外继续执行计算出来的layer 2协议。如果数据被确保是能用的,那么在链外展开计算出来就是可以的,因为辨别"谁准确计算出来,谁错误计算"的游戏,在理论上是平稳的(或者几乎可以被SNARKs或STARKs替换),这就是ZK rollup和optimistic rollup背后的逻辑。如果一个区块链容许公布并确保相当大数据量的可用性,即使其计算能力依然十分受限,则区块链可反对这些layer-2协议,并构建高水平的可扩展性和功能性。
区块链必须处置和确保多少数量的数据?好吧,这各不相同你所拒绝TPS的程度。通过rollup方案,你可以将大多数活动传输到每笔交易大约10-20字节,因此每秒1 kb就可以为你获取50-100 TPS。
每秒1 mb 就可以为你获取50,000-100,000 TPS,依此类推。幸运地的是,互联网比特率之后在快速增长,而且其增长速度或许并没像摩尔计算出来定律那样在减缓,因此,在不减少计算出来阻抗的情况下减少数据的伸缩性,是区块链可采行的一条配套路径!还要留意的是,最重要的某种程度是数据容量,还要考虑到数据延后(即具备较低的区块时间)。像rollup这样的Layer 2协议(或者说Plasma)仅有在数据实际公布到链上时获取任何安全性确保,因此,数据可信地包括在链上(理想情况下为“最后确认”)所需的时间,是指Alice向Bob发送到缴付和Bob相信将包括此缴付之间所需的时间。基础层的区块时间,是为其包括的内容而设置的延迟时间。
这可以通过链上安全性存款(又称“bond”)来解决问题,但这种方法本身就不极致,因为蓄意方可以通过壮烈牺牲一笔存款来愚弄无限数量的有所不同人群。结论“维持 layer 1非常简单,用于layer 2来填补严重不足” 并不是解决问题区块链可扩展性和功能性问题的广泛答案,因为这种思路没考虑到layer 1区块链本身必需要具备充足的可扩展性和功能性,否则所谓的layer 2协议只是可靠的中介。
然而,显然在某个阶段,任何layer 1功能都可以读取layer 2,在许多情况下,这样做到是一个提高可升级性的好主意。因此,短期内我们必须分段研发layer 1与 layer 2 ,而长年则要更加注目layer 2的研发。
本文来源:博鱼APP官方网站-www.xjxrck.com