1. 首页 > 快讯

一文读懂以太坊 Layer 2 扩容方案,状态通道、Plasma 和 Truebit 如何「求同存异」

原文标题:《以太坊「君士坦丁堡」升级将至 | 以太坊第 2 层扩容方案了解:状态通道(State Channels)、Plasma 和 Truebit》

以太坊即将迎来君士坦丁堡分叉,本次分叉将激活 5 个改进方案。其中编号为 1014 的改进方案添加了一个新的操作指令 CREATE2,是搭建以太坊状态通道框架的关键一步。

今天我们来聊一聊,状态通道是什么,想解决什么问题,与状态通道类似的以太坊第二层扩容方案还有哪些?

宾夕法尼亚州 Tunkhannock 地区铁路高架桥(cc)。古罗马的建筑理念在新时代的使用。

对于以太坊来说 2018 年是着力基础建设的一年。今年是初期用户来测试网络极限的一年,并将重新关注一些扩展以太坊的技术。

以太坊至今仍处于成长初期。 现今,它还不是安全的或者可扩展的。技术人员能够很清楚的认识到这一点。但是在去年,大量 ICO 所导致的炒作已经开始夸大目前的网络能力。构建一个安全,易于使用的去中心化互联网,受约于一套通用经济规范并被无数人使用,以太坊和 web3 提出的这一美好承诺就在眼前,但只有在建立关键基础设施的前提下才能够实现。

致力于构建这种基础架构和扩展以太坊性能的项目通常被称为 扩展方案(scaling solutions) 。这些项目有着不同的形式,并且通常相互兼容或互补。

在这篇长帖中,我想要深入讲解一种扩展方案:「off-chain」或「第二层(layer 2)」方案。

  • 首先,我们会全面的讨论下以太坊(以及所有公有的区块链)的扩展难题。
  • 其次,我们将介绍解决扩展难题的不同方法,区分「layer 1」和「layer 2」解决方案。
  • 最后,我们会深入了解第二层(layer 2)解决方案并详细友们它是怎样运作的,我们会谈及 状态通道(state channels),Plasma 和 Truebit。

本文的重点在于给读者全面而详细的讲解第二层(layer 2)解决方案的概念与工作原理。但我们不会深入研究代码或特定实现。相反,我们专注理解用于构建这些系统的经济机制以及所有第二层技术之间共同的思维模式。

1、公有区块链的扩展难题

首先,你要知道「扩展」不是一个单一的、特定的问题,它涉及了一系列难题,必须解决这些难题才能使以太坊对全球无数用户可用。

最常讨论的扩展难题是交易通量。目前,以太坊每秒可以处理大约 15 笔交易,而 Visa 的处理能力则大约在 45,000/tps。在去年,一些应用程序(比如 Cryptokitties 或偶尔的 ICO)已经足够流行以至于「放缓了」网络速度并提升了挖矿费用(gas) 的价格。

公有区块链(比如以太坊)最核心的缺陷是要求每一笔交易要被网络中的每一个节点处理。一笔支付,Cryptokitty 的诞生,部署新的 ERC20 合约,每一个以太坊区块链上发生的操作都必须由网络中的每个节点并行执行。这是设计理念所决定的,也正是由于这种设计理念才使得公有区块链具有权威性。节点不需要依赖其他节点来告诉他们当前区块链的当前状态,它们会自己计算出来。

这给以太坊的交易通量带来了根本性的限制:它不能超过我们对于单个节点的设计要求。。

我们可以要求每个节点做更多的工作,如果我们将块大小加倍(例如,区块 gas 限制),这意味着每个节点处理每个区块的工作量大致是之前的两倍。但是这样就减弱了系统的分散化理念:节点要做更多的工作意味着性能较差的计算机(比如用户设备)可能会从网络中退出,并且挖矿也会更向性能强大的节点运营者集中。

相反,我们需要一种方式使区块链做更多有用的事,但并不是增加单个节点的工作量。

从概念上来说,有两种可能解决这个问题的方法:

一 . 如果每个节点不必并行处理每个操作,会怎样?

第一种方法是抛弃我们的前提,如果我们可以构建一个每个节点不必处理每个操作的区块链,会怎样?如果网络分为两个部分代替原有网络,每一个部分都可以独立运行,会怎样?

A 部分可以处理一批交易,而同时 B 部分可以处理另一批。这实际上会使区块链的交易通量翻倍。因为我们的限制现在能够被两个节点同时处理。如果我们可以将区块链分为许多不同的部分,那么我们可以将区块链的通量提高很多倍。

