主页 > imtoken冷钱包官网 > 带你了解以太坊二层扩容方案:状态通道、Plasma和Truebit

带你了解以太坊二层扩容方案:状态通道、Plasma和Truebit

imtoken冷钱包官网 2023-05-18 05:29:32

译文来自:掘金翻译项目

译者:John JiangLA

校对:foxxnuaaZheaoli

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

对于以太坊来说,2018年是重点关注基础设施建设的一年。 今年是早期采用者测试网络极限并重新关注一些扩展以太坊的技术的一年。

以太坊仍处于起步阶段。 如今,它既不安全也不可扩展。 技术人员很清楚这一点。 但在去年,众多 ICO 产生的炒作已经开始夸大当前的网络能力。 建立一个安全、易于使用的去中心化互联网,由一套共同的经济规范管理并被无数人使用,以太坊和 web3 的美好承诺就在这里,但只有关键基础设施到位才能实现.

致力于构建此基础设施和扩展以太坊性能的项目通常被称为扩展解决方案。 这些计划采用不同的形式,并且通常相互兼容或互补。

在这篇长篇文章中,我想深入探讨一种扩展解决方案:“链下”或“第 2 层”解决方案。

首先,我们将全面讨论以太坊(以及所有公共区块链)的扩展挑战。

其次,我们描述了解决扩展挑战的不同方法,区分“第 1 层”和“第 2 层”解决方案。

最后,我们将深入探讨第 2 层解决方案并详细解释它的工作原理,我们将讨论状态通道、Plasma 和 Truebit。

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

1. 公有链的扩容问题

首先,你要知道“扩容”不是一个单一的、具体的问题,它涉及到一系列必须解决的难题,才能让以太坊为全球无数用户所用。

最常讨论的扩展挑战是交易吞吐量。 目前,以太坊每秒可处理约 15 笔交易,而 Visa 的处理能力约为 45,000/tps。 去年,一些应用程序(例如 Cryptokitties 或偶尔出现的 ICO)变得流行到足以“减慢”网络速度并提高挖矿费用(gas)的价格。

公共区块链(如以太坊)的核心缺陷是每笔交易都需要由网络中的每个节点处理。 支付、Cryptokitty 的诞生、新 ERC20 合约的部署,以及以太坊区块链上发生的每一项操作,都必须由网络中的每个节点并行执行。 这是设计理念决定的,也正是因为这样的设计理念,公链才是权威的。 节点不需要依赖其他节点来告诉他们区块链的当前状态,他们自己弄清楚了。

这对以太坊的交易吞吐量设置了一个基本限制:它不能超过我们对单个节点的设计要求。 .

以太坊第二层_以太坊联盟和以太坊的关系_sitemytokencap.com 以太以太坊价格

我们可以要求每个节点做更多的工作,如果我们将块大小加倍(例如块 gas 限制),这意味着每个节点处理每个块的工作量大约是原来的两倍。 但这削弱了系统去中心化的思想:节点更多的工作意味着功能较弱的计算机(例如用户设备)可能会从网络中退出以太坊第二层,而挖矿将受到更强大的节点运营商集中的青睐。

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

从概念上讲以太坊第二层,这个问题有两种可能的解决方案:

1. 如果每个节点不必并行处理每个操作怎么办?

第一种方法抛弃了我们的前提,如果我们可以构建一个每个节点都不必处理每个操作的区块链怎么办? 如果把网络分成两部分来代替原来的网络,每一部分都可以独立运行呢?

A 部分可以处理一批交易,而 B 部分可以处理另一批交易。 这有效地使区块链的交易吞吐量翻了一番。 由于我们的限制,它现在可以由两个节点同时处理。 如果我们可以将区块链分成许多不同的部分,那么我们可以将区块链的吞吐量提高很多倍。

这就是分片的理念,这是 Vitalik 的以太坊研究小组和其他人正在研究的一种扩展解决方案。 区块链分为不同的部分,称为碎片,每个部分都可以独立处理交易。 因为分片是在以太坊的底层协议中实现的,所以它通常被称为第一层(layer 1)扩展方案。 如果您想了解有关分片的更多信息,请查看广泛的常见问题解答和此博客文章。

2. 如果我们能够从以太坊现有的能力中挤出更多有用的商业运​​作

第二种选择则相反:与其增加以太坊区块链本身的容量,不如利用现有容量做更多事情会怎样? 以太坊区块链在基础层面的生产力是一样的,但在现实中,我们可以做更多对人类和应用程序有用的操作,比如交易,游戏中的状态更新,或者简单的计算。

