澳门新萄京客户端下载侧链和状态通道试图解决什么问题?

什么是状态通道技术?状态通道是非常广泛和简单的方法,来在区块链上对其进行扩容,但是这是在区块链链下进行的,并没有显著增加区块链参与者的风险。这种方案最出名的案例就是比特币的支付通道,它可以让两者之间直接发送快速以及手续费很低的支付。状态通道是支付通道的统称,可以把这个技术应用到任何状态更改的操作,大多数情况下是在区块链上进行。将计算移动到链下,就不需要多余的信任,可以导致成本的降低和速度的极大提升。状态通道是区块链扩容技术的重要组成部分,可以支持更高级别的使用。

这是meduim上一篇关于以太坊扩容技术的高质量文章,个人感觉说的非常清晰,因此翻译过来分享。

对于以太坊来说,2018年是它的底层架构之年。很多早期参与者会在今年测试网络的极限,将重心放到对以太坊的扩容上。以太坊现在仍然还处在初期阶段。直到现在,它也没有那么安全或者可扩容化。对于任何与以太坊近距离工作的人来说,这都是很好理解的。但是就在去年,ico的推动目前已经开始对以太坊目前的网络造成了很大的压力。以太坊的承诺和web3,一个安全,易用的去中心化网络,整合常用的经济协议,并且被10亿级别人来使用,这个概念还没有落地,而且在正确的底层架构完成之前也不会实现。那些正在为以太坊的底层架构以及扩大它能力的项目被称为扩容解决方案。这些方案有很多中形式,通常来说都是互相兼容的。在此文中,我想深入分析下某种扩容解决方案,“链下”或者说“2层”解决方案。首先,我们来总体讨论下以太坊(或者说所有公链)的扩容挑战性。其次,我们会讨论解决这些扩容挑战的不同方式,并且会区分“1层”和“2层”解决方案。第三,我们会专注于2层解决方案并且解释它是如何工作的,尤其,我们会讨论状态通道,Plasma和Truebit。此文主要专注于让读者能够对于2层解决方案如何工作有一个完整以及细节的理解。但是我们不会讨论代码和具体的实施。而且,我们会专注于理解用来打造这些系统的经济机制,还有分享一些在所有2层扩容技术中的共识。公链的扩容挑战首先,理解“扩容”并不是一个单一,特定的问题是非常重要的。它指的是对于以太坊来说必须要解决的挑战,从而以太坊才能被全球几十亿人使用。最常见的扩容挑战是转账吞吐量问题。目前,以太坊每秒大约可以处理15笔转账,但是相比Visa,它大约每秒可以处理45,000笔转账。去年,一些应用例如以太猫,或者现在出现的ICO,都足够能让以太坊网络“降速”并且转账费用也会提高。像以太坊这种公链的主要限制在于每笔转账都需要被网络中的每个节点处理。以太坊区块链上的每个操作,比如某个转账,以太猫出生,新的ERC20合约实施,都需要通过网络中所有的节点来进行。这是设计原理决定的,因为保证公链权威的一部分原因。节点们不用依赖任何其他人来告诉他们,区块链现在的状态是什么,他们自己能够辨别。这就从根本上给以太坊网络的转账吞吐量造成了限制:它不能比我们从单个节点处获得的速度更快。我们可以让网络中每个节点去承担更多工作。如果我们加倍区块的大小(也就是区块的燃料极限),也就是说每个节点在处理每个区块的时候大约要做双倍的工作量。但是这就带来了去中心化的费用问题:节点需要做更多工作意味着低能力的计算机(例如消费电子品)可能就没办法在网络中工作,如果算力集中在高能力计算机中,挖矿就变得非常中心化。并且,我们需要找到让区块链能够在不提高单个节点工作量的情况下,负担更多工作量的方法。从理论上说,有两种方法可以解决这个问题:如果每个节点不用同步处理某项操作会怎么样?第一种方法和我们的初始想法不同,如果我们打造一个区块链,其中每个节点不需要都去处理每笔交易会怎么样?如果网络被分成2部分,他们还可以半自动化的进行操作,又会怎么样?A部分可以处理一批交易,同时B部分可以处理另一批交易。这样就可以有效地加倍区块链的吞吐量,因为现在处理的极限就是2个同时可以达到的。如果我们将区块链分为很多不同的部分,那么我们就可以把区块链的吞吐量提高多少倍。这就是“分片”技术的想法,这是由Vitalik的以太坊研究团队和其他人提出的扩容解决方案。区块链被分成很多部分成为分片,每个片区都可以独立地处理交易。分片通常被认为是1层扩容技术因为这是在以太坊底层协议上进行的。如果在以太坊可以处理交易能力之外去进行更多有效操作会怎么样?这个观点从反方向进行考虑:不如去提高以太坊区块链本身的能力,如果我们可以利用现有的能力做更多事情会怎么样呢?底层以太坊区块链的吞吐量是一样的,但是实际上我们其实可以做更多对于人们和应用软件有用的操作,例如转账,游戏中的状态更新,或是简单的计算。这就是类似状态通道,Plasma和Truebit等技术使用的“链下”技术。当然,这些技术都在解决不同的问题,他们都是通过“链下”,而不是在以太坊区块链上进行操作,同时也能保证足够的安全和结果。这些也被称为2层解决方案,因为它们是是基于以太坊主网的其他链进行的。他们不会对底层协议进行更改,他们就是基于以太坊的智能合约,同时和链下的软件进行交互。第2层扩容解决方案是加密经济解决方案在深入了解具体的2层扩容解决方案,了解使得他们可行的底层概念就非常重要。支撑公有链最基础的能量就是数字经济共识。通过仔细协调激励以及通过软件和加密算法来对他们进行保障,我们就可以创造计算机网络,并且对于系统内部状态可以达成可靠地共识。这就是中本聪白皮书中的主要想法,而且现在这也被应用在不同公链的设计中,包括比特币和以太坊。数字经济共识让我们获得核心主链,除非有极端事件例如51%攻击发生,我们知道链上操作-
例如支付或者智能合约,会根据写入的代码进行执行。在2层解决方案背后的想法,就是我们可以把核心主链作为锚定,作为一个固定点,我们可以在其上添加经济机制。第二层的经济机制可以扩大公链的使用性,让我们能够在区块链下进行交互,如果有需要,也可以按照主链为准。这些区块链层是基于以太坊的,不会总是和主链操作有同样的保证。但是他们仍然可以很安全地使用,特别是虽然对于最终结算能力有所减弱,但是可以让我们处理交易更快并且费用还更低。数字经济并不是跟着中本聪白皮书开始和结束,它只是一种我们正在学着使用的技术。不只是对于核心协议的设计,但是对于第二层协议的设计,其实是扩大了底层区块链的性能。状态通道状态通道是为了能够在“链下”进行转账和其他状态更新的技术。但是,状态通道内部发生的交易仍然保持着非常高程度的安全和不可改变性:如果出现错误,我们仍然会追溯回链上交易。大多数读者对支付通道的概念很熟悉,这已经提出有好几年了,并且最近也通过闪电网络在比特币上进行部署。状态通道比支付通道更加宽泛,他们不止是可以用于支付,而且可以用于区块链上任意的“状态更新”,就好像在一个智能合约内部进行改变。状态通道是在2015年由Jeff
Coleman首次提出细节的。解释状态通道最好的方法就是举例。请记住这是概念解释,意味着我们不会对特定的实施进行非常技术细节的解释。假设Alice和Bob想要玩井字棋游戏,获胜者会获得1eth。比较单纯的做法是在以太坊上建立智能合约并且将游戏的规则部署在合约上,并且追踪每个选手。每次某个选手想要移动,他们会将交易发送到智能合约上。当一个选手赢得胜利,根据规则上定义的那样,合约会为获胜者支付1eth。这样做或许可以,但是不会很有效率,还会比较慢。Alice和Bob会让整个以太坊网络都在处理他们的游戏,对于他们玩游戏所需要的,这明显有些过度了。他们在每次移动棋的时候,都需要支付燃料费用,而且在做出下个移动的时候,他们需要等区块被挖出。但是,我们可以设计一个系统,其中让Alice和Bob能够在尽量少的链上操作的前提下,来玩这个游戏。Alice和Bob可以在链下更新游戏的状态,但是他们对于计算结果也非常有信心,因为如果有必要,他们可以返回到以太坊主网进行验证。我们把这个系统成为“状态通道”。首先,我们需要在以太坊主链上创立一个智能合约“仲裁”,他能够理解这个游戏的规则,并且将Alice和Bob定义为游戏中的两个玩家。这个合约需要持有那1eth的奖励。然后,Alice和Bob就要开始游戏。Alice会创建并且签署一个交易,其中描述了她的第一步棋,然后发送给Bob,Bob也需要签署这个交易,并且传回签名完成的版本,他自己也需要留个备份。然后Bob创建并且签署一个交易,其中描述了他的第一步,然后发送给Alice,Alice也会签名,然后发回,并留下备份。每次,他们都会更新游戏的当前状态。每个交易都包括一个“nonce”,这样地话,过后我们就可以证明这些确实发生了。目前,链上还什么都没有发生。Alice和Bob通过互联网将交易互相传送,但是还没有接触到区块链。但是,所有的交易都会发生给仲裁合约,换句话说,他们都是有效的以太坊转账。你可以认为这就像2个人在互相写一堆区块链认证的支票。其实没有钱从银行存入和取出,但是每个人都有一堆支票,他们可以在任何时候存钱。当Alice和Bob的游戏结束,也许因为Alice已经赢了,他们可以通过像仲裁合约提交最终状态,从而关闭通道(例如,交易清单),而且只需要支付单个交易费用。仲裁确认这是双方签署的“最终状态”,最后等待一段时间来确保没有开源合法地改变结果,然后给Alice那1eth的奖励。为什么在仲裁合约等待的时候,我们需要“挑战时间”?假设除了像仲裁发送真实的最终状态,Bob发出了一个旧版本的状态,里面写着他赢了Alice。但是仲裁只是个合约,凭他自己,是没有办法知道这不是最近的状态。这个挑战时间就给了Alice一个机会来给仲裁合约证明Bob对游戏的最终状态撒谎了。如果有更接近的状态,那么她就可以拿到签字交易的副本,并且她会上交这些给仲裁。仲裁就会通过检查nonce,告知Alice的版本才是更接近的,并且Bob想要盗取胜利的想法也会被拒绝。未来和局限状态通道在很多情况下都很有用,对于链上操作来说是一次非常大的提升。可是,也需要记住很重要地事情,那就是为了使用状态通道,我们也作出了特别的权衡取舍。状态通道依赖于可用性。如果Alice在问题挑战过程中断开了网络连接(也许因为Bob想要拿奖励,就切断了她家的网络连接)那么她或许就不能在挑战时间内完成回复。但是,Alice可以支付给其他人费用来持有她状态的副本,并且代替她来保持网络可用。状态通道对于用户在长时间内进行多次状态更新来说特别有用。因为在部署仲裁合约,并且建立通道的时候,会有初始费用。但是一旦部署,通道内每次状态的更新,所需的费用都很低。状态通道最好用在定义好的用户之间。因为仲裁合约必须总是知道参与者(也就是,地址),这是给定通道的一部分。我们可以添加和移除用户,但是每次都需要对合约进行更改。状态通道有很强的隐私特性,因为任何事情都在通道内部的用户之间发生的,而不是公开广播,并且记录在链上。只有打开和关闭交易是需要公开的。状态通道有即时的结果,意味着只要双方签署了状态更新,这就被认为是最终。双方都会有非常强的保障,如果有必要,他们可以强迫改变链上的状态。Plasma在2017年8月11日,Vitalik
Buterin和Joseph
Poon发布了一篇名为Plasma的白皮书:自动化的智能合约。白皮书介绍了能够让以太坊每秒进行比现在多很多的转账。类似状态通道,Plasma也是进行链下转账的技术,并且依赖于以太坊区块链的安全性。但是Plasma将这个想法带去了新的方向,可以在以太坊主链上创建子链。这些子链可以发出他们的子链,并且这些子链还可以创建子链,如此往复。最后的结果是,我们可以在子链层级上处理很多复杂的操作,可以让成千上万的用户运行整个应用,但是只和以太坊主链进行最少的交互。Plasma子链可以快速推进,并且需要更少的转账费用,因为上面的操作不需要通过整个以太坊区块链。为了理解Plasma是怎么工作的,让我们举例说明。假设你在以太坊上创建一个卡牌游戏。这些会是ERC721不可更改的代币(例如以太猫),但是会有某种特性和属性,会让用户能和对方一起玩。这类复杂的操作在链上进行会十分昂贵,所以你决定使用Plasma来运行你的应用。首先,我们在以太坊主链上创造了一系列智能合约,可以作为Plasma子链的“根源”。Plasma根链包含最基础的子链“状态转换规则”(就类似“交易不可以发送已经消费的资产”),将子链状态的哈希值记录,并且作为某种“桥”,能够让用户将资产在以太坊主链和子链之间转移。然后,我们创造了我们的子链。子链可以有自己的共识算法,例如,我们说它使用PoA算法,这是取决于可信区块生产者(也就是,验证节点)。区块生产者就类似在工作量证明中的矿工类似,他们就是从区块接受交易的节点,并且获得交易手续费。让我们简单举例,假设说你(创造这个游戏的公司)是创造区块唯一的主体,也就是说,你的公司在运行的几个节点是我们子链的区块生产者。一旦子链被创建并且激活,区块生产者就会对根合约做出定期承诺。这意味着,他们会很有效地说“我承诺在子链中最近的区块是X”。这些承诺都会记录在Plasma根链上,作为子链发生过什么的证据。现在子链已经完成,我们可以创建卡牌游戏的基本组成部分。卡牌本身是ERC721的,这是在以太坊主链上创建的,然后通过Plasma根链转移到子链上。这就带来了一个很重要的点:Plasma让我们可以和基于区块链的数字资产进行交互,但是这些资产需要首先在以太坊主链上创建。然后,我们可以将实际游戏应用部署在子链的智能合约上,这会包含整个游戏的逻辑和规则。当用户想要玩我们的游戏,他们只需要和子链进行交互。他们可以持有资产(ERC721代币),购买和交易成以太坊,和其他用户进行对赛,而且不需要和主链直接交互。因为只有很少部分的节点(也就是,区块生产者)需要进行处理交易,手续费会很低,而且速度会快很多。但是怎么保证安全呢?通过将更多的操作转移下主链,然后转上子链,这样我们确实可以处理更多的交易。但是安全性如何呢?在子链上进行转账后,这就结束了吗?毕竟,我们刚刚描述了一个系统,其中只有单个主体来控制子链的区块生产。这样不就是中心化了吗?公司可以在任何时候盗取我们的资金,或者是在任何时候拿走你的卡片呢?简单的回答是:甚至在一种情况下,单个主体控制了子链上100%的区块生产,Plasma也可以给予最基本的保障,你可以提取资金,并且放回主链。如果区块生产者想要进行欺诈,最坏地情况是他们强迫你离开子链。TruebitTruebit是能够帮助以太坊进行链下复杂计算的技术。它其实和状态通道和Plasma都不同,因为这对于提高以太坊区块链整体转账吞吐来说,更加有用。Truebit不会处理更多的交易,但是它会让基于以太坊的应用可以做更多复杂的事情,而且仍然可以在主链上进行验证。这会让在链上进行计算成本过高的以太坊应用,变得更加有效。例如,进行和其他区块链的简单支付验证(SPV),这会让以太坊智能合约“检查”是否这笔交易在另外的链上(例如比特币或者狗狗币)发生。2层解决方案给我们分享了一个观点:一旦我们有了公链提供的核心,我们可以把它作为数字经济系统的锚定,然后扩大区块链应用的使用性。比特定的2层解决方案更重要地是,底层技术的发展以及数字经济的设计。这些2层扩容解决方案,对于类似以太坊这种可编程区块链来说,是最有利的长期价值推动者。在2层解决方案底层的基础上打造经济机制,只有在区块链可以变成的前提下才行:你需要脚本语言来写代码,可以强制进行交互游戏。这在比特币上系统上会变得更加困难,(或者说,对于Plasma来说,这几乎不可能),这就提供了有限的脚本可能性。以太坊可以让我们创建2层解决方案,以在速度,结果和手续费之间的矩阵平衡中获得新的优势。这可以让底层区块链可以为更多种类的应用所使用,因为不同种类的应用,会有不同的模型,对于权衡也有不同的需求。对于高价值资金交易,我们使用主链,来保证安全。对于数字资产交易时,速度更重要,我们使用Plasma。2层扩容技术,让我们不需要在像底层区块链进行这些权衡的情况下,保护了去中心化和最终结果。而且,很难提前预测对于扩容解决方案来说,什么样的脚本能力是必须的。当以太坊设计的时候,Plasma和Truebit还没有发明。但是因为以太坊是完全可编程的,它能够实施我们创造的任何虚拟经济机制。能够完全利用区块链技术价值的唯一方式,就是和一个类似以太坊的可编程的区块链一起使用,这里的区块链指的是由加密经济共识创建的核心。原文:
Stark编译:nuszjj