这是分片(sharding)的思维模式,也是 Vitalik 的以太坊研究小组(Ethereum Research group)和其他社群正在研究的一种扩展方案。一个区块链被分割成叫做 shards 的不同部分,每一个部分都可以独立处理交易。因为分片是在以太坊的基础级协议中实现的,所以通常被也称为第一层(layer 1)扩展解决方案,如果你想了解更多有关分片的内容,请查看 extensive FAQ 和这篇博文。

二 . 如果我们能够从以太坊现有能力中压榨出更多有用的业务操作

第二种选择的方向则相反:不是增加以太坊区块链本身的容量,如果我们可以通过我们已经拥有的能力来做更多的事情,会怎样?在基础级别以太坊区块链的生产力都是相同的,但是实际上,我们可以做更多对人和应用程序有用的操作,比如交易,游戏中的状态更新,或者简单的计算。

这是「链下(off-chain)」技术背后的思维逻辑,比如 状态通道(state channels),Plasma 和 Truebit。虽然其中每个解决方案都在解决一个不同的问题,它们都通过执行「链下」操作而且能够不在以太坊区块链上运行的同时,仍然保证足够的安全性和权威性。

这些也被称为第二层(layer 2)解决方案,因为它们建立在以太坊主链「之上」。他们不需要更改基本级别的协议,相反,它们只是作为作为以太坊上的智能合约,用于与链下软件进行交互。

2、第二层(layer 2)解决方案是加密经济解决方案

在深入了解第二层解决方案的细节之前,了解下使其可行的潜在细节是非常重要的。

公有区块链的动力源泉在于加密经济合约。通过调整激励措施并用软件和加密措施保护激励,我们可以创建一个就内部状态达成一致的稳定计算机网络。这是中本聪的白皮书的关键内容,现已应用于许多不同的公有区块链(包括比特和以太坊)的设计中。

除了一些极端的情况下(比如 51% 攻击),加密经济合约给了我们一个稳固的核心 。我们知道链上(on-chain)操作(比如支付,智能合约)可以被看做是写入去执行。

第二层(layer 2)解决方案背后的关键是我们可以将这个稳固的内核用作锚点,一个可以附加其他经济机制的固定点。这种第二层经济机制可以扩展公有区块链的可用性。让我们脱离区块链进行交互操作,并且在需要的情况下仍能可靠地重归到核心链上。

这些构建在以太坊「之上」的层并不总是与链上操作具有相同的保障。但是,它们仍然具备足够的权威性,安全性以及可用性,特别是在终端略微减少时,我们能够更快的执行操作或维持更低的日常成本。

加密经济并不是随着中本聪的白皮书而开始或结束,它是最适合我们去学习与应用的技术主体。不仅存在于核心协议的设计中,也存在于第二层系统的设计中,它们扩展了底层区块链的功能性。

一 . 状态通道(State channels)

状态通道(State Channel)是一种用于执行交易和其他状态更新的「off-chain」技术。可是,一个状态通道「中」发生的事务仍保持了很高的安全性和权威性。如果出现任何问题,我们仍然可以选择重归到「稳固内核」上,它的权威性是建立在链上交易基础上。

大部分读者会熟悉存在多年的概念——支付通道(payment channel),它最近通过在比特币上借助闪电网络(lightning network)实现了。状态通道是支付通道泛化出来的形式,它不仅可用于支付,还可用于区块链上任意的「状态更新」,比如智能合约中的更改。在 2015 年,Jeff Coleman 第一次详细介绍了状态通道。

友们状态通道的运作方式的最佳方法就是来看一个样例。请记住这是一个概念性的友们,也就是说我们不会牵涉到具体实现的技术细节。

现在试想一下,爱丽丝和鲍勃想玩一场井字游戏,赢家可以获得一个以太币。实现这一目的的最简单方法就是在以太坊上创建一个智能合约,实现井字游戏规则并跟踪每个玩家的动作。每次玩家想要移动时,他们都会向合约发送一个交易。当一名玩家获胜时,根据规则 , 合约会付给赢家一个以太币。

这样是可行的,但是效率低下且速度慢。爱丽丝和鲍勃正在使用整个以太网络处理他们的游戏过程,这对于他们的需求来说有点不合时宜。他们每一步都需要支付挖矿费用(gas),并且还要在进行游戏的下一步之前都要等待挖矿完成。

不过,我们可以设计一个新的系统,它能使爱丽丝和鲍勃在井字游戏的过程中产生尽可能少的链上操作。
爱丽丝和鲍勃能够以链下的方式更新游戏状态,同时在需要时仍能将其重归到以太坊主链上。我们将这样一个系统称之为「状态通道」。

