【平兄译文】了解以太坊的Layer 2扩容方案Ⅱ:状态通道

【本文由赞我(zaneds.com)独家冠名】


本文翻译自:Making Sense of Ethereum’s Layer 2 Scaling Solutions: State Channels, Plasma, and Truebit

原文作者:Josh Stark

译者:区块链中文字幕组 平兄


文章简介:作者简单地概述了目前以太坊的扩容难题和Layer 1 和 Layer 2 扩容方案之间的区别,后面针对 Layer 2扩容方案的三个项目 State Channels , Plasma 以及 Truebit 进行详细介绍。此文截止20180710已经在Medium上获得了罕见的8.1K赞, Vitalik Buterin,Jon Choi,Matt Condon,Chris Dixon,Hudson Jameson,Denis Nazarov 和 Jesse Walden 也对原文早期草稿提供了评论意见。


目录

  1. 公有链的扩容难题
    1.1. 如果每个节点不需要并行地处理所有操作呢?
    1.2.如果我们能使用以太坊现有的性能挤出更多的有用操作呢?
  2. Layer 2 是加密经济解决方案
    2.1. 状态通道
    2.2. Plasma
    2.3.Truebit
  3. 总结

Layer 2 是加密经济解决方案

在深入具体的Layer 2解决方案之前,我们有必要了解下使它们得以实现的底层思想。

公链的核心在于加密经济共识 。通过仔细地调整激励并通过软件和加密技术进行保障,我们可以打造一个内部状态达成可靠一致性的计算机网络。这就是中本聪白皮书 的重要思想,现在已经被用于许多公链的设计,包括比特币和以太坊。

加密经济共识让全网节点基于共识机制达成共识,除非像51%攻击这类极端的事情发生,否认我们都知道链上的操作都会如期完成。

Layer 2方案的思想就是,我们可以利用主链的这种确定性作为一个锚,我们可以通过锚定主链上的某个点来附加额外的加密经济机制。Layer 2的经济机制可以用于向外拓展公链的效用,可以让我们在于区块链交互的同时,仍可以可靠地引用主链的作为参考,如果有必要的话。

Layer 2并不会有如同链上操作一样的保证,但他们依然有足够的一致性和安全性以保证可用性,特别是有时候会牺牲少许的一致性以求更快的操作或者更低的开销成本。

加密经济学并不是以中本聪的白皮书为开始和结束的——这是一种我们正在学习应用的技术。 不只是在核心协议的设计上,还有在用于拓展底层区块链功能的Layer 2系统的设计上。

State channels (状态通道)

状态通道是一种用于执行交易和“链下”状态更新的技术。虽说是“链下”技术,但在状态通道内部执行的交易仍然具备高度的安全性和最终一致性:如果发生了错误,我们仍然可以追溯回链上的具体交易进行验证。

大多数读者可能对支付通道的概念比较熟悉,这个概念在几年前就已提出,比特币的l闪电网络 就是支付通道的一种实现。状态通道是一种更通用的支付通道形式,它们不仅可以用于支付,还可以用于链上的任意"状态更新",例如智能合约中的变化。Jeff Coleman 是在2015年首次详细地描述了状态通道。

解释状态通道如何工作最好的方式是举例说明。但要记住,这只是一个概念性的解释,也就是说我们不会涉及具体实现的技术细节。

想象一下,平兄和你准备玩井字游戏,嬴着可以获得1ETH。最天真的做法是在以太坊上写一个智能合约来实现井字游戏的规则并且跟踪玩家的每一步移动。每当玩家想要移动时,他们就要发送一个事务给智能合约。当赢家出现时,智能合约根据规则支付赢家1ETH。

虽然这可行,但是十分低效和缓慢。我们使用了整个以太坊网络来处理我们的游戏,这实在是大材小用了。同时每次移动我们都需要支付手续费,并且还要等待事务打包出块后才能走下一步。

相反,我们可以设计一个系统,尽可以让游戏过程少涉及链上操作。我们可以链下更新游戏的状态,同时可以保证可以回滚到以太坊主链状态,如果有必要的话。我们将这个系统称为“状态通道”。

首先,我们在以太坊主网编写一个智能合约,这里称为“仲裁”,"仲裁"了解井字游戏的规则,能够识别平兄和你作为游戏中的玩家。"仲裁"持有1ETH的游戏奖励。