这就是状态通道、Plasma 和 Truebit 等“链下”技术背后的思考。 虽然这些解决方案中的每一个都在解决不同的问题,但它们都在“链下”运行,并且能够在以太坊区块链之外运行,同时仍然保持足够的安全性和权威性。

这些也被称为第 2 层解决方案,因为它们构建在以太坊主链的“顶部”。 它们不需要从根本上改变协议,它们只是作为以太坊上的智能合约与链下软件进行交互。

2. Layer 2 解决方案是加密经济解决方案

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

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

除了一些极端情况(比如 51% 攻击),加密经济合约给了我们一个坚实的内核。 我们知道,链上操作(比如支付、智能合约)可以看做是写出来执行的。

Layer 2 解决方案背后的关键是我们可以使用这个坚实的核心作为锚点,其他经济机制可以附加到的固定点。 这种第二层经济机制可以扩展公共区块链的可用性。 让我们在区块链之外进行互操作,并在需要时仍然可靠地回到核心链上。

sitemytokencap.com 以太以太坊价格_以太坊联盟和以太坊的关系_以太坊第二层

这些建立在以太坊“之上”的层并不总是具有与链上操作相同的保证。 但是,它们仍然具有足够的权威性、安全性和可用性,尤其是在端点略有减少的情况下,我们可以更快地执行操作或保持较​​低的管理成本。

加密经济不以中本聪的白皮书开始,也不以白皮书结束,它是最适合我们学习和应用的技术课题。 不仅在核心协议的设计上,在扩展底层区块链功能的二层系统设计上也同样如此。

1.状态通道

状态通道是一种用于执行交易和其他状态更新的“链下”技术。 但是,“在”状态通道中发生的交易仍然保持高级别的安全性和权威性。 如果出现任何问题,我们仍然可以选择恢复到“实体核心”,其权限基于链上交易。

大部分读者都会熟悉一个存在多年的概念——支付通道(payment channel),最近借助闪电网络(lightning network)在比特币上实现。 状态通道是支付通道的一般形式。 它不仅可以用于支付,还可以用于区块链上的任意“状态更新”,例如智能合约的变更。 2015 年,Jeff Coleman 首次详述了状态通道。

解释状态通道如何工作的最好方法是看一个例子。 请记住,这是一个概念性的解释,这意味着我们不会深入实施的技术细节。

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

这可行,但效率低且速度慢。 Alice 和 Bob 正在使用整个以太网网络进行游戏,这对于他们的需求来说有点异常。 他们每一步都需要支付挖矿费(gas),还要等待挖矿完成才能进行下一步的游戏。

然而,我们可以设计一个新系统,让 Alice 和 Bob 能够以尽可能少的链上操作来玩井字游戏。 Alice 和 Bob 能够在链下更新游戏状态,同时在需要时仍将其带回以太坊主链。 我们称这样的系统为“状态通道”。

首先,我们在以太坊主链上创建一个智能合约“Judge”,它可以理解井字游戏的规则,也可以将 Alice 和 Bob 识别为我们游戏中的两个玩家。 合约持有一个以太币的奖励。

然后,Alice 和 Bob 开始玩游戏。 爱丽丝创建并签署了描述她游戏第一步的交易,将其发送给鲍勃,鲍勃对其进行签名,将签名版本发回并保留一份副本。 然后 Bob 还创建并签署了一个描述他在游戏中的第一步的交易,将其发送给 Alice,她对其进行签名,发回并保留一份副本,并且他们每次更新彼此的游戏当前状态。 每笔交易都包含一个“随机数”,这样我们就可以直接知道游戏中的走法顺序。

到目前为止,还没有发生任何链上操作。 Alice 和 Bob 只是通过互联网互相发送交易,但没有任何东西触及区块链。 但是,所有交易都可以发送到 Judge 合约,即它们是有效的以太坊交易。 你可以把这想象成两个人在彼此之间来回编写一系列经过区块链验证的支票。 实际上并没有钱从银行存入或取出,但他们都有一摞支票准备存入。

当 Alice 和 Bob 结束游戏时(可能是因为 Alice 赢了),他们可以通过将最终状态(例如交易列表)提交给 Judge 合约来关闭通道,从而只支付一次交易费用。 法官会确保双方都签署了这个“最终状态”,等待一段时间以确保没有人可以合理地质疑结果,然后支付给爱丽丝一个以太币作为奖励。

为什么要给Judge合约设置一个“提问时间”等待