首先,我们在以太坊主链上创建一个能够理解井字游戏规则的智能合约「Judge」,同时它也能够认定爱丽丝和鲍勃是我们游戏中的两位玩家。该合约持有一个以太的奖励。

然后,爱丽丝和鲍勃开始玩游戏。爱丽丝创建并签署一个交易,它描述了她游戏的第一步,然后将其发送给鲍勃,鲍勃也签署了它,再将签名后的版本发回并保留一份副本。然后鲍勃也创建并签署一个描述他游戏中第一步的交易,并发送给爱丽丝,她也会签署它,再将其返回,并保留一份副本,他们每一次都会这样互相更新游戏的当前状态。每一笔交易都包含一个「随机数」,这样我们就可以直接知道游戏中走棋的顺序。

到目前为止,还没有发生任何链上的操作。爱丽丝和鲍勃只是通过互联网向彼此发送交易,但没有任何事情涉及到区块链。但是,所有交易都可以发送给 Judge 合约,也就是说,它们是有效的以太坊交易。你可以把这看做两人在彼此来回填写了一系列经过区块链认证的支票。实际上,并没有钱从银行中存入或取出,但是他俩都有一堆可以随时存入的支票。

当爱丽丝和鲍勃结束游戏时(可能是因为爱丽丝赢了),他们可以通过向 Judge 合约提交最终状态(比如,交易列表)来关闭该通道,这样就只用付一次交易费用。Judge 会确定双方都签署了这个「最终状态」,并等待一段时间来确保没人会对结果提出合理质疑,然后向爱丽丝支付一个以太币的奖励。

为什么我们需要设置一个让 Judge 合约等待一下的「质疑时间」。

假设,鲍勃并没有给 Judge 发送一份真实的最终状态,而是发送一份之前他赢了爱丽丝的状态。这时如果 Judge 是一个非智能合约,它自己根本无法得知这个状态是否是最近的状态。

而质疑时间给了爱丽丝一个机会能够证明鲍勃提交了虚假的游戏最终状态。如果有更近期的状态,她就会有一份已签名交易的副本,并可以将其提供给 Judge。Judge 可以通过检查随机数来判断爱丽丝的版本是否更新,然后鲍勃盗取胜利的企图就能被驳回了。

特性和限制

状态通道在许多应用中都很有用,它们对于在链上执行操作是一种严密的改进。但在决定应用程序是否适合被通道化时,请特别注意需要做出的一些特定折中:

  • 状态通道依赖于可靠性。如果爱丽丝在质疑时间内掉线了(也许是鲍勃不顾一切地想要赢下奖品,而破坏了她家的互联网连接),她可能无法在质疑时间内做出回应。但是,爱丽丝可以付款给其他人,让其保存一份她的状态副本,并作为她的权益代表,以保持系统的可靠性。
  • 状态通道在需要长期交换大量状态更新的情况下非常有用。这是因为部署 Judge 合约时创建一个通道会产生初始成本。但是一旦部署完成,该通道内每一个状态更新的成本都会很低
  • 状态通道最适于有一组明确参与者的应用程序。这是因为 Judge 合约必须始终知晓所有参与到给定通道的实体(比如,地址)。我们可以增加或删除用户,但是每次都需要更改合约。
  • 状态通道有很强的隐私属性。因为一切都发生在参与者之间的通道「内」,而不是公共广播并记录在链上。只有开启和关闭交易必须公开。
  • 状态通道的权威性是即时生效的。这意味着只要双方签署了一个状态更新,它可以被认为是最终状态。双方都有明确保证,在必要的情况下,他们可以将状态「执行」到链上。

Counterfactual 是一个能在以太坊上推行使用状态通道的框架。目标是使开发者可以在他们的项目中模块化地使用状态通道,而不需要成为状态通道专家。在
2018 年的第一季度发布技术细节文件。

另一个值得注意的针对以太坊的状态通道项目是 Raiden,目前正主要致力于构建支付通道网络,它使用了和
闪电网络类似的范式。这意味着你不必与想要交易的特定人员搭建通道。你可以与一个连接到更大型通道网络的实体架设一个单独的通道,这样你就能够向连接到同一网络的任何人付款而无需额外费用。

本文采摘于网络,不代表本站立场,转载联系作者并注明出处:http://www.fjxmta.com/kuaixun/3669.html

联系我们

在线咨询:点击这里给我发消息

微信号:wx123456