今年是以太坊基础设施建设之年,早期采用部分将测试网络的极限,重点关注以太坊扩展技术。以太坊还处于婴幼儿时代,既不足够安全也不具备扩展性。任何与该技术紧密联系的人都清楚这一点。然而去年ICO的炒作夸大了以太坊的能力。以太坊和web3技术承诺的一个安全易用的、受一套共同经济协议约束的去中心化网络才刚刚出现在地平线上,而且只有基础设施建设好了之后才能实现这一承诺。

构建基础设施和扩展以太坊能力的项目一般称之为以太坊扩容解决方案。它们有许多不同的形式,而且常常互相兼容或互补。本文将深入一类扩容方案:链下扩容或者说第二层扩容:

首先,我们将在一般意义上讨论以太坊面临的扩容挑战。

然后,我们将简单讨论以太扩容挑战的两种路径:链上扩容和链下扩容。

最后,我们将研究各种二层扩容技术,包括状态通道、plamsa、Truebit等。

本文重点在于让读者对以太坊二层扩容方案有一个全面而详细的了解,但不会深入到代码或具体实现。相反,我们将聚集于理解这些系统的经济学机制及所有二层扩容方案后面的共同洞见。

首先,扩容不是一个单一的具体问题,它涉及一系列必须克服的挑战,以使以太坊能够为全球数十亿人的用户所用。最常讨论的挑战是如何提高网络的交易吞吐量。以太坊现在每秒只能处理15笔交易,而Visa卡的处理速度已经达到了45000tps。去年,一些应用——如“Cryptokitties”和临时的ICO——由于过于火爆导致整个网络拥堵和gas价格大幅上涨。