假设,Bob 没有向 Judge 发送真实最终状态的副本,而是发送了他之前赢得 Alice 的状态的副本。 这时候如果Judge是一个非智能合约,它是没有办法知道这个状态是不是最新的状态。

挑战时间让 Alice 有机会证明 Bob 提交了错误的游戏结束状态。 如果有更新的状态,她有一份已签名交易的副本,可以将其提供给法官。 法官可以通过检查随机数来判断爱丽丝的版本是否更新,并且可以驳回鲍勃窃取胜利的企图。

sitemytokencap.com 以太以太坊价格_以太坊联盟和以太坊的关系_以太坊第二层

特点和局限性

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

状态通道取决于可靠性。 如果 Alice 在挑战时间内掉线(也许 Bob 急于赢得奖品,破坏了她家里的互联网连接),她可能无法在挑战时间内响应。 然而,Alice 可以付钱给其他人来保留她的状态副本并代表她的利益,以维护系统的可靠性。

状态通道在需要长时间交换大量状态更新的情况下很有用。 这是由于部署 Judge 合约时创建通道的初始成本。但是一旦部署完成,通道中每次状态更新的成本将非常低

状态通道最适合具有一组明确参与者的应用程序。 这是因为 Judge 合约必须始终了解参与给定通道的所有实体(例如,地址)。 我们可以添加或删除用户,但每次我们都需要更改合约。

状态通道具有很强的隐私属性。 因为一切都发生在参与者之间的“通道内”,而不是在链上公开广播和记录。 只有开启和关闭的交易必须公开。

状态通道的权限是即时的。 这意味着一旦双方都签署了状态更新,它就可以被认为是最终的。 双方都明确保证他们可以在必要时“执行”链上状态。

我们的 L4 团队正在致力于创建 Counterfactual,这是一个在以太坊上实施状态通道的框架。 我们的目标是让开发人员能够在他们的项目中模块化地使用状态通道,而无需成为状态通道专家。 您可以在此处了解有关该项目的更多信息。 我们将在 2018 年第一季度发布技术细节文件。

以太坊另一个值得注意的状态通道项目是 Raiden,它目前专注于构建支付通道网络,它使用与闪电网络类似的范例。 这意味着您不必与特定的人进行交易。 您可以设置一个单独的渠道,让一个实体连接到更大的渠道网络,这样您就可以向连接到同一网络的任何人支付费用,而无需支付额外费用。

除了 Counterfactual 和 Raiden,以太坊上还有几个特定于应用程序的通道实现。 例如,Funfair 为他们的去中心化赌博平台构建了一组他们称之为“命运通道”的状态通道,SpainChain 为成人项目参与者构建了一组单向支付通道(他们仍在使用状态通道进行 ICO),以及 Horizo​​n Games 还在他们的第一个基于以太坊的游戏中使用了状态通道。

2.等离子

2017 年 8 月 11 日,Vitalik Buterin 和 Joseph Poon 发表了一份题为 Plasma:自治智能合约的文件。 本文档介绍了一项新技术,使以太坊能够每秒处理比目前更多的交易。

与状态通道一样,Plasma 是一种管理链下交易的技术,同时依赖于底层以太坊区块链的安全性。 但是 Plasma 采取了一种新方法,通过创建附加到“主”以太坊区块链的“子”区块链。 这些子链可以依次产生自己的子链,可以依次重复。

结果是我们可以在子链级别执行许多复杂的操作,与成千上万的用户一起运行成熟的应用程序,同时保持与以太坊主链的最小交互。 Plasma 子链可以更快地迁移并产生更低的交易费用,因为不需要在整个以太坊区块链上重复对它们的操作。

plasma.io/plasma.pdf

要了解 Plasma 的工作原理,让我们看一个如何使用它的示例。

以太坊联盟和以太坊的关系_以太坊第二层_sitemytokencap.com 以太以太坊价格

想象一下,您正在创建一个基于以太坊的纸牌交易游戏。 这些卡牌是一些 ERC 721 不可替代的代币(比如 Cryptokitties),但是有一些特性和属性可以让玩家互相对战,有点像炉石传说或者万智牌。 这些类型的复杂操作在链上执行的成本非常高,因此您决定在您的应用程序中使用 Plasma 作为替代方案。

首先,我们在以太坊主链上创建一系列智能合约,可以作为 Plasma 子链的“根节点”。 Plasma 根节点包含了子链的一些基本“状态交易规则”(如“交易不能消费已经消费过的资产”),同时也记录了子链状态的哈希值,并建立了一个方法允许用户在以太坊主链上进行交易。 用于在子链之间转移资产的“桥梁”服务。

