18750 large

[鉴轻尘]“V 神” 的以太坊究竟有没有想象中的那么好?

yuanls1979 · 于 发布 · 189 次阅读

对以太坊来说,2018年是专注于基础设施的一年。这一年里,大家对网络局限性进行了测试,重新把精力集中到扩容技术上。

以太坊还处于婴儿时期。今天,它还不够健全,也不具备可扩展性。任何了解这项技术的人,都清楚知道这一点。但在过去的一年里,由投机驱动的炒作,过分夸大了区块链的能力。以太坊距离Web 3.0(一个安全、易于使用的分布式网络,受一套共识机制约束,并为数十亿人使用)仍遥不可及,在关键基础设施完善之前,都不会实现。

构建这一基础设施、扩展以太坊功能的项目,都被称作扩容方案。

它们有许多不同的形式,而且往往都是相互兼容或互补的。

本文中,我将深入探讨其中一种扩容方案:“链下”或者“Layer2”扩容,希望能让你对Layer 2的工作原理有个全面而详细的理解。

1:公有链的扩容挑战

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

首先,是交易吞吐量方面。目前,以太坊每秒可以处理15笔交易,相比之下,Visa处理速度可以达到45000笔/秒。

像以太坊这样的公有链,要求网络中每一个节点参与处理每一笔交易,其主要局限也正在于此。以太坊上的每个操作都必须由网络中的每个节点一起执行,保证了公有链的足够权威。

这就限制了以太坊的交易吞吐量:它不能高于单个节点处理数据的速度。

如果我们将区块大小加倍,这将意味着在相同出块时间内,每个节点的工作量大约是现在工作量的两倍。但这是以牺牲去中心化为代价的:需要节点做更多的工作,那么较弱的节点可能会退出网络,挖矿权利将集中到强大的矿场手中。

2:解决方案

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

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

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

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

被分开后,A区可以处理一批交易,B区也可以处理一部分,这可以把区块链交易吞吐量提高一倍。如果我们把区块链分成许许多多不同区域,那吞吐量会提高许多倍。

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

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

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

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

这也被称作“Layer 2”,因为它建立在以太坊主链之上,不需要在基础层上进行改变,相反,它只作为与链下软件交互的智能合约存在。

3:Layer 2是数字经济解决方案

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

公有链的权威来源于共识。通过激励措施,并将其与密码学结合,从系统内部达成共识。

数字经济共识给了我们确定性——除非像51%攻击这样极端事件,否则所有的操作(包括支付、智能合约)都将按之前设计好的程序执行。

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

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

下面是正在尝试应用的技术介绍:

1、状态通道(State Channels)

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

很多读者都知道支付通道,这个已经出现许多年了,最近也在通过闪电网络(Lightning Network)在比特币上实施。状态通道是比支付通道更为普遍的形式——不仅可以处理支付,也可以处理区块链的“状态更新”,比如智能合约的更改。

2015年,Jeff Coleman首先提出了状态通道。我们先来看一个例子,以便更好地解释状态通道的工作方法。

想象一下,张三和李四玩三连棋游戏,赢家可以获得1个ETH作为奖励。最简单的办法,就是在以太坊上创建一个智能合约,将三连棋的规则写入智能合约,并追踪张三、李四的选择。每次玩家做出选择时,给合约发送一次。当一个玩家胜出,按规则,智能合约将支付1个ETH给胜出者。
这虽然可行,但效率低、速度慢。因为游戏的每一步都需要得到所有的节点确认,造成资源的浪费。他们每玩一局游戏,就要支付一笔费用,并且还要等矿工完成验证后才能进行下一局。

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

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

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

至此,所有操作都不是在链上发生。如果游戏结束,比如说张三赢了,他们可以上传最终状态(交易清单)并关闭通道。这样,只用支付一次交易费用就可以了。合约可以确保“最终状态”有双方签名,并等待一段时间,以确保结果可靠,最后把1个ETH的奖金支付给张三。

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

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

张三提交双方签名的交易副本,合约通过交易的随机数确定张三提交的是最终版本,驳回李四的请求。

状态通道适用于很多应用程序,并对传统的链上操作进行了许多升级。

2、Plasma

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

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

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

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

想象一下,你正在以太坊上创建一个交易卡片游戏。这些卡片是ERC-721令牌(比如以太猫),但它们具有某些特性和属性,让用户可以进行博弈。在链上执行这些复杂的操作很昂贵,所以使用Plasma是很好的选择。

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

然后,我们创造我们的子链,子链可以有自己的一套共识机制。在本例中,是授权证明(PoA),依赖可信区块生产者的共识机制。

一旦子链被创建或者激活,区块生产者就对Root合约做出承诺,相当于“我作证,子链中的最新区块是X。”这些承诺都会被记录在Plasma Root,以证明子链中发生的交易。

子链准备好后,我们就可以创建交易卡游戏的基本组成部分。卡片基于以太坊主链的ERC-721,通过Plasma Root转移到子链。这就引入了一个关键点:Plasma允许我们与基于以太坊的数字资产进行大规模交互。

然后,我们在子链上部署游戏应用的智能合约,把游戏逻辑和规则都写进合约里。游戏用户,其实只是与我们的子链交互。他们可以持有资产(ERC-721令牌)与其他用户进行游戏,不需要与主链直接互动。因为只有少量节点需要处理交易,交易费用会低很多,操作速度也会更快。

3、Truebit

与状态通道和Plasma扩大吞吐量不同,Truebit是帮助以太坊完成繁重计算的链下技术。Truebit不会提高交易吞吐量,但会让基于以太坊的应用程序做更复杂的事情。

有些操作计算成本太高,无法在链上执行。例如,验证来自其他区块链的“简单支付验证(SPV)”证明,让以太坊智能合约“检查”一项交易是否发生在另一条链上(如比特币网络)。

在以太坊上做的所有计算都很贵,因为总需要所有节点都要参与到计算中。

然而,你可以给某个人(解决者)支付一点费用,让它完成链下计算。

首先,解决者往智能合约存入一笔费用,然后,你把需求告知解决者。他进行计算,然后把结果反馈给你。如果计算结果正确,他的押金会被退回;如果计算出错(他出错或作弊),就会损失自己的押金。

那我们怎么知道结果正不正确呢?

Truebit使用一种叫“验证游戏”的经济机制。从本质上讲,我们创造了一种激励机制,鼓励“挑战者”来验证解决者提交的结果。如果挑战者能够通过验证游戏,证明解决者提交了一个错误的结果,那么他们就会得到奖励,而解决者则会失去他们的押金。

4:结论

“状态通道”和Plasma,将增加平台的吞吐量;Truebit,将更困难的计算作为智能合约的一部分,从而打开新的应用例子。

这三个示例仅代表了扩容方案的一小部分。

在以太坊上构建Layer 2,可以在访问速度、安全性和成本之间达到平衡。对于高价值的交易,建议使用主链;对于交易数字收藏品,速度更重要,Plasma是不错的方案。

  • 暂无回复。