核心的限制在于,以太坊的每一笔交易需要网络中所有节点处理。以太网中发生的每一步操作——支付,Cryptokitty出生,部署新的ERC20合约——需要网络中每一个节点平行执行。这样的设计是为了保证区块链的权威性,网络中的节点不需要依靠其他人告诉他网络的现状,它们自己来搞清楚。这对以太坊交易容量的造成了致命的限制:整个网络的速度不会高于其中单点的速度。

我们可以要求网络中每个节点做更多的工作。如果我们翻倍区块的大小,即可要求网络中节点做双倍的工作。但这会导致去中心化特性的损失,因为这样对节点计算机的要求提高了,导致部分不同计算机不能参与到网络中来,使得挖矿集中到拥有巨大算力的矿工手中。为了避免中心化,区块链扩容方案应该避免增加单个节点的工作负担。

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

I、如果每个节点不需要平行处理所有操作如何?

第一种方法需要打破区块链前提:区块链中每个节点需要
处理所有操作。如果网络分为两部分,各自相对独立运行如何?A部分处理一批交易,B部分处理另一部分交易,整个网络的交易处理吞吐量相应增加了一倍,因为所有的交易现在同时由两个节点来处理。如果我们能够将区块链拆分成更多部分,那么区块链的交易处理容量将相应地增加许多倍。

这种扩容方技术叫”分片“,是Vitalik的以太坊研究团队提出的扩容解决方案。一个区块链分割成不同部分称之为分片,每个分片能够独立地处理交易。”分片“一般被认为是第一层扩容方案,因为它在以太坊基础协议本身上实现扩容。如果你想对”分片”技术更加了解,我建议你阅读这份FAQ和相关的博客文章。

澳门新萄京客户端下载 1

II、如果我们把更多的操作挪到以太坊网络之外执行如何?

第二种扩容方案采用相反的方法:与以太坊链上扩容不同,我们直接在链下使用我们已经自己拥有的计算能力如何?以太坊链上基础层吞吐量不变,但实际上我们能够做更多的操作,包括交易、游戏状态更新或者简单计算?这第二种扩容方案背后的思想是链下扩容技术,包括状态通道、PLASMA和TRUEBIT。尽管他们解决的问题不尽相同,但他们都是通过链下操作而非链上来实现功能,同时保证足够级别的安全和完整性。

它们也被称之为第二层扩容方案,因为它们是建立在以太坊主链之上的。它们不需要更改以太坊基础协议,相反,它们是以简单的智能合约存在于以太坊上的,并与链下软件交互。

澳门新萄京客户端下载 2

在深入第二层扩容方案之前,理解隐藏在后面使之可行的思想是极为必要的。公链最重要的力量在于加密经济共识。通过谨慎制定的激励措施及软件与加密技术的保护,我们得以建立一个计算机网络,借此就系统内部状态达成一致。这是中本聪白皮书中关键的思想,许多不同的公链设计包括比特币和以太坊的设计都应用了这一思想。加密经济共识给我们带来了确定性核心硬核——除非有像51%攻击这样的极端事件发生,我们知道区块链的如支付、智能合约等操作将按照写好的指令执行。

第二层扩容方案的思想是,我们可以以固定的方式锚定这个确定性核心硬核,并在此锚定上建立一个额外的经济机制。这个第二个经济机制能够扩展公链的应用范围,使得我们能够在链下互动,同时可以在需要的时候可靠地回溯至核心硬核。这些以太坊之上的第二层网络有时候不具备如以太主网操作一样的保证,但它们仍然具备足够的完整和安全保证应用,特别是它们仅仅损失极低的可靠性换取了更快的操作速度和更低的运行成本。

加密经济不是起始于中本聪的白皮书,也不会终结于中本聪白皮书——它是一项需要我们去学习如何应用的技术组合体。不仅是核心协议的设计,也包括拓展基础区块链功能的第二层网络的设计。

I、状态通道

状态通道是一种执行交易或状态更新的链下技术。虽然如此,状态通道中发生的事情依然保持高度的可靠性和完整性:如果存在任何差错,我们仍有回溯至建立在链上交易的确定性硬核的机会。大多数读者应该都熟悉支付通道的思想,这一思想已经提出了好几年了,而且近期已经在比特币的闪电网络实现了。状态通道是支付通道的更一般应用——它不能能应用于支付,还可应用于任何区块链的状态更新,比如智能合约内部变化。状态通道在2015由Jeff
Coleman首次提出。

解释状态通道的最好方法是看一个例子。注意这只是一个概念性解释,我们不会涉及具体实现的技术细节。

想像一下,Alice和Bob想玩一个叫tic tac
toe的游戏,游戏的赢家将赢得1个Eth。原来,需要在以太坊上布置一个智能合约实现游戏的规则,同时追踪游戏中所有人的动作。每次有人发起操作,他们就发送了一个交易至智能合约。当一个玩家赢得比赛时,智能合约将支付1个Eth给赢家。但是这些操作是非常低效和缓慢的。Alice和Bob处理他们的游戏时占用了整个网络,这实际超出了他们实际所需要资源。他们需要支付每一次操作,且在下一次操作前他需要等待区块被确认。相反,我们可以设计一个尽量少链上操作的系统,让Alice和Bob在这个系统上进行他们的游戏。他们可以在链下更新他们的游戏状态,同时确信他们能够回溯至以太坊主链。这样的系统我们称之为状态通道。

首先,我们在以太坊上建立一个能够理解游戏规则的智能合约,这个智能合约能够识别出游戏中的玩家如Alice和Bob。合约持有1Eth。

然后,Alice和Bob开始游戏。Alice创建并签署一个描述他的第一个动作的交易,然后发送个Bob,Bob再签署并发还他签署版本的交易,并为为自己保存一份备份。然后Bob创建签署一个描述她的第一次操作的交易并发送给Alice,Alice在签署发送回去,并保留一份备份。每一次他们都保存他们在游戏中的状态。每个交易中都包含有一个随机数,这个随机数仅用于我们识别动作的发生次序。

目前为止,一切都是在链下发生。Alice和Bob只是在内部网发送交易,尚未有任何东西上传至区块链上。但是,所有的交易都可以发送至仲裁智能合约,至它们是有效的以太网交易。你可以把这理解为两个人互相签署了一系列来来回回的区块链验证支票。没有钱从银行提取或储备,但每个人都有一叠可以随时支取的支票。当Alice和Bob完成了他们的游戏,比如Alice赢得了比赛,他们可以关闭通道并上传最后的状态至仲裁智能合约,只需要支付一笔交易费用。仲裁合约确认最终状态得到双发的认可,并经过一段时间间隔确保没有人能够合法地质疑结果后,将1eth奖励个Alice。

为什么仲裁合约需要等待一段质疑期呢?

想像一下,如果Bob没有发送真实的状态,而是发送一个表明他赢得比赛的更早版本的状态。仲裁合约只是一个哑巴合约,它不知道他接受的是否是最新的状态。质疑期给了Alice证明Bob对游戏最终状态说谎的机会。如果有一个更新的状态,她会保留有签名交易的副本,她可以提交个仲裁合约。通过确定随机数,仲裁合约可以宣布Alice提交的版本是最新的,而Bob欺骗测企图被驳斥了。

特点及限制

状态通道对很多应用都很有用,相比链上操作它会带来绝对的改进。但是,在决定该应用是否适用于通道化时,记住该项技术做了一些技术上的妥协是很重要的:

.
状态通道依赖于网络的可用性。如果Alice在质疑期间网络断线了(可能是Bob不顾一切的想赢得比赛,破坏她家的网络连接),他将不能在质疑期间回应。当然,Alice可以委托别人保存她的状态副本,并代表她的利益保证副本在质疑期的可用性。

.
当参与者在长时间内频繁更改他们的状态时,这项技术尤其有用。因为部署合约发起通道存在初始成本,如果一旦部署,通道内的单个状态更新成本是非常低的。

.
状态通道最好应用于那些参与者已知的应用。这是因为仲裁合约总需要识别出参与者是否属于该通道。我们可以添加或移除参与者,不过这都需要更新合约。

.
状态通道具有很强的保护隐私特性,因为每件事都发生在通道内部,而不是公开广播并保存在链上。只有打开和关闭交易需要公开。

.
状态通道具有即时完成的能力,这意味着参与双方只要签署了一项状态更新就可以考虑结束。如果需要,双方都可以得到他们可以在链上得到加强的保证。

在L4,我们建立了counterfactual:一个通用以太网络状态通道框架。模块化实现使得开发者不需要成为状态通道专家即可在他们的应用中使用状态通道。你可以在这里对这个项目了解更多。我们将在2018年第一季度发布一篇文章来描述我们的技术。

雷电网络是另一个著名的状态通道项目,该项目主要聚焦在建立支付通道,使用类似闪电网络的哲学。这意味着相比于你想交易的人开一条通道,你更可能与一个连接更大网络的实体打开一条单独通道,使得你可以与任何与这个实体连接的其他人进行免费支付。

除了Counterfactual和Raiden,以太网络上还有其他几种特定应用的通道技术实现。比如,Funfair为去中心化的赌博游戏建立了一个状态通道,Spankchain为成人表演者建立了一次性支付通道(他们为自己的ICO也建立了一个状态通道),HorizonGames在他们的第一个以太坊游戏建立了一个状态通道。

II、Plasma

2017年八月11号,Vitalik和Joseph发布了《Plasma:自动化智能合约》白皮书。这篇白皮书介绍了一种能够使得以太坊达到更大交易吞吐量的新技术。

与状态通道一样,Plasma是一种依靠以太坊保证安全性的链下扩容技术。但Plasma的思路不同,它通过链接到以太坊的子链实现扩容。这些子链又可以向下衍生出自己的子链,依次类推。因此,我们可以在子链上运行复杂的操作,运行几千用户的完整应用,而至保持与主链的最小交互。由于操作不需要复制到整个以太坊,Plasma子链能够运行更快,收费更低。

为了能过理解Plasma,我们举一个例子说明它如何工作。

想像一下你在以太坊创建了一个卡片游戏。这些卡片是一种不可伪造的ERC721通证,含有一些特性或属性可以给玩家用来对抗游戏。这种复杂操作在主链上进行是非常昂贵的,所以你决定在你的应用中使用Plasma技术。首先,我们在以太坊主链上创建一个智能合约作为Plasma子链的”根“。这个Plasma跟包含了子链的状态转换规则,记录子链的hash状态,成为用户在子链和以太主链之间转移资产的桥梁。

