1. 首页 > 产业新闻 > 节能环保

以太坊第2层扩容方案:状态通道、Plasma 和 Truebit

以太坊目前还不够健全,也不具备可扩展性。任何了解这项技术的人,都清楚地知道这一点。但是在过去一年里,由投机驱动的炒作,过分夸大了区块链的能力。在关键基础设施完善之前,以太坊与 web3 的愿景还无法实现。

构建这一基础设施、扩展以太坊功能的项目,都被称作扩容方案。扩容方案有许多不同形式,而且往往是相互兼容或互补的。

本文将深入探讨“链下”或者叫“第2层”(layer 2)扩容方案,包括:

1、以太坊(以及所有区块链)扩容挑战

2、解决扩容问题的不同方案,并区分“第1层”和“第2层”。

3、介绍第2层扩容方案是什么,特别是状态通道(state channels)、Plasma、和Truebit。

本文的重点是让读者对第2层的工作原理有个全面详细的理解。但不会深入到代码研究和特定的使用场景,而是专注于构建这一系统的经济机制,以及第2层扩容方案的技术原理。

公有链的扩容挑战

首先,必须要知道,“扩容”不是单一的、具体的问题。它是以太坊在服务全球几十亿用户之前,必须要解决的问题

首先就是交易吞吐量方面。目前,以太坊每秒可以处理15笔交易,相比之下,Visa处理速度可以达到45000笔/秒。在过去一年里,一些应用程序——像Cryptokitties发展得好,导致整个网络运行速度也开始放缓,交易价格增加。

像以太坊这样的公有链,要求网络中每一个节点参与处理每一笔交易,其主要局限也正在于此。以太坊上的每个操作——转账,Cryptokitty的诞生,ERC20合约的生成——都必须由网络中的每个节点一起执行。这是设计时决定的,也是使公有链足够权威的原因之一。节点不需要从外部得知区块链的状态,它们自己可以解决。

这对以太坊的交易吞吐量设置了一个基本限制:它不能高于从单个节点获得的数据的速度。

我们可以要求每个节点做更多的工作。如果我们将区块大小加倍,这将意味着每个节点所做的工作量大约是现在工作量的两倍。但这是以牺牲去中心化为代价的:需要节点做更多的工作,那么功能较弱的计算机(如消费者设备)可能会退出网络,而挖矿权利将集中到强大的运营商手上。

我们需要一种方案,既能不增加单个节点的负荷,又能处理更多交易。

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

1) 如果每个节点不必并行处理每个操作呢?

第一种方法,颠覆前提:如果我们可以构建一个区块链,链内节点都不必参与处理每笔交易呢?如果网络被分成两个部分,可以半独立地运作呢?

被分开后,A区可以处理一批交易,B区也可以处理一部分。这可以把区块链交易吞吐量提高一倍,因为我们现在设定每两个节点可以同时工作。如果我们把区块链分成许许多多不同区域,那吞吐量会提高许多倍。

这就是“分片(sharding)”背后的理念,是由以太坊V神和其他科研人员提出来的。一个区块链被分成许多不同的“片”,每个“片”都可以独立处理交易。分片一般是指第1层的扩容方案,因为它是在以太坊的基层协议上实现的。

2) 如果为以太坊建立协议层网络呢?

第二种选择和第一种恰恰相反:与其增加以太坊自身的能力,不如在其基础之上采取措施。以太坊区块链基本层的吞吐量不变,但实际上我们可以执行更多操作,比如交易、状态更新或简单的计算。

这就是“链下”技术背后的原理,像状态通道,Plasma,Truebit。虽然每一种技术旨在解决不同问题,但它们都需要在保证安全性的前提下,进行“链下”操作。

这也被称作第2层扩容方案,因为它们是在以太坊主链之上的。它们不需要在基础层上进行改变只是作为与链下软件交互的智能合约存在的。

Layer2 是数字经济解决方案

在细说第2层解决方案之前,先来了解一下其背后的原理。

公有链的基本力量在于数字经济共识。通过仔细调整激励措施,并将其与密码学结合,从而从系统内部达成共识。这也是中本聪白皮书中提到的重点,这点现在已经被应用到许多不同的公有链中,包括比特币和以太坊。

数字经济共识给了我们一个硬核——除非像51%攻击这样极端事件的发生,否则所有操作(包括支付,或者智能合约)都将按书写程序执行。

第2层解决方案背后的原理是,我们可以将这个确定性内核作为一个锚——在此基础之上附加其他经济机制。第2层可以将公有链的效用扩展到链外,让我们在链外互动成为可能,这些互动在需要的时候仍然可以返回到主链。

这些层都是建立在以太坊主链之上的,所以它并不能像链上操作一样安全。但是仍然可以确保它们是最终地、安全地、实用地——特别是只需要牺牲一点操作权限,就可以提高运作效率,降低手续费用。

数字经济学并不是由中本聪的白皮书开始,也不会就此结束——这是我们正在尝试应用的技术而已。不仅在核心协议的设计上,也体现在旨在扩展底层链功能的第2层解决方案的设计中。

1、状态通道(State channels)

状态通道指的是“链下”处理交易和其他操作的一种技术。然而,发生在状态通道内事物仍然有很高的安全性和最终确定性:如果出了什么问题,我们仍然可以选择回到链上交易。

很多读者都知道支付通道,这个已经出现许多年了,也通过闪电网络(lightning network)在比特币上实施。状态通道是支付通道更为普遍的形式——它们不仅可以处理支付,也可以处理区块链的“状态更新”——就像智能合约的更改。2015年,Jeff Coleman首先提出了状态通道。

来看一个例子,可以更好友们状态通道的工作方法。请注意,这是一个概念性的友们,我们不会讨论特定的技术细节。

想象一下,Alice和Bob玩三子棋游戏(tic tac toe),赢家可以获得1ETH作为奖励。最简单的办法,就是在以太坊上创建一个智能合约,将三子棋游戏的规则写入智能合约内,并追踪每一名玩家的棋子移动。每次玩家移动棋子时,就给合约发送一次。当一个玩家生出,按规则,合约将支付1ETH给胜出者。

这虽然可行,但是效率低、速度慢。Alice和Bob的整个以太坊网络都在为这个游戏运行,造成资源的浪费。玩家每移动一步棋,都要支付一笔费用,并且,他们还要等矿工完成验证,才能进行下一步。

这时候,我们就可以设计一个系统,让Alice和Bob的互动尽量在链下进行。Alice和Bob可以在链下更新状态,并在需要的时候,回到链上交易。我们把这种系统称之为“状态通道”。

首先,我们在以太坊主链上创建一种智能合约作为“法官”,并将游戏规则写入合约,并识别出Alice和Bob是本次游戏的两个玩家。再给这个合约设置1ETH的奖励。

紧接着,Alice和Bob开始互动。Alice开始走第一步,签名后发送给Bob,Bob也会签名,并将自己签名后的版本发回,自己保存一份福本。然后Bob走一步,签名后发送给Alice,Alice也签名后发回,自己保存副本。每次,他们都会更新自己的状态。每次互动都会包含一次“随机数nonce”,这就可以给每次互动按时序排列。

至此,所有操作都不是在链上发生。Alice和Bob只是在互联网中发生了交易,但是所有交易都可上面这些传至合约——换句话说,它们依然是有效的以太坊交易。你可以理解成,这两个人是在来回写着区块链认证的支票。银行没有存款或者取款,但是每张支票都可以随时存入。

如果Alice和Bob的游戏结束,比如说Alice赢了,他们可上面这些传最终状态(交易清单)并关闭通道。这样,只用支付一次交易费用就可以了。合约可以确保“最终状态”有双方签名,并等待一段时间,以确保结果可靠,最后把1ETH的奖金支付给Alice。

为什么需要这个等待时间?

假设Bob上传的不是最终版本,而是他赢过了Alice那个版本。但是合约只会执行指令,无法知道哪一个是最终版本。这个时候,设置一段等待时间,可以让Alice提供证据证明自己提供的是最终版本。

Alice提交双方签名的交易副本,合约通过交易的nonce确定Alice提交的是最终版本,驳回Bob的请求。

特点和限制

状态通道适用于很多应用程序,并对传统的链上操作进行了许多升级。但是,在引入状态通道之前,还必须考虑其他因素:

1)状态通道依赖可用性。如果Alice在过程中断网了(假设是由于Bob迫切想要获得奖金,而破坏了Alice家的网),那么她可能无法及时提交状态信息。即便如此,Alice可以付钱,让其他人保存她的交易状态,并作为她的代表,维持数据的可用性。

2)如果用户要进行许多次状态更新,并且持续时间很长,那么这种状态通道就特别适合。这是因为虽然在创建时需要一笔费用,但是之后维护成本就会特别低。

