以太坊第2层扩展解决方案:状态通道、等离子体和Truebit
2018-05-06 15:44 文章来自:IFTNews 收藏(0) 阅读(2680) 评论(1)


IFTNews区块链报道:对以太坊来说,2018年是基础设施年。今年今年是早期采用测试网络极限的一年,重点关注用于扩展以太网的技术。

以太坊仍处于初级阶段。今天,它不安全也不具有可扩展性。任何与该技术紧密合作的人都能很好地理解这一点。但在过去的一年里,ICO驱动的炒作已经开始夸大网络的现有功能。以太坊和web3的承诺——一种安全、易于使用的分散式互联网,由一套共同的经济协议约束,并被数十亿人使用——仍在地平线上,直到关键的基础设施建成后才会实现。

构建这个基础设施和扩展以太坊能力的项目通常被称为扩展解决方案。它们有许多不同的形式,并且常常互相兼容或互补。

在这篇长文章中,我想深入探讨一种可伸缩的解决方案: “脱链”或“二层”解决方案。首先,我们将讨论以太坊(以及所有公共区块链)的扩展挑战。

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

第三,我们将深入研究第2层解决方案并解释它们是如何工作的——具体来说,我们将讨论状态通道、等离子体和Truebit。

这篇文章的重点是让读者对第二层解决方案的工作方式有一个全面而详细的概念理解。但我们不会深入研究代码或特定的实现。相反,我们关注于理解用于构建这些系统的经济机制,以及所有第2层技术之间共同的共同见解。

1.公共区块链的规模化挑战

首先,重要的是要理解“缩放”不是一个单一的、特定的问题。它指的是必须克服的一系列挑战,使以太会对全球数十亿人的用户群有用。

最常见的扩展挑战是事务吞吐量。目前,以太坊每秒可以处理大约15次事务,而相比之下,签证流程大约为45,000/tps。在过去的一年里,一些应用程序——比如加密技术,或者偶尔的ICO——已经足够普及,可以“减缓”网络并提高gas价格。

核心限制是像以太坊这样的公共区块链要求每一个交易都由网络中的每一个节点来处理。每一个发生在以太坊区块链上的操作——支付,一个密码基的诞生,一个新的ERC20合同的部署——都必须由网络中的每个节点并行执行。这是设计——这是公共区块链权威的一部分。节点不必依赖于其他人来告诉他们区块链的当前状态是什么——他们自己搞清楚。

这对以太坊的事务吞吐量造成了一个基本的限制:它不能比我们从单个节点所要求的要高。