之后,我们创建子链。子链可以拥有自己的共识算法–在这个例子中,我们说它采用”授权证明“这种依赖诚实区块生产者的简单共识机制。区块生产者就像POW的矿工,它们是完成一些接收交易、形成区块、收集交易费等操作的节点。为了说明简单,这个例子里这只有你自己这一个实体生产区块–你的公司运行了一些节点作为你自己子链的区块生产者。

一旦子链创建并激活,区块生产者定期向根合同提交状态更新。这意味着它们可以有效宣告”我提交子链最近的区块是X“。这些提交记录在链上的根合同中,作为子链活动的证明。现在,子链已经准备好了,我们可以创建我们交易游戏的基础组件了。这些卡片本身是ERC721令牌,初始在以太坊上发行,然后通过Plasma根转移到子链中。这引入了一个关键点:Plasma使得我们扩展了与区块链资产的交互,但这些资产必须先在以太坊上建立。然后,我们在子链上部署实际的游戏应用智能合约,包含所有的游戏逻辑与规则。

当有用户玩这个游戏时,他们只与子链交互。他们可以持有资产,买卖资产,与其他玩家玩回合对抗,只要游戏允许你做的都行,而不需要直接与主链交互。由于只有少量节点处理交易,费用会很低,速度却很快。

但是这样安全吗?

通过将操作从链上移到链下,我们可以执行更多的操作,但是这样做的安全性如何?子链上的操作会被视为最后的操作吗?毕竟,我们刚才描述的操作都是一个实体操纵的节点验证的,这不是中心化了吗?公司难道不会任意地偷取我的资金和收集的卡片吗?

答案是,即使在这种一个实体控制区块生产的情况下,Plasma依然能给你一个最基本的保证:你总能提取你的资产回到主链。如果区块生产者非法操作,最坏的情况也只是他们迫使你离开子链。让我们看看一些区块链生产者可能作恶的方式,以及Plasma如何处理这些情况的吧。

.
首先,想像一下区块生产者试图说谎欺骗你——通过生产一个假的区块控制你的资金。他们是唯一的区块生产者,他们可以任意生产违背区块链规则的新区块。像其他区块一样,他们将提交这些含有区块证明区块至Plasma根合同。就像我们上面提到的,用户总有最后的权利提取资产回到主链。在这种情况下,用户将探测到图谋不轨的盗窃行为,然后在区块生产者试图使用他们盗取的资产之前将资产提取到主链。

Plasma同样创造了一种机制防止短期欺骗提取至主链。Plasma有一种机制,这种机制借助任何人都可发布的欺诈证明来显示区块生产者作弊了。这种欺诈证明包括以前的区块信息,允许我们按照子链的状态转换规则显示错误区块没有正确的从前一个状态转换过来。如果欺诈被证明了,子链将回滚至前一区块。甚至更好,我们可以构建一个任何欺诈区块生产者被罚没链上保证金的系统。

最后,区块生产者可以审查子链的用户。如果他们愿意,他们可以只是简单地排斥用户的交易,不打包至区块链,有效的阻止用户在子链上的任何操作。又一次,只是简单的提取我们的资产至主链即可以解决问题。

然而,提取资产本身具有一定风险。一个问题就是如果子链所有的用户同时提取资金会如何?发起大量提取操作时,以太主链可能没有能力在质疑期同时处理每个人的交易,用户可能流失自己的资产。尽管我们可以根据提交提取资金操作的数量延长质疑期等办法来阻止这种情况,仍然是个问题。

值得注意的是,大多数情况下不会存在一个实体控制所有生产节点的情况,这只是一个极端的例子罢了。我们可以创建由不同区块生产者实体组成的子链,这点就像公链的去中心化一样。在那种情况下区块生产者干扰的风险会小很多,所以用户同时提取资产的风险也会小很多。

现在,我们已经介绍了状态通道和Plasma,它们之间的不同值得我们注意。一个不同就是当通道各方达成共识时,状态通道能够即时地提取资产。当Alice和Bob同时关闭通道提取资金,只要他们对最后的状态都认同他们就可以立刻从通道中提取他们的资产。而在Plasma上则不可能,用户必须经过一段时间的质疑期才能提取资产。状态通道比Plasma的收费更低,也更快。这意味着我们可以在Plasma子链上创建状态通道。比如,在一个应用中两个用户交易一系列的小额交易。在子链级别建立状态通道将比直接在子链上操作便宜和快速的多。最后,注意这里只描述了部分内容,还有很多细节留待读者自行挖掘。Plasma本身处于很早期的阶段。如果你对Plasma现状感兴趣,你可以阅读itilik最近的提案最小可验证Plasma。这是台湾的一个小组完成的工作,你可以在这里找到他们。OmiseGO正在实现他们的去中心化交易所,他们也提交了他们最近的一次更新。

