17

Vitalik :区块链分层结构尚存在缺陷,短期需并行开发layer 1和layer 2

 4 years ago
source link: https://www.8btc.com/article/539384
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

写在前面:

以太坊联合创始人Vitalik Buterin在其最新发布的博文《 基础层和功能逃逸速度 》中提到,“保持 layer 1简单,使用layer 2来弥补不足” 并不是解决区块链可扩展性和功能性问题的普遍答案,因为这种思路没有考虑到layer 1区块链本身必须要具有足够的可扩展性和功能性,否则所谓的layer 2协议只是可信的中介。在这篇文章中,Vitalik提出了“功能逃逸速度”的概念,他还表示,短期内我们需要并行开发layer 1与 layer 2 ,而长期则要更关注layer 2的开发。

IrI3aqa.jpg!web

(图片来自:Flickr)

以下是译文:

区块链世界有这样一个常见的思路:区块链应该是最简单的,因为它们是很难改变的基础设施,如果发生了破坏,便会导致巨大的危害,并且应该以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的功能。我在 这里 详细讨论过这个问题(译者注:中文版在这里);总结是,这些协议需要有一种方式,来裁决某些缔约方恶意不提供其承诺提供数据的情况,而且,由于数据发布是不可全局验证的(除非你自己下载了数据,否则你不知道何时发布数据),这些裁决游戏在理论上并不稳定。

通道和Plasma通过增加额外的假设,巧妙地绕过了这种不稳定性,特别是假设对于每一个状态,都有一个对该状态感兴趣的参与者没有被错误地修改(通常是因为它代表了他们拥有的币),因此可信任他们。然而,这远远不是通用的,例如,Uniswap这样的系统就包含了一个大型的“中心”合约,它不由任何人拥有,因此它们不能有效地受到这种模式的保护。

有一种方法可以解决这个问题,那就是一种在链上发布少量数据,但在链外执行计算的layer 2协议。

如果数据被保证是可用的,那么在链外进行计算就是可以的,因为判断"谁正确计算,谁错误计算"的游戏,在理论上是稳定的(或者完全可以被 SNARKsSTARKs 代替),这就是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的开发。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK