LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 区块链资产 > V神新作:基础层和功能性逃逸速度 Layer1和Layer2如何互补

V神新作:基础层和功能性逃逸速度 Layer1和Layer2如何互补

2019-12-27 区块链新金融 来源:区块链网络

在区块链领域有一种常见的思路:区块链应该尽量简单,因为它们是一种很难改变的基础设施,如果发生破坏就会造成很大的伤害。更复杂的功能应该以Layer 2协议的形式构建在其上,如状态通道、Plasma、rollup等等。

Layer 2应该是不断创新的地方,Layer 1应该是稳定和维护的地方,只有在紧急情况下才会有大的变化(例如:一组一次性的严重破坏更改,为了防止基础协议的密码学落入量子计算机的手中,这是可以的)。

这种层分离是一个非常好的想法,从长远来看,我强烈支持这个想法。然而,这种想法遗漏了一个重要的问题:Layer 1不能太强大,因为更强大意味着更复杂,因此更脆弱。但Layer 1也必须足够强大,以支持Layer 2。

而一旦第1层协议实现了一定程度的功能,我将称之为“功能逃逸速度”,那么,是的,您可以在不进一步更改基础的情况下在上面执行所有其他操作。但如果Layer 1不够强大,那么你可以用Layer 2系统来填补空白。但现实是,没有办法实际构建系统,没有重新引入Layer 1试图摆脱的一整套信任假设。本文将讨论构成“功能逃逸速度”的最小功能是什么。

一种编程语言

必须能够在链上执行自定义用户生成的脚本。这种编程语言可以很简单,而且实际上不需要高性能,但是它至少需要具备一定的功能级别,以便能够验证可能需要验证的任意内容。这很重要,因为要在其上构建的Layer 2协议需要某种验证逻辑,而这个验证逻辑必须由区块链以某种方式执行。