然后,创建我们的子链。 子链可以有自己的共识算法,在这个例子中我们假设它使用权威证明(PoA),这是一种依赖于受信任的区块生产者(例如验证者)的简单共识机制。 在“工作量证明”系统中,区块生产者和矿工的功能相似,它们都是接收交易、形成区块并收取交易费用的节点。 为了简单起见,我们假设您(即创建游戏的公司)是唯一创建区块的实体,即您的公司运营多个节点,这些节点是子链的区块生产者。

一旦子链创建并生效,区块生产者将定期向根节点合约发送提交。 也就是说,他们实际上是在说“我的提交 X 是子链中当前最新的区块”。 这些提交记录在链的 Plasma 根节点中,作为子链中交易的证明。

现在子链也准备好了,我们可以创建卡牌交易游戏的基本组件了。 这些卡片遵循 ERC721,在以太坊主链上初始化,然后由 Plasma 根节点转移到子链上。 这里介绍一个重点:Plasma 可以扩展我们与基于区块链的数字资产的交互,但这些资产首先应该由以太坊主链创建。 然后,我们将实际的游戏应用以智能合约的形式部署到子链上,让子链包含游戏的所有逻辑和规则。

当用户想玩游戏时,只需要与子链进行交互即可。 他们可以持有财产(ERC721 卡)、购买财产并将其兑换成 ETH、与其他用户对战以及进行其他游戏内操作,所有这些都无需与主链交互。 由于只有少数节点(例如,区块生产者)需要处理交易,因此费用要低得多,操作也更快。

但这种模式安全吗?

通过将操作从主链迁移到子链,我们显然可以执行更多操作。 但它安全吗? 子链上的交易是否具有权威性? 毕竟,我们刚刚描述的系统只有一个中央实体控制子链的区块生产。 这不是中心化的吗? 公司不会随时窃取您的资产或拿走您的收藏卡吗?

简单来说,Plasma 做出了基本承诺,即您可以随时将资产提回到主链,即使是在子链中的单个实体完全控制区块生产的场景中。 如果一个区块生产者开始表现出敌意,最坏的情况下它只会迫使你离开子链。

让我们看看区块生产者行为不佳的几种方式,以及 Plasma 如何处理这些情况。

首先,假设一个区块生产者试图通过说谎来欺骗你,他们可以创建一个假的新区块,声称你的资产已被他们接管。 由于他们是唯一的区块生产者,他们可以自由地引入不遵循区块链规则的新区块。 与其他区块一样,他们也必须将这个区块存在的证据作为对 Plasma 根节点合约的提交。

如前所述,用户拥有可以随时将资产提现至主链的基本保障。 在这种情况下,用户(或代表他们利益的应用程序)会检测到这种盗窃企图,并在区块生产者尝试使用他们“被盗”的资产之前退出主链。

Plasma 还创建了一种机制来防止利用欺诈。 Plasma 包含一种机制,任何人(包括你)都可以向根节点合约发出欺诈证明,从而证明区块生产者作弊。 这个欺诈证明会包含前一个区块的信息,让我们在子链中遵循状态交易规则,错误的区块无法正确连接到前一个状态。 如果欺诈被确认,则子链回滚到前一个区块。 更好的是,我们还建立了一个系统,检查错误区块的区块生产者会受到惩罚,这些区块生产者会失去链上存款。

plasma.io/plasma.pdf

但是提交欺诈证明需要访问底层数据,即需要使用之前的实际历史区块来证明欺诈。 如果块生产者不共享先前块的信息以防止爱丽丝能够向根节点合约提交欺诈性证明怎么办?

在这种情况下,这个方案是为 Alice 收回资产并离开子链而准备的。 本质上,爱丽丝向根节点合约提交了一份“欺诈证明”。 在任何人都可以质疑证明的延迟期之后(例如,为了证明后来的某个合法区块证明她确实花费了资产),爱丽丝的资产将被移回以太坊主链。

以太坊联盟和以太坊的关系_sitemytokencap.com 以太以太坊价格_以太坊第二层

plasma.io/plasma.pdf

最后,区块生产者可以监控子链中的用户。 如果区块生产者愿意,他们可以简单地不在区块中包含实际交易,从而有效地阻止用户在子链上执行任何操作。 如上所述,这个解决方案再次直接将我们所有的资产返回到以太坊主链。