然后,我们开始比赛。平兄生成了一个代表自己首次移动的事务并对其进行签名,然后发送给你,你也对这个事务进行签名后发送会给我,并留一份副本给你自己。接着你生成了一个代表你自己首次移动的事务并对其进行签名,然后发送给平兄,平兄对其进行签名并留一份副本给自己。每一次,他们都在更新游戏的当前状态。每个交易都包含一个“随机数时间戳(nonce)”,用于区分每一步移动的顺序。

目前,这些操作都不是在链上发生的。平兄和你只是简单地通过互联网彼此发送交易事务,但没有任何东西涉及到区块链。但是,所有的事务都会发送给“仲裁”合约,也就是说,它们是有效的以太坊交易。你可以把这想象为两个人之间来回写了一系列基于区块链验证的支票。虽然实际上并没有从银行取钱或者存钱,但我们每个人都拥有一对支票,随时都可以到银行兑现存储。

当游戏结束了—或者是因为平兄赢了,我们可以通过提交最终的状态(例如:一系列交易)给“仲裁”合约来关闭通道,只需要支付单次的手续费。“仲裁”确保这个“最终状态”是双方都已经签名的了,并且等待一段时间(异议期)确保没有反对这个结果的合理异议,然后支付1ETH比赛奖励给平兄。

为什么我们需要让仲裁合约等待一段“异议期”呢?

假如你并不没有将真正的最后状态发送给仲裁,而是发送了你领先平兄的一个旧版本状态。仲裁只是一份愚蠢的合约,它自己并不知道哪个是最新的状态。

这个异议期就给了平兄一个机会向仲裁合约证明你谎报了游戏的最终状态。如果确实存在更新的状态,那么平兄肯定会有一份签名了的副本,那么我就可以将它提交给仲裁合约了。仲裁合约通过检查随机数时间戳能够识别出平兄的版本是更新,那么你的骗局就被识破了。(译者注:这个例子大家不要介意哈!)

特性和局限

状态通道在很多应用中都十分有用,对于链上操作连说是一种非常大的提升。然而,当在决定一个应用是否适合使用状态通道时,我们有必药明白,这其中所作出的特殊权衡。

  • 状态通道依赖于有效性。如果平兄在准备向仲裁合约发起异议时,断网了(可能是因为你,为了得逞破坏了我的网络连接),那么我可能没办法在异议期结束前提交异议。但是,平兄可以付费让其他人以我的名义保留我的状态并维持有效性。

  • 状态通道十分适用于需要长期进行多种状态更新交换的场景。因为在部署仲裁合约以及创建通道时需要一定的初始成本。但后续在通道中的状态更新的边际成本是极其低的。

  • 状态通道的最佳适用DApp类型是那种具有确定参与者的应用。这是因为仲裁合约必须始终知道作为给定通道的一部分的实体(即地址)。我们可以添加和移除参与者,每一次都需要修改合约。

  • 状态通道具备很强的隐私特性。因为所有事情都是发生在参与者之间的通道内,而不是公开广播和记录在链上。只有开发和关闭通道交易必须是公开的。

  • 状态通道具备即时的最终一致性,也就意味着,只要双方对状态更新签名,就可以认为是最终状态了。双方都会有非常强的保障,如果有必要,他们可以“执行”链上的状态。

以太坊生态上另一个有名的状态通道项目是雷电网络 Raiden ,其目前专注于构建一个支付通道网络,使用跟闪电网络 lightning network 类似的范式。这就意味着,我们不需要特意为了与某人交易而开通一条单独的通道,我们只需要与一个实体连接开通一条单独通道,这个实体与网络中的大部分通道都相连,这样我们就可以向连接同个网络的任何人发起支付交易而不需要额外的手续费。

(未完待续)

区块链中文字幕组

致力于前沿区块链知识和信息的传播,为中国融入全球区块链世界贡献一份力量。

如果您懂一些技术、懂一些英文,欢迎加入我们,加微信号:w1791520555。

点击查看项目GITHUB,及更多的译文...

本文译者简介

平兄 程序员,区块链技术爱好者,欢迎加微信号: qwer82261615P

欢迎关注译者币乎 平兄

本文由币乎社区(bihu.com)内容支持计划赞助。

早赞声明:为方便早赞、避免乱赞,“BH好文好报群”为点赞者、写作者牵线搭桥,实行“先审后赞、定时发表”的规则,也让作品脱颖而出、速登热门!本文授权BH好文好报群摘编、转载以及相关转授权推文行为,加群微信:we01230123(天平)。

如有侵权,请联系译者

版权所有,转载需完整注明以上内容。


你可能感兴趣的:(【平兄译文】了解以太坊的Layer 2扩容方案Ⅱ:状态通道)