我们可以要求每个单独的节点做更多的工作。如果我们将块大小增加一倍(即:这意味着每个节点的工作量大约是每个区块的两倍。但这是以分散的成本为代价的:从节点上要求更多的工作意味着功能较弱的计算机(如消费设备)可能会从网络中退出,而在强大的节点操作中,挖掘变得更加集中。

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

从概念上讲,我们有两种方法来解决这个问题:

如果每个节点不需要并行处理每个操作该怎么办?

第一个方法拒绝了我们的前提——如果我们可以构建一个区块链,那么每个节点都不需要处理每个操作?相反,如果网络被分成两个部分,可以独立运行,会怎么样呢?

Section A可以处理一组事务,而B节处理另一。这将有效地将区块链的事务吞吐量增加一倍,因为我们的限制现在可以同时由两个节点处理。如果我们可以将区块链分成许多不同的部分,那么我们就可以通过多个倍数来提高区块链的吞吐量。

这就是Vitalik的以太坊研究小组和其他研究人员所追求的“分片”的洞察力。区块链被分成不同的部分,称为碎片,每个部分都可以独立处理事务。Sharding通常被称为第一层缩放解决方案,因为它是在以太坊本身的基础级协议中实现的。

二。如果我们能从以太的现有能力中挤出更多有用的操作呢?

第二种选择是相反的:如果我们可以用现有的能力做更多的事情,而不是增加乙太区块链本身的容量。base-layer 以太坊区块链的吞吐量将是相同的,但是在实践中,我们将能够做更多对人们和应用程序有用的操作——比如事务、游戏中的状态更新或者简单的计算。

这就是“离线”技术(如状态通道、等离子体和Truebit)背后的洞察力。虽然每个问题都解决了一个不同的问题,但它们都是通过执行“off chain”操作而不是在以太坊区块链上执行的,同时仍然保证了足够的安全性和终结性。

它们也被称为层2解决方案,因为它们是在以太主链上构建的。它们不需要对底层协议进行更改——相反,它们只是作为与离线软件交互的以太坊上的智能契约而存在。

2.第二层解决方案是加密经济解决方案

在深入到特定的第2层解决方案之前,了解使它们成为可能的潜在洞察力是很重要的。

公共区块链的基本功能是在密码经济共识中。通过谨慎地调整激励机制,并通过软件和密码学来保护它们,我们可以创建可靠的计算机网络来对系统的内部状态达成一致。这是Satoshi的白皮书的关键洞见,它现在已经被应用于许多不同的公共区块链,包括比特币和以太坊。

密码经济共识给我们提供了一个核心的确定性——除非有像51%的攻击发生的极端情况,我们知道连锁经营——比如支付,或者智能合同——将按照书面形式执行。

第2层解决方案背后的洞察力是我们可以将确定性的核心核心作为一个锚点——我们附加了额外的经济机制。第二层次的经济机制可以向外扩展公共区块链的效用,让我们可以从区块链中进行交互,如果必要的话,还可以可靠地引用该核心内核。

这些构建在以太坊“顶端”的层并不总是与在线链操作具有相同的保证。但是它们仍然可以足够的最终和安全的非常有用,特别是当最后的微小减少使我们的操作更快或者降低了间接成本。

密码经济学并不是用Satoshi的白皮书开始和结束的——它是我们学习应用的一种技术。不仅在核心协议的设计中,而且在扩展底层区块链功能的第二层系统的设计中。

一、状态通道

状态通道是一种技术,用于执行“脱链”事务和其他状态更新。然而,在一个州内渠道内发生的事情仍然保持着非常高的安全性和最终性:如果出现任何问题,我们仍然可以选择回溯链上交易中确定的“硬核” 。

大多数读者将会熟悉支付渠道的想法,这个渠道已经存在了好几年,最近通过闪电网络在比特币上实现了。状态通道是更通用的支付通道形式——它们不仅可以用于支付,还可以用于任何“状态更新”,比如在一个智能合同内的区块链。国家频道在2015年由杰夫科尔曼首次详细描述。

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

想象一下,爱丽丝和鲍勃想玩一场“tic tac”的游戏,获胜者将会得到1分。要做到这一点,最简单的方法就是在以太坊上创建一个智能契约,它可以执行tic tac脚趾的规则,并跟踪每个玩家的动作。每当玩家想要移动的时候,他们就会向合同发送交易。当一个玩家获胜时,根据规则确定,合同将赔付给赢家。

这是可行的,但效率低下且速度缓慢。Alice和Bob正在让整个以太坊网络处理他们的游戏,这可能是他们所需要的。每次玩家想要移动的时候,他们都必须支付天然气的费用,而且他们必须等几个街区才能被开采,然后才采取下一步行动。

相反,我们可以设计一个系统,让Alice和Bob可以在尽可能少的连锁操作的情况下玩井字游戏。Alice和Bob可以将游戏的状态更新为off-chain,同时仍然有充分的信心,如果有必要的话,他们可以恢复到以太主链。我们称这个系统为“国家频道”。

首先,我们在以太的主链上创建一个聪明的契约“判断”,它可以理解井字游戏的规则,并且可以识别Alice和Bob作为我们游戏中的两个玩家。该合同持有1个一等奖。

然后,爱丽丝和鲍勃开始玩游戏。Alice创建并签署了一个描述她第一次移动的事务,并将它发送给Bob, Bob也签了名,发送回已签名的版本,并为自己保留一个副本。然后,Bob创建并签署一个描述他的第一个动作的事务,并将其发送给Alice,而Alice也签了它,并将其发送回来,并保留了一个副本。每一次,他们都在更新他们之间游戏的当前状态。每个事务都包含一个“nonce”,这意味着我们总是可以在后面知道这些移动的顺序。

到目前为止,这些都没有发生在链上。 Alice和Bob只是简单地通过互联网向彼此发送交易,但没有任何事情可以实现区块链。但是,所有的事务都可以发送给法官契约——换句话说,它们是有效的以太交易。你可以想象一下,这是两个人来回地写着一连串的被封锁的支票。实际上,银行没有存款或取款,但每个银行都有一大堆支票,只要他们愿意,随时可以存入。

当Alice和Bob玩这个游戏时——也许是因为Alice赢了——他们可以通过提交最终的状态(例如一个交易列表)来关闭这个通道,只支付一个交易费用。法官确保这一“最终状态”由双方签字,并等待一段时间,以确保没有人能够合法地挑战结果,然后将1号的奖励付给爱丽丝。

为什么我们需要这个“挑战期”,法官合同等待?

想象一下,鲍勃没有将真正的最终状态发送给法官,而是发送了一个旧版本的状态——他在那里赢了爱丽丝。法官只是一个愚蠢的合同——就其本身而言,它无法知道这是否是最近的状态。

挑战期给了爱丽丝一个机会去证明鲍勃对比赛的最终状态撒了谎。如果最近有一个州,那么她将有一份签署的交易的副本,她可以提交给法官。法官可以看出,爱丽丝的版本是通过检查nonce,而Bob试图窃取胜利的尝试被拒绝了。

特点和局限性

状态通道在许多应用程序中都很有用,它们在操作上是一个严格的改进。然而,重要的是要记住在决定应用程序是否适合进行信道化时所做出的特定权衡:

状态通道依赖于可用性。如果Alice在一次挑战中失去了她的网络连接(可能是因为Bob渴望获得奖品,破坏了她家里的网络连接),她可能无法在挑战期结束前做出回应。但是,Alice可以付钱给其他人来保存她的状态,并维护她的可用性。

它们特别有用,在那里,参与者将在很长一段时间内交换许多状态更新。这是因为创建一个用于部署法官契约的通道的初始成本。但是一旦部署完毕,这个通道内的每个状态更新的成本就非常低。

状态通道最好用于具有定义的参与者集的应用程序。这是因为,法官契约必须始终知道作为给定通道的一部分的实体(即地址)。我们可以添加和删除人员,但每次都需要修改合同。

状态通道有很强的隐私性,因为所有的事情都发生在参与者之间的频道中,而不是公开播放和录制。只有开放和关闭交易必须是公开的。

状态通道具有即时的终结性,这意味着一旦双方签署了状态更新,它就可以被认为是最终的。双方都有一个非常高的保证,如果必要的话,他们可以“强制”这个州的连锁。

在L4,我们建立了反事实:一个在以太层的广义状态信道的框架。我们的通用目的,模块化的实现将允许开发人员在他们的应用程序中使用状态通道,而不需要成为状态通道专家自己。你可以在这里读到更多关于这个项目的内容。我们将在2018年第一季度发布一篇描述我们技术的论文。

另一个值得注意的状态通道项目是Raiden,它目前专注于建立一个支付渠道网络,使用与闪电网络相似的模式。这意味着,而不是打开一个通道和特定的人(s)你想交易,你可以打开一个单通道的实体连接到一个更大的网络渠道,使您能够支付其他人连接到同一个网络没有额外的费用。

除了反事实和Raiden之外,在以太坊上还有几个特定于应用程序的通道实现。例如,Funfair已经建立了状态通道(他们称其为“命运频道”)为其分散的赌博平台,Spankchain为成人表演者建立了单向支付渠道(他们也使用了他们的ICO的状态通道),而Horizon Games则在他们的第一个基于以太坊的游戏中使用状态通道。

二、等离子体

2017年8月11日,Vitalik Buterin和Joseph Poon发表了一篇题为《血浆:自主智能合同》的论文。本文介绍了一种新技术,它能使以太体每秒能达到比目前更多的事务。

与状态通道一样,等离子体是一种用于进行离线交易的技术,同时依靠底层的以太坊区块链来实现其安全性。但是,等离子体把这个想法带入了一个新的方向,它允许“儿童”的区块链被附加到“主”乙醚区块链上。这些儿童链反过来又会产生他们自己的子链,这些子链可以产生自己的子链,等等。

其结果是,我们可以在子链级执行许多复杂的操作,在数千个用户中运行整个应用程序,只与以太主链进行最小的交互。一个血浆子链可以移动得更快,并收取较低的交易费用,因为它不需要在整个以太坊区块链上进行复制。

为了了解等离子体的工作原理,让我们来看看如何使用它。

让我们想象一下,你正在以太网上创建一个纸牌游戏。这些卡片将是ERC 721不可替代的令牌(就像Cryptokitties一样),但有一些特性和属性,让用户可以在壁炉石上玩,或者在聚会上玩魔术。这些复杂的操作代价昂贵,所以你决定用等离子体代替你的应用。

首先,我们在以太主链上创建一套智能契约,作为我们的血浆子链的“根”。在我们的子链(比如“事务不能花费已经花费的资产”)、记录子链状态的散列,以及作为一种“桥”,允许用户在以太主链和子链之间移动资产的“桥梁”中,这些“子代”包含了我们的子链的基本“状态转换规则”。

然后,我们创建我们的子链。子链可以有自己的共识算法——在这个例子中,假设它使用了权威的证明(PoA),这是一个简单的共识机制,依赖于受信任的块生产者(即验证器)。块生产者类似于“工作证明”系统中的矿工——它们是接收事务、表单块和收取交易费用的节点。让我们保持简单的例子,并说您(创建游戏的公司)是唯一的创建块的实体—即。您的公司运行几个节点,这些节点是我们的子链的块生产者。

一旦创建和激活子链,块生产者就会定期对根契约做出承诺。这意味着他们实际上是在说:“我承诺,子链中最近的块是X”。这些承诺被记录在血浆的根上,以证明在儿童链中发生了什么。

现在,子链已经准备好了,我们可以创建我们的交易卡游戏的基本组成部分。这些卡片本身是ERC721,最初是在以太坊主链上创建的,然后通过血浆根转移到子链上。这就引入了一个关键点:血浆允许我们与基于区块链的数字资产进行规模交互,但这些资产应该首先在ethereal -main链上创建。然后,我们在子链上部署实际的游戏应用程序智能契约,其中包含所有的游戏逻辑和规则。

当用户想要玩我们的游戏时,他们只与子链交互。他们可以持有资产(ERC721卡),购买并交易以太,与其他用户进行游戏回合(无论我们的游戏允许他们做什么),都不会直接与主链进行交互。因为只有很少的节点(即块生产者)必须处理事务,所以费用可以低得多,操作也可以更快。

但这怎么能安全呢?

通过将更多操作从主链上移到子链上,很明显我们可以执行更多操作。但它有多安全?发生在儿童链上的交易实际上是否被认为是最终的?毕竟,我们刚刚描述了一个系统,其中一个实体控制着我们子链的块生产。这不是集中吗?公司不能窃取你的资金,或者随时拿走你的收藏卡片吗?

简而言之,即使在单个实体控制子链上的100%块产量的情况下,等离子也为您提供了一个基本保证,即您始终可以将您的资金和资产退回到主链上。如果一个制片人开始恶意行事,可能发生的最糟糕的事情就是他们强迫你离开孩子链。

让我们通过几种不同的方式来讨论块生产者可能会表现不佳的情况,并了解Plasma如何处理这些场景。

首先,设想一个街区制作人试图通过说谎来欺骗你 - 通过创建一个虚假的新街区,突然你的资金由他们控制。他们是唯一的块生产商,所以他们可以自由引入一个并不真正遵循我们区块链规则的新块。就像其他区块一样,他们将不得不公布包含该区块证据的Plasma根合同的承诺。

如上所述,用户总是有最终的保证,他们可以将他们的资产退回主链。在这种情况下,用户(或者代表他们的应用程序)会检测到企图盗窃,并在块生产者尝试使用他们“被盗”的资产之前撤回。

等离子还创建了一种机制,可以防止欺诈行为退回主链。等离子体包含一种机制,任何人(包括您)都可以向根合同发布欺诈证明,以试图显示该块生产商已被欺骗。这个欺诈证据将包含关于前一个块的信息,并且允许我们证明根据子链的状态转换规则,该假块不会从先前状态适当地跟随。如果欺诈得到证实,则子链被“回滚”到前一个区块。更好的是,我们构建了一个系统,任何在虚假块上签名的块生产者都会因失去在线存款而受到处罚。

但提交欺诈证明需要访问底层数据 - 即用于证明欺诈的块的实际历史记录。 如果块生产者也不共享关于前面块的信息,以防止Alice能够向根合同提交欺诈证明呢?

在这种情况下,解决方案是让Alice收回资金并离开子链。 本质上,爱丽丝向根合同提交了“证明资金”。 经过一段延迟时间后,任何人都可以挑战她的证明(例如,显示她实际上将这些资金用于后来的有效区块),艾丽丝的资金被移回到以太坊主链。

最后,块生产者可以审查子链的用户。如果他们想要的话,块生产者可以不在块中包含某些事务,从而有效地阻止用户在子链上执行任何操作。如上所述,解决方案再一次简单地将我们所有的资产退回到以太坊主链。

但是,提款本身会带来风险。一个问题是,如果每个使用儿童链的人都试图同时撤出,会发生什么。在大规模撤出的情况下,在以太坊主链上可能没有足够的能力处理每个人在挑战期内的交易,这意味着用户可能会失去资金。虽然有许多可能的技术来防止这种情况,例如通过延长挑战期以适应取款需求的方式。

值得注意的是,并不是所有区块生产者都由一个实体控制的情况 - 这在我们的例子中是极端的情况。我们可以创建儿童连锁店,这些儿童连锁店的街区生产分布在许多不同的实体中 - 即实际上以更类似于公共区块链的方式分散管理。在这些情况下,区块生产商会以上述方式干预的风险较小,用户不得不将资产重新转移到以太坊主链的风险较小。

现在我们已经涵盖了状态通道和等离子体,值得注意的是几点比较。

一个不同之处在于,当频道中的所有各方都同意撤销时,状态通道可以执行即时取款。如果爱丽丝和鲍勃同意关闭渠道并撤回他们的资金,只要他们都同意最终的状态,他们可以立即将他们的资产从渠道中拿出来。这在Plasma上是不可能的,如上所述,用户必须始终经历一个涉及挑战期的提款过程。

每个事务的状态通道也应该比等离子更便宜,速度更快。这意味着我们可能会在等离子子链上建立国家渠道。例如,在两个用户正在交换一系列小型交易的应用程序中。在子链级别建立状态通道应该比直接在子链上执行每个交易要便宜和快捷。

最后,值得注意的是,这只是部分描述,遗漏了很多细节。等离子本身处于非常早期阶段。如果您有兴趣了解更多有关Plasma的最新工作,请查看Vitalik最近提出的“最小可行等离子体”(即精简等离子体实施方案)的建议。台湾的团队正在开展工作,你可以在这个回购中找到。 OmiseGo正在为他们的分散交换进行实施 - 他们在这里发布了最新的关于他们的进展的更新。

三、Truebit

Truebit是一种帮助以太坊进行繁重或复杂的计算外链的技术。这使得它与状态通道和等离子体不同,这对于提高以太坊区块链的总交易吞吐量更有用。正如我们在开篇部分所讨论的那样,扩展是一个多方面的挑战,需要高于高事务吞吐量。 Truebit不会让我们做更多的交易,但它可以让基于以太坊的应用程序以主链可以验证的方式执行更复杂的事情。

这将使我们能够执行对以太网应用程序有用的操作,这些应用程序的计算成本太高,无法在链上进行。例如,验证来自其他区块链的简单支付验证(SPV)证据,这可以让以太坊智能合约“检查”另一个链上是否发生了交易(如比特币或狗币)。

我们来看一个例子。想象一下,你有一些昂贵的计算 - 像SPV证明 - 需要作为以太坊应用程序的一部分来执行。您不能简单地将其作为以太坊主链上的智能合约的一部分,因为SPV证明的计算成本太高。请记住,在以太网上执行任何计算的成本非常高,因为每个节点必须并行执行该操作。以太坊中的区块具有最大限度的气体限制,从而为该区块中组合的所有事务完成多少计算设置上限。但是SPV证明的计算量非常大,因此即使它是唯一的内部交易,它也需要整个气体限制的许多倍数。

相反,你向别人支付一小笔费用来完成计算外链。你为此付钱的人被称为求解者。

首先,解决方案支付智能合同中的存款。然后,你给求解器描述他们需要为你执行的计算。他们运行计算,并返回结果。如果结果是正确的(更多在一秒钟内),他们的存款将被退回。如果事实证明求解器没有正确执行计算 - 即他们被欺骗或犯了错误 - 他们就失去了存款。

但是,我们如何判断结果是正确还是错误呢? Truebit使用称为“验证游戏”的经济机制。从本质上讲,我们为被称为挑战者的其他各方创造激励来检查求解者的工作。如果挑战者能够通过验证游戏证明解算者提交了错误结果,那么他们收取奖励,而解算者则丢失了他们的存款。

由于验证游戏是在链上执行的,因此它不能简单地计算结果(这会损害系统的整个目的 - 如果我们可以在链上进行计算,则不需要Truebit)。相反,我们强迫解决者和挑战者确定他们不同意的具体操作。实际上,我们支持双方进入一个角落 - 找到他们不同意结果的实际代码行。

一旦确定了具体的操作,它就足够小,实际上可以由以太坊主链执行。然后,我们通过以太坊的智能合约来执行这一行动,该协议一劳永逸地解决了哪一方说的是真话,哪些谎言或错误。

结论

第2层解决方案有一个共同的见解:一旦我们拥有由公有区块链提供的确定性的核心,我们就可以将其用作扩展区块链应用程序实用性的密码经济系统的锚点。

现在我们已经对一些示例进行了调查,我们可以更具体地了解第2层解决方案如何应用此洞察。第2层解决方案所使用的经济机制往往是互动游戏:它们通过为不同的各方创造激励来相互竞争或“检查”彼此的工作。区块链应用程序可以假定某个给定的声明可能是正确的,因为我们已经创建了强烈的激励,让另一方提供信息表明它是错误的。

在状态通道中,这就是我们如何确认频道的最终状态 - 通过给各方一个“反驳”对方的机会。在等离子方面,我们如何管理防欺诈和提款。在Truebit中,我们如何确保求解者说出真相 - 通过激励验证者证明求解器是错误的。

这些系统将有助于解决将以太坊扩展到庞大的全球用户群所涉及的一些挑战。一些像状态通道和Plasma等将增加平台的事务吞吐量。像Truebit这样的其他公司将可以在智能合同中进行更加困难的计算,从而开创新的使用案例。

这三个例子仅代表隐写经济比例解决方案可能设计空间的一小部分。我们甚至没有谈到像Cosmos或Polkadot这样的“区块链间协议”所做的工作(尽管这些是“第2层”解决方案还是其他内容都是另一篇文章的主题)。我们还应该期望发明新的和意想不到的第2层系统,以改进现有模型或在速度,最终性和开销之间提供新的折衷。

比任何特定的第2层解决方案更重要的是进一步发展潜在的技术和机制,使其成为可能的第一位:密码经济学设计。

对于像以太坊这样的可编程区块链的长期价值而言,这些第2层缩放解决方案是一个有力的论据。只有在区块链可编程时,才可能建立第2层解决方案的经济机制:您需要使用脚本语言编写执行交互式游戏的程序。这对比特币等区块链来说要困难得多(或者在某些情况下,比如等离子,可能不可能),因为它只提供有限的脚本功能。

以太坊允许我们构建第2层解决方案,以便在速度,最终成本和间接成本之间访问权衡矩阵上的新点。这使得底层区块链更适用于更多种类的应用程序,因为具有不同威胁模型的不同类型的应用程序会对不同的折衷有自然的偏好。对于我们希望甚至抵御民族国家的高价值交易,我们使用主链。对于速度更重要的数字收藏品交易,我们可以使用等离子。第2层让我们在不影响底层区块链的情况下做出这些折衷,保持分权和终结。

而且,事先很难预测给定的缩放解决方案需要哪些脚本功能。当设计以太坊时,Plasma和Truebit尚未发明。但是因为以太坊是完全可编程的,它实际上能够实施我们可以发明的任何经济机制。

充分利用区块链技术的价值的唯一方法就是通过可编程区块链(如以太坊)来实现这一核心内核的确定性。

作者:Josh Stark

来源:medium
  • iFinTech新星2018-05-06 22:56回复
    看看谁进来了,嘻嘻