3)状态通道适用于那些用户固定的应用程序。因为合约必须知道通道内的所有实体。虽然可以对人员进行增加或者移除,但这都需要对合同进行更改。

4)状态通道具有很强的隐私属性。因为所有操作都发生在“内部”通道中,而不会在链上公布,也不会记录在链。只有交易的开始和结束状态是公开的。

5)状态通道具有即时的最终确定性。也就是说,一旦双方对状态签名了,就可以认为是最终的。必要的话,也可以“强制”在链上执行。

L4 正在构建一个 Counterfactual:一个基于以太坊的状态通道框架,计划完成通用的、模块化的模板,并允许开发人员在其应用程序中使用状态通道,而不需要自己成为状态通道专家。

另一个值得关注的状态通道项目是Raiden,改项目的目标是建立一个支付渠道,使用的是与闪电网络类似的模式。这意味着,与其与特定人员开设通道,你还可以与一个较大的频道网络开设通道,使你可以与连接到同一频道的其他任何人交易,并无需手续费。

除了Counterfactual,Raiden之外,还有几个基于以太坊的的应用程序。例如,Funfair为了它们的去中心化平台建立的状态通道(“Fate channels”),Spankchain为成年演员建立了单向支付通道(他们也为ICO创建状态通道),Horizon游戏为他们的以太坊游戏创建了状态通道。

2、Plasma

2017年8月11日,Vitalik Buterin和Joseph Poon发表了名为《Plasma:自主智能合约》的论文。这篇文章引入了一种全新的技术,可以提高以太坊的处理效率。

与状态通道一样,Plasma是一种处理链下交易的技术,需要依赖以太坊底层技术去对其安全性进行保障。但Plasma的切入点不一样,它可以允许在以太坊主链上创建“子链”(“child” blockchain)。这些“子链”,反过来,也可以创建它们自己的“子链”,以此类推。

其结果是,我们可以在子链级执行许多复杂的操作,运行包含数千名用户的应用程序,并且只用与以太坊主链进行很少的交互。Plasma可以运行的很快,并收取较低的交易费用,因为整个过程不需要在以太坊主链上发生。

但提交欺诈证据需要获得基本数据,即用于证明欺诈的块的实际历史。如果区块生产者也没有分享先前区块的信息,以阻止Alice向root合约提交欺诈证据,该怎么办?

在这种情况下,Alice需要取出她的资金,离开子链。实际上,Alice向root合约提交了一份“资金证明”。在等待一段时间之后,任何人都可以质疑她的证明(例如,为了证明她在后来的有效区块中花了这些钱),Alice的资金被移回以太坊主链。

我们先来看一个例子,好理解Plasma是讲解运作的。

让我们想象一下,你正在以太坊上创建一个交易卡片游戏。这些卡片就是ERC 72代币(比如Cryptokitties),但它们具有某些特性和属性,让用户可以进行博弈——比如《壁炉石》(Hearthstone)或《魔法的聚会》(Magic the Gathering)。在链上执行这些复杂的操作是很昂贵的,所以使用Plasma是很好的选择。

首先,我们在以太坊主链创建一套智能合约,作为服务于我们Plasma子链的“Root”。Plasma Root包含我们子链的“状态转换规则”(比如“不能双花”),记录子链状态的哈希,并充当一种“桥梁”,允许用户在以太坊主链和子链之间进行互动。

然后,我们创造我们的子链。子链可以有自己的一套共识机制——在本例中,那就是授权证明(PoA),这是一种依赖可信区块生产者的共识机制。区块生产者类似于工作量证明中的矿工——它们是接受交易、生成区块、收取交易费的节点。打个简单的比方,假设你是生成区块的唯一实体——也就是说,你的公司运行几个节点,这些节点是我们子链的区块生产者。

一旦子链被创建或者激活,区块生产者就对root合约做出承诺。意味着他们实际在说“我作证,子链中的最新区块是X。”这些承诺都被记录在Plasma root,以证明子链中发生的交易。

现在,子链已经准备好了,我们可以创建交易卡游戏的基本组成部分。卡片是基于以太坊主链的ERC 721,通过 plasma root转移到子链。这就引入了一个关键点:plasma允许我们与基于以太坊的数字资产进行大规模交互。然后,我们再在子链上部署游戏应用的智能合约,把游戏逻辑和规则都写进合约里。

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

联系我们

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

微信号:wx123456