美文网首页@IT·互联网区块链大学区块链研习社
想在以太坊搭建应用,性能能不能hold住,得看采用哪种技术?【三

想在以太坊搭建应用,性能能不能hold住,得看采用哪种技术?【三

作者: 铁锤区块链 | 来源:发表于2018-11-07 09:57 被阅读29次

03

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

结论

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

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

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

相关文章

网友评论

    本文标题:想在以太坊搭建应用,性能能不能hold住,得看采用哪种技术?【三

    本文链接:https://www.haomeiwen.com/subject/eeymxqtx.html