III、Truebit

Truebit是一项帮助以太网在链下完成复杂繁重计算任务的技术。它与状态通道、Plasma等增加网络吞吐量的技术的功能不同。如我们在开头部分所说,扩展是一个不止增加交易通量的多方面挑战。Trubit不会让我们完成更多的交易,但它将帮助以太坊上的应用完成更为复杂的操作,以一种仍然能被主链验证的方式。浙江使得我们能够完成在链上操作过于昂贵的动作。比如,来自其他区块链的有效简单支付验证,这种操作能够使得以太坊智能合约能够确认一个交易是否在另一个网络里发生。

让我们以一个例子来说明。想像一下你有一个昂贵的操作,比如SPV,需要在以太坊应用中执行。你不能在以太坊智能合约中执行它,因为SPV计算十分复杂。记住,在以太坊上任何操作都是有成本的。以太坊区块存在一个最大Gas的限制,制约了一个区块中能够做的操作。但是SPV计算太巨大,超过了一个区块所能使用的Gas的许多倍。

相反,你只需要付少量的费用让别人帮你做链下运算。那个你付钱帮你计算的人称之为求解者。首先,求解者在一个智能合约中抵押一定保证金。然后,你给求解者求解问题的描述,由他运算并返回结果。如果计算结果是正确的,他们的保证金可以返回;如果他们的计算不对,比如他们想欺骗你或犯了错误,他们将失去他们的保证金。

但是,我们如何知道结果是否正确呢?Truebit使用了一个称之为验证游戏的经济学机制。基本上,我们为称之为条件者的第三方提供激励去验证求解者的计算。如果挑战者能够在验证游戏中证明求解者错了,那么他们将获得奖励,而求解者失去他们的保证金。

因为验证游戏在链上进行,他不能简单地计算结果。相反,我们迫使求解者和挑战者识别它们之间不同的操作。实际上,我们将两者逼到一个角落中,找到产生不同结果的实际代码行。

一旦这个特殊的操作被识别,他就可以在以太坊上执行了。然后我们就在以太坊上的一个智能合约中执行这个特别的操作,处理一次即可发现究竟是哪一方说了真话,哪一方说了假话。

如果你对Truebit感兴趣,你可以度他们的白皮书,或者SImon的博文。

第二层扩容方案共享了同一个思想:一旦我们有了一个公链提供的坚实硬核,我们就可以用它作为加密经济的锚,用于扩展区块链的应用。

现在我们已经研究了一下例子,对第二层扩容方案如何应用这种思想有了更多的具体认识。第二层扩容方案的经济学机制更像是一种互动游戏:他们通过创建激励鼓励各方互相竞争或者验证来运行。一个区块链应用可以假设一个宣告是可信的,因为我们已经创造了一个激励机制鼓励其他人去验证信息是否是伪造的。

在状态通道中,我们给所有参与方机会驳斥对方,借此确定通道的最终状态。在Plasma中,我们拥有欺诈证明和提取资金等手段。在Truebit,我们通过给挑战者激励验证求解者错误保证求解者说实话。这些方法都将帮助以太坊解决满足全球用户的扩容需求。像状态通道和Plasma,将增加平台的吞吐量;其他如Truebit,将使得智能合约完成复杂计算成为可能,打开了新的应用场景。

这里提到的三种方案只是加密经济扩容方案可能性空间的一小部分。我们没有包含像COSMOS和Polkadot这样的链间通信协议。我们应该期待去发明新的、未被期待的新的第二层扩容方案,改进现有的模型,提供在速度、完成性和负载三者之间达成新的平衡。

比任何第二层扩容方案更重要的是,潜在技术和机制的进一步发展使得它们在第一重要的地方成为可能:加密经济设计。

对于以太坊这种可编程的区块链来说,这些第二层扩容方案是他们长期价值的有力支撑。只有可编程区块链才能建立这些在第二层方案之下的经济学机制:你需要脚本语言编写程序驱动这个交互游戏。对于比特币这种有限的脚本语言来说,要做到这一点是很困难的。

以太坊使得我们能够建立第二层网络达到一个新的速度、完成性和运行成本的平衡点。这使得区块链能够完成更多的应用,因为不同的应用有不少的威胁模型,因此采用不同的第二层网络是十分自然的。对于高价值需要抵抗国家级别的侵袭的交易,我们可以在主网上进行;对于数字收集物交易,速度更为重要,因此我们采用Plasma。第二层网络使得我们可以不失去去中心化和完成性的前提下做出权衡选择。

更进一步来说,很难提前预测一种扩容方案需要那种脚本能力。当以太坊建立时,这些扩容方案还都不存在。但是由于以太坊是可编程的,它能够实现任何我们发明的经济机制。加密经济共识创造的确定性内核是区块链的优势,要完全利用这一优势的唯一方法,就是使用像以太坊这样的可编程区块链。

网站地图xml地图