然而,提取资产也有其自身的风险。 其中一个问题是,如果使用该子链的所有用户都必须同时提取资产,会发生什么情况。 在如此大笔提款的情况下,以太坊主链上可能没有足够的容量来处理挑战期间所有人的交易,这意味着用户可能会损失资金。 尽管有许多可能的技术可以防止这种情况发生,例如,通过延长挑战时间来适应提取资产的需要。

值得注意的是,并不是所有的区块生产者都由一个实体控制,这只是我们案例中的一个极端案例。 我们可以创建子链,其中块生产者分布在不同的实体中,即像公共块一样真正去中心化。 在这些情况下,区块链生产者以上述方式进行交互的风险较小,用户必须将资产转移回以太坊主链的风险也较小。

既然我们已经介绍了状态通道和 Plasma,有几点值得比较。

它们之间的一个区别是,当状态通道中的所有利益相关方都同意退出时,可以立即退出。 如果 Alice 和 Bob 同意关闭通道并提取资金。 只要他们都同意最终状态,他们就可以立即获得他们的资产。 这在 Plasma 上是不可能的,如上所述,用户在提取资产的过程中必须包含一个挑战时间。

状态通道的每笔交易成本更低,而且比 Plasma 更快。 这意味着我们可以在 Plasma 子链上建立状态通道。 例如,两个用户正在进行一系列小额交易的应用程序。 在子链上设置状态通道应该比直接在子链上执行每笔交易更便宜、更快。

最后需要注意的是,这部分的解释遗漏了很多细节。 Plasma 本身还处于起步阶段。 如果您有兴趣了解 Plasma 今天发生的事情,请查看 Vitalik 最近提出的“最小可行 Plasma”(即抽象出 Plasma 实施)的建议。 台湾的一个团队正在做这方面的工作,可以在这个分叉中查看。 OmiseGo 正在研究他们的分布式事务实现,他们在这里发布了最新进展。

三、 真比特

Truebit 是一项帮助以太坊在链下执行繁重或复杂计算的技术。 它对于提高以太坊区块链的总交易吞吐量更为有效,这使其不同于状态通道和 Plasma。 正如我们在开篇部分所讨论的那样,扩展是一个多方面的难题,需要的不仅仅是更高的交易吞吐量。 Truebit 不会让我们做更多的交易,但它会让基于以太坊的应用程序处理更复杂的交易,并且仍然得到主链的验证。

这使我们能够在以太坊应用程序上执行有用的操作,这些操作在计算上太昂贵而无法在链上执行。 例如,验证来自其他区块链的简单支付验证(SPV)证明,以太坊智能合约可以通过它“检查”交易是否发生在另一条链(例如比特币或狗狗币)上。

让我们看一个例子。 假设您有一些昂贵的计算(如 SPV 证明)需要作为以太坊应用程序的一部分执行。 由于 SPV 证明的计算成本太高,您不能简单地将它们作为智能合约的一部分包含在以太坊主链上。 请记住,在以太坊上执行任何计算都非常昂贵,因为每个节点都必须并行执行操作。 以太坊中的区块有最高费用(gas)限制,用于限制合并区块中所有交易所能完成的计算总量。 然而,SPV 证明的计算量非常大,即使它是其中唯一的交易,它仍然需要数倍于单个区块的全部费用限制。

相反,你只需要支付少量费用就可以完成链下计算。 您付钱做计算的人称为求解器。

首先,求解器向智能合约支付保证金。 然后,您向求解器提供计算的详细描述,它们运行计算并返回结果。 如果结果正确(通常在一秒钟内发生),他们的押金将被退还。 如果解决者被证明执行不正确(例如,他们作弊或犯了错误),他们将失去押金。

但是我们如何判断结果是否正确呢? Truebit 使用一种称为“验证游戏”的经济机制。 本质上,我们创建了一种称为挑战者的激励机制来检查求解器的结果。 如果挑战者可以通过验证游戏证明解决者提交了错误的结果,那么他们就可以领取奖励,而解决者将失去他们的保证金。

由于验证游戏是在链上执行的,它不能简单地计算结果(这会破坏整个系统的目的,如果可以在链上进行计算,我们就不需要 Truebit)。 相反,我们要求解决者和挑战者确定他们不同意的具体操作。 实际上,我们把双方都逼到了一个角落,找出了导致他们对结果产生分歧的具体代码行。

Truebit 的简化概念图。

一旦确定了特定的操作,它就小到可以由以太坊主链执行。 然后我们通过以太坊智能合约执行此操作,该合约一劳永逸地解决哪一方说的是真话,哪一方是谎言或错误。