你可能听说过图灵完整性;“外行人的直觉(layman's intuition)”这个术语是,如果一种编程语言是图灵完备的,那么它可以做任何计算机理论上可以做的事情。任何一种图灵完备语言的程序都可以被翻译成任何其他图灵完备语言的等价程序。然而,我们只需要一些更简单的东西:可以将程序限制为没有循环,或者保证在特定数量的步骤中终止的程序。

丰富的有状态性(Rich Statefulness)

不仅编程语言的存在很重要,而且编程语言如何集成到区块链中也很重要。集成一门语言的一个更受限制的方法是,如果它用于纯粹的事务验证:当您将硬币发送到某个地址时,该地址代表一个计算机程序P,该程序将用于验证从该地址发送硬币的事务。也就是说,如果您发送一个散列为h的事务,那么您将提供一个签名S,区块链将运行P(h, S),如果输出为真,则该事务是有效的。通常,P是密码签名方案的验证器,但它可以执行更复杂的操作。特别要注意的是,在这个模型中,P不能访问事务的目的地。

然而,这种“纯函数”方法是不够的。这是因为这种纯粹的基于功能的方法不足以实现人们实际想要实现的多种第二层协议。它可以实现通道(以及基于通道的系统,如闪电网络),但是它不能实现具有更强属性的其他伸缩技术,它不能用于引导具有更复杂的状态概念的系统,等等。

给一个简单的例子纯功能范式不能做什么,考虑一个储蓄账户具有以下特点:有一个密钥k可以启动撤回,如果撤回启动,在接下来的24小时,相同密钥k可以取消撤回。如果提款在24小时内没有取消,那么任何人都可以“戳”这个账户来完成提款。目标是,如果钥匙被盗,账户持有人可以防止小偷提取资金。小偷当然可以阻止合法的所有者获得资金,但是这种攻击对小偷来说是无利可图的,所以他们可能不会为此费心(关于这种技术的解释,请参阅原始文件)。

链接:

http://hackingdistributed.com/2016/02/26/how-to-implement-secure-bitcoin-vaults/

不幸的是,这种技术不能仅用纯函数实现。问题是:需要有某种方式将硬币从“正常”状态移动到“等待取款”状态。但是程序P没有访问目标!因此,任何可以授权将硬币转移到等待取款状态的交易也可以授权立即偷取这些硬币。

改变硬币状态的能力,在不完全释放它们的情况下,对许多种类的应用程序来说是重要的,包括Layer 2协议。Plasma本身符合这种“授权、确定、取消”范式:必须批准从Plasma退出,然后有7天的质疑期,在这个质疑期内,如果提供了正确的证据,可以取消退出。Rollup也需要这个属性:rollup中的硬币必须由一个跟踪状态根R的程序控制,如果某个验证器P(R, R', data)返回TRUE,则从R变为R',但在这种情况下,只将状态变为R',而不释放硬币。

我所说的“丰富的有状态性”是指,这种授权状态更改的能力无需完全免费设置帐户中的所有硬币。它可以以多种方式实现,有些是基于utx的,但是如果没有它,区块链就不足以实现大多数Layer 2协议,不包括信任假设(例如。一组被集体信任来执行那些有丰富状态的程序的功能人员)。

注意:是的,我知道如果P有访问h的权限,那么你可以将目标地址作为S的一部分,并通过h来检查它,这样就可以限制状态的变化。但是有可能有一种编程语言资源太有限,或者在其他方面受到限制,无法真正做到这一点;令人惊讶的是,在区块链脚本语言中经常是这种情况。

充足的数据可扩展性和低延迟

原来,plasma和通道,以及其他完全脱离链的Layer 2协议有一些基本的弱点,这些弱点阻止它们完全复制Layer 1的功能。我在这里详细讲一下。

总结一下,这些协议需要有一种裁定的方式,当一些当事人恶意地不提供他们承诺提供的数据时,而且由于数据发布是不可全球验证的(除非你自己下载了数据,否则你不知道数据何时发布),这些裁决游戏在理论上并不稳定。通道和plasma通过增加额外的假设巧妙地绕过了这种不稳定性,特别是假设对于每一种状态,只有一个参与者对这个状态没有被错误修改感兴趣(通常是因为它代表了他们拥有的硬币),所以可以信任他代表这个状态战斗。然而,这远远不是通用的;例如,像Uniswap这样的系统包括一个大型的“中央”合同,它不属于任何人,因此它们不能有效地受到这种模式的保护。

有一种方法可以解决这个问题,那就是Layer 2协议,它在链上发布非常少量的数据,但是在链外执行计算。如果数据被保证是可用的,那么进行离线计算是可以的,因为判定谁计算正确谁计算错误的游戏在理论上是稳定的(或者可以完全被snark或STARKs所取代)。这就是ZK rollup和optimistic rollup背后的逻辑。如果区块链允许发布并保证相当大数量数据的可用性,即使它的计算能力仍然非常有限,那么区块链可以支持这些Layer 2协议并实现高水平的可伸缩性和功能。

区块链需要处理和保证多少数据?这取决于你想要什么TPS。使用rollup,您可以将大多数活动压缩到每个事务大约10-20个字节,因此1 kB/秒可以产生50-100个TPS,,1 MB/秒可以产生5 -10万个TPS,等等。幸运的是,互联网带宽继续快速增长,而且似乎没有像摩尔定律那样降低计算速度,因此,在不增加计算负载的情况下增加数据的可伸缩性是区块链非常可行的选择!

还要注意的是,重要的不仅仅是数据容量,还有数据延迟(即有低块时间)。Layer 2协议,如rollup(或Plasma),只在数据实际发布到链时提供任何安全保证;因此,数据可靠地包含在链上(理想情况下为“最终确定”)所需的时间是Alice向Bob发送付款和Bob确信将包含此付款之间所需的时间。

基础层的块时间设置了任何东西的延迟,其确认依赖于包括在基础层中的东西。这可以用链上安全存款(又称“债券”)来解决,代价是资本效率低下,但这种方法本质上是不完美的,因为恶意行为人可以通过牺牲一笔存款来欺骗无数不同的人。

结论

“保持Layer 1的简单,拥Layer 2来进行补充”并不是解决区块链可伸缩性和功能性问题的通用答案,因为它没有考虑到,Layer 1区块链本身必须具有足够的可伸缩性和功能,才能真正实现这种“基于顶层的构建”(除非所谓的“Layer 2协议”只是可信的中介)。

但是,在一定程度上,任何Layer 1的功能都可以复制到Layer 2,而且在很多情况下,这样做可以提高可升级性。因此,我们需要在短期内将Layer 1的开发与Layer 2的开发并行进行,并在长期内更多地关注Layer 2的开发。

作者:Vitalik Buterin

编译:共享财经Neo

—-

编译者/作者:区块链新金融

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...