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

以太坊扩容(链下)之State Channel 第一: 通道是一种解决区块链扩容问题的方案,是一个点对点(p2p)网络或者协议,它允许通道双方可以进行多笔交易,将最后处理和计算的结果提交链上, 在链上进行签名验证和结算。当通道建立时,双方创建一个初始状态,记录双方的初始余额(例如,Alice 5 ETH,Bob 5 ETH)。第三: 每一条通道,由主链上的多签智能合约管理,要打开一个通道,双方需要在链上部署合约,然后存入一定数量的资产。L1主链需要部署多签合约来管理通道,该合约需要交易双方存入一定资金,并且锁定,直到通道关闭,结算完成,释放资金。 阅读详情

image

对于以太坊来说 2018 年是着力基础建设的一年(https://twitter.com/L4ventures/status/953041925241757697)。今年是初期用户来测试网络极限的一年,并将重新关注一些扩展以太坊的技术。

以太坊至今仍处于成长初期。 现今,它还不是安全的或者可扩展的(https://twitter.com/VladZamfir/status/838006311598030848)。技术人员能够很清楚的认识到这一点。但是在去年,大量 ICO 所导致的炒作已经开始夸大目前的网络能力。构建一个安全,易于使用的去中心化互联网,受约于一套通用经济规范并被无数人使用,以太坊和 web3 提出的这一美好承诺就在眼前,但只有在建立关键基础设施的前提下才能够实现(https://twitter.com/granthummer/status/957353619736559616)。

致力于构建这种基础架构和扩展以太坊性能的项目通常被称为 扩展方案(scaling solutions) 。这些项目有着不同的形式,并且通常相互兼容或互补。

在这篇长帖中,我想要深入讲解一种扩展方案:“off-chain” 或 “第二层(layer 2)” 方案。

首先,我们会全面的讨论下以太坊(以及所有公有的区块链)的扩展难题。

其次,我们将介绍解决扩展难题的不同方法,区分 “layer 1” 和 “layer 2” 解决方案。

最后,我们会深入了解第二层(layer 2)解决方案并详细解释它是怎样运作的,我们会谈及 状态通道(state channels)(https://medium.com/l4-media/generalized-state-channels-on-ethereum-de0357f5fb44),Plasma(http://plasma.io/) 和 Truebit(http://truebit.io/)。

本文的重点在于给读者全面而详细的讲解第二层(layer 2)解决方案的概念与工作原理。但我们不会深入研究代码或特定实现。相反,我们专注理解用于构建这些系统的经济机制以及所有第二层技术之间共同的思维模式。

1

公有区块链的扩展难题

首先,你要知道“扩展”不是一个单一的、特定的问题,它涉及了一系列难题,必须解决这些难题才能使以太坊对全球无数用户可用。

最常讨论的扩展难题是交易通量。目前,以太坊每秒可以处理大约 15 笔交易,而 Visa 的处理能力则大约在 45,000/tps。在去年,一些应用程序(比如 Cryptokitties:http://cryptokitties.co/ 或偶尔的 ICO)已经足够流行以至于“放缓了”网络速度并提升了挖矿费用(gas:https://myetherwallet.github.io/knowledge-base/gas/what-is-gas-ethereum.html) 的价格。

公有区块链(比如以太坊)最核心的缺陷是要求每一笔交易要被网络中的每一个节点处理。一笔支付,Cryptokitty 的诞生,部署新的 ERC20 合约,每一个以太坊区块链上发生的操作都必须由网络中的每个节点并行执行。这是设计理念所决定的,也正是由于这种设计理念才使得公有区块链具有权威性。节点不需要依赖其他节点来告诉他们当前区块链的当前状态,它们会自己计算出来。

这给以太坊的交易通量带来了根本性的限制:它不能超过我们对于单个节点的设计要求。。

我们可以要求每个节点做更多的工作,如果我们将块大小加倍(例如,区块 gas 限制),这意味着每个节点处理每个区块的工作量大致是之前的两倍。但是这样就减弱了系统的分散化理念:节点要做更多的工作意味着性能较差的计算机(比如用户设备)可能会从网络中退出,并且挖矿也会更向性能强大的节点运营者集中。

相反,我们需要一种方式使区块链做更多有用的事,但并不是增加单个节点的工作量。

从概念上来说,有两种可能解决这个问题的方法(https://blog.ethereum.org/2018/01/02/ethereum-scalability-research-development-subsidy-programs/):

1.1 如果每个节点不必并行处理每个操作,会怎样?

第一种方法是抛弃我们的前提,如果我们可以构建一个每个节点不必处理每个操作的区块链,会怎样?如果网络分为两个部分代替原有网络,每一个部分都可以独立运行,会怎样?

A 部分可以处理一批交易,而同时 B 部分可以处理另一批。这实际上会使区块链的交易通量翻倍。因为我们的限制现在能够被两个节点同时处理。如果我们可以将区块链分为许多不同的部分,那么我们可以将区块链的通量提高很多倍。

这是分片(sharding)的思维模式,也是 Vitalik 的以太坊研究小组(Ethereum Research group)(http://ethereumresearch.org/) 和其他社群正在研究的一种扩展方案。一个区块链被分割成叫做 shards 的不同部分,每一个部分都可以独立处理交易。因为分片是在以太坊的基础级协议中实现的,所以通常被也称为第一层(layer 1)扩展解决方案,如果你想了解更多有关分片的内容,请查看 extensive FAQ(https://github.com/ethereum/wiki/wiki/Sharding-FAQ) 和这篇博文(https://medium.com/@icebearhww/ethereum-sharding-and-finality-65248951f649)。

image

1.2 如果我们能够从以太坊现有能力中压榨出更多有用的业务操作

第二种选择的方向则相反:不是增加以太坊区块链本身的容量,如果我们可以通过我们已经拥有的能力来做更多的事情,会怎样?在基础级别以太坊区块链的生产力都是相同的,但是实际上,我们可以做更多对人和应用程序有用的操作,比如交易,游戏中的状态更新,或者简单的计算。

这是 “链下(off-chain)” 技术背后的思维逻辑,比如 状态通道(state channels),Plasma 和 Truebit。虽然其中每个解决方案都在解决一个不同的问题,它们都通过执行“链下”操作而且能够不在以太坊区块链上运行的同时,仍然保证足够的安全性和权威性。

这些也被称为 第二层(layer 2) 解决方案,因为它们建立在以太坊主链“之上”。他们不需要更改基本级别的协议,相反,它们只是作为作为以太坊上的智能合约,用于与链下软件进行交互。

image

2

第二层(layer 2)解决方案是加密经济解决方案

在深入了解第二层解决方案的细节之前,了解下使其可行的潜在细节是非常重要的。

公有区块链的动力源泉在于加密经济合约(https://hackernoon.com/making-sense-of-cryptoeconomics-5edea77e4e8d)。通过调整激励措施并用软件和加密措施保护激励,我们可以创建一个就内部状态达成一致的稳定计算机网络。这是中本聪的白皮书(https://bitcoin.org/bitcoin.pdf)的关键内容,现已应用于许多不同的公有区块链(包括比特币和以太坊)的设计中。

除了一些极端的情况下(比如 51% 攻击),加密经济合约给了我们一个稳固的核心 。我们知道链上(on-chain)操作(比如支付,智能合约)可以被看做是写入去执行。

第二层(layer 2)解决方案背后的关键是我们可以将这个稳固的内核用作锚点,一个可以附加其他经济机制的固定点。这种 第二层 经济机制可以扩展公有区块链的可用性。让我们脱离区块链进行交互操作,并且在需要的情况下仍能可靠地重归到核心链上。

这些构建在以太坊“之上”的层并不总是与链上操作具有相同的保障。但是,它们仍然具备足够的权威性,安全性以及可用性,特别是在终端略微减少时,我们能够更快的执行操作或维持更低的日常成本。

加密经济并不是随着中本聪的白皮书而开始或结束,它是最适合我们去学习与应用的技术主体。不仅存在于核心协议的设计中,也存在于第二层系统的设计中,它们扩展了底层区块链的功能性。

2.1 状态通道(State channels)

状态通道(State Channel)是一种用于执行交易和其他状态更新的“off-chain”技术。可是,一个状态通道“中”发生的事务仍保持了很高的安全性和权威性。如果出现任何问题,我们仍然可以选择重归到“稳固内核”上,它的权威性是建立在链上交易基础上。

大部分读者会熟悉存在多年的概念——支付通道(payment channel),它最近通过在比特币上借助闪电网络(lightning network)(http://lightning.network/)实现了。状态通道是支付通道泛化出来的形式,它不仅可用于支付,还可用于区块链上任意的“状态更新”,比如智能合约中的更改。在 2015 年,Jeff Coleman 第一次详细介绍了状态通道(http://www.jeffcoleman.ca/state-channels/)。

解释状态通道的运作方式的最佳方法就是来看一个样例。请记住这是一个概念性的解释,也就是说我们不会牵涉到具体实现的技术细节。

现在试想一下,爱丽丝和鲍勃想玩一场井字游戏,赢家可以获得一个以太币。实现这一目的的最简单方法就是在以太坊上创建一个智能合约,实现井字游戏规则并跟踪每个玩家的动作。每次玩家想要移动时,他们都会向合约发送一个交易。当一名玩家获胜时,根据规则,合约会付给赢家一个以太币。

这样是可行的,但是效率低下且速度慢。爱丽丝和鲍勃正在使用整个以太网络处理他们的游戏过程,这对于他们的需求来说有点不合时宜。他们每一步都需要支付挖矿费用(gas),并且还要在进行游戏的下一步之前都要等待挖矿完成。

不过,我们可以设计一个新的系统,它能使爱丽丝和鲍勃在井字游戏的过程中产生尽可能少的链上操作。 爱丽丝和鲍勃能够以链下的方式更新游戏状态,同时在需要时仍能将其重归到以太坊主链上。我们将这样一个系统称之为“状态通道”。

首先,我们在以太坊主链上创建一个能够理解井字游戏规则的智能合约 “Judge”,同时它也能够认定爱丽丝和鲍勃是我们游戏中的两位玩家。该合约持有一个以太的奖励。

然后,爱丽丝和鲍勃开始玩游戏。爱丽丝创建并签署一个交易,它描述了她游戏的第一步,然后将其发送给鲍勃,鲍勃也签署了它,再将签名后的版本发回并保留一份副本。然后鲍勃也创建并签署一个描述他游戏中第一步的交易,并发送给爱丽丝,她也会签署它,再将其返回,并保留一份副本,他们每一次都会这样互相更新游戏的当前状态。每一笔交易都包含一个“随机数”,这样我们就可以直接知道游戏中走棋的顺序。

到目前为止,还没有发生任何链上的操作。爱丽丝和鲍勃只是通过互联网向彼此发送交易,但没有任何事情涉及到区块链。但是,所有交易都可以发送给 Judge 合约,也就是说,它们是有效的以太坊交易。你可以把这看做两人在彼此来回填写了一系列经过区块链认证的支票。实际上,并没有钱从银行中存入或取出,但是他俩都有一堆可以随时存入的支票。

当爱丽丝和鲍勃结束游戏时(可能是因为爱丽丝赢了),他们可以通过向 Judge 合约提交最终状态(比如,交易列表)来关闭该通道,这样就只用付一次交易费用。Judge 会确定双方都签署了这个“最终状态”,并等待一段时间来确保没人会对结果提出合理质疑,然后向爱丽丝支付一个以太币的奖励。

为什么我们需要设置一个让 Judge 合约等待一下的"质疑时间"

假设,鲍勃并没有给 Judge 发送一份真实的最终状态,而是发送一份之前他赢了爱丽丝的状态。这时如果 Judge 是一个非智能合约,它自己根本无法得知这个状态是否是最近的状态。

而质疑时间给了爱丽丝一个机会能够证明鲍勃提交了虚假的游戏最终状态。如果有更近期的状态,她就会有一份已签名交易的副本,并可以将其提供给 Judge。Judge 可以通过检查随机数来判断爱丽丝的版本是否更新,然后鲍勃盗取胜利的企图就能被驳回了。

特性和限制

状态通道在许多应用中都很有用,它们对于在链上执行操作是一种严密的改进。但在决定应用程序是否适合被通道化时,请特别注意需要做出的一些特定折中:

状态通道依赖于可靠性。如果爱丽丝在质疑时间内掉线了(也许是鲍勃不顾一切地想要赢下奖品,而破坏了她家的互联网连接),她可能无法在质疑时间内做出回应。但是,爱丽丝可以付款给其他人,让其保存一份她的状态副本,并作为她的权益代表,以保持系统的可靠性。

状态通道在需要长期交换大量状态更新的情况下非常有用。这是因为部署 Judge 合约时创建一个通道会产生初始成本。但是一旦部署完成,该通道内每一个状态更新的成本都会很低

状态通道最适于有一组明确参与者的应用程序。这是因为 Judge 合约必须始终知晓所有参与到给定通道的实体(比如,地址)。我们可以增加或删除用户,但是每次都需要更改合约。

状态通道有很强的隐私属性。因为一切都发生在参与者之间的通道“内”,而不是公共广播并记录在链上。只有开启和关闭交易必须公开。

状态通道的权威性是即时生效的。这意味着只要双方签署了一个状态更新,它可以被认为是最终状态。双方都有明确保证,在必要的情况下,他们可以将状态“执行”到链上。

我们 L4 团队正致力于创建 Counterfactual(https://counterfactual.com/),它是一个能在以太坊上推行使用状态通道的框架。我们的目标是使开发者可以在他们的项目中模块化地使用状态通道,而不需要成为状态通道专家。你可以通过这里(https://medium.com/l4-media/generalized-state-channels-on-ethereum-de0357f5fb44)了解更多该项目的信息。我们将在 2018 年的第一季度发布技术细节文件。

另一个值得注意的针对以太坊的状态通道项目是 Raiden(https://raiden.network/),目前正主要致力于构建支付通道网络,它使用了和 闪电网络类似的范式。这意味着你不必与想要交易的特定人员搭建通道。你可以与一个连接到更大型通道网络的实体架设一个单独的通道,这样你就能够向连接到同一网络的任何人付款而无需额外费用。

除了 Counterfactual 和 Raiden,在以太坊上还有几个应用程序特定的通道实现。例如,Funfair (https://funfair.io/state-channels-in-disguise/)就为他们的去中心化赌博平台搭建了一套他们称之为 “Fate channels” 的状态通道,SpainChain 为成人项目演员构建了一套 one-way payment channels(https://twitter.com/SpankChain/status/932801441793585152)(他们还在他们的 ICO 中使用了状态通道:https://github.com/SpankChain/old-sc_auction),还有 Horizon Games(https://horizongames.co/) 也在他们的第一款基于以太坊的游戏中使用了状态通道。

2.2 Plasma

2017 年 8 月 11 日,Vitalik Buterin 和 Joseph Poon 发表了一篇题为 Plasma: Autonomous Smart Contracts的文档(http://plasma.io/plasma.pdf)。这份文档介绍了一种新技术,它能使以太坊每秒可以处理的远比现在更多的事务。

和状态通道一样,Plasma 是一种用于管理链下交易的技术,同时依靠底层的以太坊区块链来实现其安全性。但是 Plasma 采用了一种新思路,它是通过创建依附于“主”以太坊区块链的“子”区块链。这些子链又可以循序产生它们自己的子链,并能依次循环往复。

其结果是我们可以在子链层级中执行许多复杂的操作,在与以太坊主链保持最低限度交互的情况下,运行拥有数千名用户的完整应用程序。Plasma 子链可以更快迁移,并承担更低的交易费用,因为其上的操作无需在整个以太坊区块链上进行重复。

image

plasma.io/plasma.pdf

为了弄清楚 Plasma 的运行原理,我们来看一个其如何被运用的样例。

试想你正在创建一个基于以太坊的卡牌交换游戏。这些卡牌是一些 ERC 721 不可替代的令牌(比如 Cryptokitties),但是拥有一些可以让玩家相互对战的特征和属性,这有点像炉石传说或者万智牌。这些类型的复杂操作在链上执行代价非常大,所以你决定在你的应用程序中使用 Plasma 作为替代方案。

首先,我们在以太坊主链上创建一系列的智能合约,它们可作为 Plasma 子链的“根节点”。Plasma 根节点包含了子链的一些基本“状态交易规则”(诸如“交易无法消费已消费过的资产”),也记录了子链状态的哈希值,并建立一种允许用户在以太坊主链和子链间转移资产的“桥接”服务。

然后,创建我们的子链。子链可以拥有自己的共识算法,在这个例子中,我们假设它使用了 Proof of Authority (PoA)(https://en.wikipedia.org/wiki/Proof-of-authority),这是一种依赖可信区块生产者(比如,验证者)的简单共识机制。在“工作量证明”系统中,区块生产者和矿工的功能类似,它们接收交易,形成区块并收取交易费用的节点。为了让样例简单点,我们假设你(也就是创建游戏的公司)是创建区块的唯一实体,即你的公司运营几个节点,这些节点就是子链的区块生产者。

一旦子链创建好并生效后,区块生产者会周期性的向根节点合约发出提交。也就是他们实际上在说“我提交的 X 是子链中当前最新的区块”。这些提交被当做子链中事务的证明,记录在链上的 Plasma 根节点里。

现在子链也准备好了,我们可以创建卡牌交换游戏的基本组件。这些卡片遵循 ERC721,在以太坊主链上初始化,然后由 Plasma 根节点转移到子链上。这里引入了一个关键点:Plasma 可以扩展我们与基于区块链的数字资产之间的交互,但是这些资产应当是首先由以太坊主链创建的。然后,我们将实际的游戏应用程序以智能合约的方式部署到子链上,这样子链就包含了游戏所有的逻辑和规则。

当用户想要玩游戏时,他们只需要和子链进行交互。他们可以持有财产(ERC721 卡牌),为了以太币购买并交换它们,与其他用户对战,以及其他游戏中允许的行为,而这些过程都不需要与主链进行交互。因为只有很少的节点(比如,区块生产者)才需要处理交易,这样费用就会降低很多,操作也能更快。

3

但是这种模式安全吗?

通过将操作从主链迁移到子链上的方式,我们明显可以执行更多的操作了。但是这样安全吗?发生在子链上的交易是否具备权威性?毕竟,我们方才描述的系统只有一个中心实体控制着子链的区块生产。这样不是中心化吗?这样公司不是随时都能窃取你的资产或者拿走你的收藏卡牌吗?

简单来说,即使是在子链中完全由一个实体完全控制区块生产的情景下,Plasma 也能做出你可以随时将你的资产收回到主链上的基本承诺。如果一个区块生产者开始表现出敌意,最坏的情况也只是强迫你离开这个子链。

让我们来看下区块生产者表现恶劣的几种方式,同时看下 Plasma 会怎样处理这些情景。

首先,假设一个区块生产者试图通过说谎欺骗你,他们可以通过创建一个伪造的新区块,声称你的资产被他们接管了。由于他们是唯一的区块生产者,所以他们可以自由引入一个并不遵循区块链规则的新区块。和其他区块一样,他们也得将这个区块存在的证据作为提交推送给 Plasma 根节点合约。

如上所述,用户有能将他们的资产随时收回到主链上的基本保障。在这个情景下,用户(或者代表他们权益的应用程序)会侦测到这种盗窃的企图,并在区块生产者尝试和使用他们的“被盗”资产之前撤回到主链上。

Plasma 还创建了一种防止利用欺诈的机制。Plasma 包含了一种任何人(包括你)都可以向根节点合约发布欺诈证明(fraud proof)的机制,这样就可以证明区块生产者作弊了。这个欺诈证明会包含之前区块的信息,并且允许我们根据子链中的状态交易规则,错误的区块并不能正确接上之前的状态。如果欺诈被证实,则子链回滚到前一个区块。更妙的是,我们还构建了一种签出错误区块的区块生产者会被处罚的体系,这些区块生产者会因此丢失一个链上押金。

image

plasma.io/plasma.pdf

但是提交欺诈证明需要访问底层数据,即需要用之前的实际历史区块来证明欺诈。如果区块生产者为了防止爱丽丝能够向根节点合约提交欺诈证明,并不分享之前区块的信息怎么办?

在这种情况下,这个方案就是为了让爱丽丝收回资产并脱离子链而准备的。根本上来说,爱丽丝向根节点合约提交了一份“欺诈证明”。在一段任何人都可以质疑证明(比如,显示一些后面的合法区块证明实际上她消费了这些资产)的延迟时段后,爱丽丝的资产将会被移回到以太坊主链上。

image

plasma.io/plasma.pdf

最后,区块生产者可以监察子链中的用户。如果区块生成者愿意,他们可以直接不在其区块中不包含实际事务,从而有效阻止用户在子链上执行任何操作。如上所述,这个解决方案再一次的直接将我们所有的资产收回到以太坊主链上。

但是,取出资产本身也会带来风险。其中一个忧虑就是如果所有使用这一子链的用户在同一时刻都要取出资产会怎样。在这样一个大量取出的情况下,以太坊主链主链上可能没有足够的能力处理每个人在质疑期内的交易,也就意味着用户可能会失去资金(https://www.reddit.com/r/ethereum/comments/6sqca5/plasma_scalable_autonomous_smart_contracts/dlex5pa/?utm_content=permalink&utm_medium=front&utm_source=reddit&utm_name=ethereum)。虽然有许多可行的技术能够防止这种情况发生,例如,通过延长质疑时间来适应取出资产的需求。

值得注意的是,所有区块生产者都是由一个实体控制这种情况并不是必定的,这只是我们案例中的极端个例。我们可以创建创建区块生产者分布在不同实体间的子链,即像公有区块一样真正地去中心化。在这些情况下,区块链生产者按照上述方式交互的风险更小,而且用户必须将资产转移回以太坊主链的风险也更小。

现在我们已经介绍了状态通道和 Plasma,有几点值得比较下。

它们之间一个不同之处在于,当状态通道中所有利益方都一致同意提现,它可以立即提现。如果爱丽丝和鲍勃同意关闭通道并撤回它们的资金。只要他们都认同最终状态,他们就可以立即取得他们的资产。这在 Plasma 上并不可能实现,如上所述,用户在取出资产的过程中必须包含一个质疑时间。

与 Plasma 相比,状态通道在每笔交易上更便宜,而且速度更快。这意味着我们可以在 Plasma 子链上建立状态通道(https://www.reddit.com/r/ethereum/comments/7jzx51/scaling_ethereum_hundreds_to_thousands_of/drb930m/?context=1)。例如,一个应用程序中两个用户在进行一系列的小型交易。在子链上建立一个状态通道应该会比直接在子链上执行每个交易更加便宜和迅速。

最后,需要注意的是这部分讲解缺失了大量细节。Plasma 本身还处于非常起始的阶段。如果你有兴趣了解 Plasma 现在的情况,请查看 Vitalik 最近的一个关于 “Minimal Viable plasma”(https://ethresear.ch/t/minimal-viable-plasma/426) 的提议(即抽离出 plasma 的实现过程)。一个台湾的团队正在进行这项工作,可以在这个分支(https://github.com/ethereum-plasma)中查看。OmiseGo 正在研究他们的分布式交易的实现,他们在这里(https://blog.omisego.network/construction-of-a-plasma-chain-0x1-614f6ebd1612)发布了最近更新进展信息。

III. Truebit

Truebit(https://truebit.io/) 是一种帮助以太坊在链下进行繁重或者复杂 运算的技术。它对于提高以太坊区块链的总交易通量更有效,这使得它与状态通道和 Plasma 不一样。正如我们在开篇部分讨论的那样,扩展是一个多方面的难题,需要的不仅仅是更高的交易通量。Truebit 不会让我们做更多的交易,但是它可以让基于以太坊的应用程序处理更复杂的事务并仍能被主链验证。

这就让我们能够对以太坊应用程序做一些有用的操作,这些操作的计算成本太高,无法在链上执行。例如,验证来自其他区块链的简单支付验证(SPV)证明,以太坊智能合约可以通过这个验证“检查”交易是否发生在另一个链上(比如比特币或者狗币:https://twitter.com/Truebitprotocol/status/960662648193888256)。

我们来看一个例子。试想你有一些高代价计算(比如 SPV 证明)需要作为一个以太坊应用程序的一部分执行。因为 SPV 证明的计算成本太高了,你不能简单地将其作为以太坊主链上的智能合约的一部分。请牢记,因为每个节点必须并行执行该操作,所以在以太坊上执行任何计算的成本都非常高。以太坊中的区块都有最大费用(gas)限制,它用于限制该区块中所有事务组合在一起能够完成的计算总量。但是,SPV 证明的计算量实在太大,即使它只是其中仅有的交易,仍需要许多倍单个区块的全部费用限制。

相反,链下你只需要支付很少的费用就可以完成计算。让你为此付费完成计算的这个人被称作解算机。

首先,解算机支付给智能合约一份押金。然后,你给解算机一份计算的详细描述,它们运行计算,并返回结果。如果结果是正确的(大部分情况下发生在一秒钟之内),它们的押金将被退回。如果解算机被证实没有正确执行运算(比如,它们欺诈或者犯错了),它们会失去押金。

但是,我们如何判断结果是否正确呢?Truebit 使用了一种叫做“验证游戏(verification game)”的经济机制。本质上我们创建了一种激励机制,它叫做挑战者(challengers)来检查解算机的结果。如果挑战者能够通过验证游戏证明解算计提交了错误结果,那么他们就可以收取奖励,而解算计则丢失他们的押金。

由于验证游戏是在链上执行的,因此它不能简单地计算结果(这会推翻整个系统的设计初衷,如果可以在链上执行计算,我们也就不需要 Truebit 了)。相反,我们要求解算机和挑战者确定他们意见不一致的特定操作。实际上,我们支持双方到一个角落,找出导致它们对结果不一致的具体代码行。

image

Truebit 的简化概念图。

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

如果你想了解更多关于 Truebit 的信息,你可以查看这份文档(https://people.cs.uchicago.edu/~teutsch/papers/truebit.pdf),或者 Simon de la Rouviere 写的这篇博文(https://medium.com/@simondlr/an-intro-to-truebit-a-scalable-decentralized-computational-court-1475531400c3)。

4

总结

第二层解决方案有着共同的远见。一旦我们得到由公有区块链提供的稳定内核,就可以将其作为加密经济的锚点,扩展出无限的区块链应用。

现在我们已经对一些样例进行了调查,这样就可以更具体地了解第二层解决方案怎么实现这种远见。第二层解决方案中运用的经济机制通常是交互游戏:它们通过为各方创造激励以使其相互竞争或彼此“检查”工作。由于我们激发了另一方出示证实错误信息的强烈动机,因此区块链应用程序可以假定某个给定的声明是正确的。

在状态通道方案中,就是通过给各方一个“反驳”对方的机会,来确定通道的最终状态。在 Plasma 方案中,就是如何管理欺诈证明和提现。在 Truebit 方案中,就是通过激励挑战者证明解算机是错误的,从而保证解算机给出正确结果。

这些系统将有助于解决将以太坊扩展到全球用户群过程中所涉及的一系列挑战。一些系统,像状态通道和 Plasma ,将会增加平台的交易通量。其他系统,像 Truebit,将能够作为智能合约的一部分进行更多的复杂计算,创建出新的使用案例。

这三个例子只能代表加密经济扩展方案可能性设计的一小部分。我们甚至还没有谈到像 Cosmos(https://cosmos.network/) 或 Polkadot (https://blog.stephantual.com/web-three-revisited-part-two-introduction-to-polkadot-what-it-is-what-it-aint-657782051d34)这样的“区块链间协议”(尽管这是“第二层”解决方案或另一篇博文的内容)。我们还是应该期待能够发明出意想不到的新型第二层系统,来改进现有模型或在速度,终端和开销做出新的权衡。

比任何独特的第二层解决方案更重要的是进一步发展潜在的技术和机制,使这些加密经济设计成为可能。

这些第二层扩展方案有力证明了像以太坊这样的可编程区块链的长期价值。只有在程序化区块链上才有可能建立基于第二层解决方案的经济机制:你需要用脚本语言实现执行交互式游戏的程序。因为比特币等区块链只提供了有限的脚本功能,这对于它们来说很困难(或者有些情况下,比如 Plasma,这是完全不可能实现的)。

以太坊第二层方案的出现让我们能在速度、终端和开销间做出新的权衡。这是底层区块链能够适用于更多种类的应用程序。因此面对不同威胁模型的不同类型应用程序会自然的选择不同的权衡模式。对于需要保障区域性(乃至国家性的)范围内的大规模交易时,我们使用主链。对于更偏重速度的数字资产交易,我们可以使用 Plasma。第二层方案让我们能够在不损害底层区块链的前提下做出这些折中措施,并保持去中心化和权威性。

而且,很难事先预测给定的扩展方案需要哪些脚本功能。当以太坊被设计出来时, Plasma 和 Truebit 还尚未发明。但是由于以太坊是完全可编程的,它能够实现我们能发明的任何经济机制。

区块链技术的价值是建立在加密经济合约的稳定内核上,而诸如以太坊这样可编程区块链才是能够充分利用这种价值的唯一途径。

感谢 Vitalik Buterin,Jon Choi,Matt Condon,Chris Dixon,Hudson Jameson,Denis Nazarov 和 Jesse Walden 对于本文初稿的意见。

原文地址:Making Sense of Ethereum’s Layer 2 Scaling Solutions: State Channels, Plasma, and Truebit
原文作者:Josh Stark
译文出自:掘金翻译计划
本文永久链接:github.com/xitu/gold-m…
译者:JohnJiangLA
校对者:foxxnuaa Zheaoli
版权属于原作者。

以下是我们的社区介绍,欢迎各种合作、交流、学习:)

image

区块链-状态通道 目录:https://blog.youkuaiyun.com/qq_40452317/article/details/89646633 来比较一下比特币,以太坊与支付宝等的交易: 可以看出,相比较支付宝的数据,比特币与以太坊几乎可以忽略不计。而状态通道就是解决这个问题的-区块链扩容。 状态通道为Dapp的可用性提供了基础,减少Dapp的延迟以及将网络响应时间控制在用户的可容忍范围。Dapp的参与... 阅读详情

相关推荐

究竟什么是CSI

本文手发在究竟什么是CSI CSI(ChannelStateInformation):信道状态信息,本文中特指在无线定位领域中的信道状态信息。 一、什么是信道状态信息? 在无线通信领域,所谓的CSI,就是通信链路的信道属性。它描述了信号在每条传输路径上的衰弱因子,即信道增益矩阵H(有时也称为信道矩阵,信道衰落矩阵)中每个元素的值,如信号散射(Scatterin

mazi的博客 3万+

Layer2 | 状态通道 State Channel

在上一篇文章中,我们介绍了区块链发展的新思潮,并且在这一新思潮下催生出的二层扩展技术发展,即 Layer2 方案。接下来我们将会为大家着重讲述「链下」扩容技术之一的状态通道及相关项目简介。 状态通道 State Channel 我们先来谈谈状态通道,举一个例子方便大家理解。 Ali...

chixiao5404的博客 888

ROS2+MoveIt2+Gazebo仿真实战:从零搭建六轴机械臂控制闭环

本文详细介绍了如何从零搭建一个完整的ROS2+MoveIt2+Gazebo六轴机械臂仿真控制闭环。通过手写URDF模型、配置MoveIt2运动规划、集成Gazebo物理仿真与ROS2 Control控制器,最终实现RViz中规划轨迹、Gazebo中同步执行的完整数字孪生验证平台,为机器人算法开发和硬件验证提供低成本、高效的仿真解决方案。

weixin_29093017的博客 486

简析区块链链下扩容:状态通道、TrueBit、Plasma

我们正处于区块链 2.0 转化的时代,目标是大规模的商用。传统的区块链技术,如比特币和以太坊,在性能上面已经显得力不从心,本文就来聊一聊区块链链下扩容技术。 比特币和以太坊有多快? 作为史上最慢的分布式数据库,比特币和以太坊的 TPS(每秒交易数)离商用有多远呢?有图为证: 说好的区块链 TPS,怎么只画了 VISA 和支付宝呢?不是我没画,只是比特币的 7 笔交易,以太坊的十来笔交...

跨链技术践行者 1万+

STM32实战:如何快速移植野火PID调试助手协议到你的电机控制项目

本文详细解析了如何将野火PID调试助手协议快速移植到STM32电机控制项目中。通过深度剖析协议帧格式、数据解析逻辑及环形缓冲区应用,提供了从工程结构规划、核心函数适配到串口中断集成的完整移植步骤。文章还分享了协议健壮性增强、数据上报频率优化等高级调试技巧,帮助开发者构建稳定可靠的上位机调试通道,大幅提升PID参数整定效率。

weixin_29171129的博客 468

从零开始:小鼠Bulk RNA-seq全流程实战指南

本文提供了一份详尽的小鼠Bulk RNA-seq全流程实战指南,涵盖从软件环境搭建、原始数据质控与清洗、序列比对、基因定量到下游差异表达分析与功能富集。内容面向生物信息学新手,通过清晰的代码示例和步骤解析,帮助读者系统掌握Bulk RNA-seq数据分析的核心技能,并产出可靠的生物学洞见。

lake5的博客 719

理解以太坊的Layer 2扩容解决方案:状态通道(State Channels)、Plasma 和 Truebit

-宾夕法尼亚州的尼科尔森大桥建设照片(图源)。罗马人的工程原理扩展至新的应用 对于以太坊来说,2018年是专注底层架构之年。今年很多早期参与者会测试网络极限,并且重新关注以太坊的扩容技术。 **以太坊仍然处于起步阶段。**直到现在,它仍然没有那么安全或者可扩展。对于任何密切关注以太坊技术的人来说,这都是很好理解的。但在过去一年,ICO推动的炒作已经过分夸大了目前的网络能力。以太坊和web3的美...

weixin_33739646的博客 657

视觉开发板—K210自学笔记(三)--点亮LED

K210点亮LED灯

adamsecond 3412

以太坊L2扩容技术综述

在过去的一年中对以太坊的需求激增,这导致以太坊的交易费用高到令人难以忍受。 因此降低交易费已经成了以太坊成为主流技术并满足海量用户使用需求的至关重要 的环节。本文将介绍目前主流的以太坊二层(L2)扩容项目的状况,例如状态通道(State Channel)、 侧链(Side Chain)和汇总(Rollups)等方案,以帮助开发者了解这些 在以太坊区块链外围而非基础层进行的创新。 1、以太坊L2扩容方案分类 按照以太坊官方规划,在未来的几年中,以太坊最终将通过分片(Sharding)来扩展基础层(L1

跨链技术践行者 1351

API深度集成——OpenClaw与第三方服务无缝对接(2026实战版)

本文介绍了OpenClaw系统与第三方服务的API深度集成技术,重点阐述了RESTful API的实现方案。通过一个功能完善的REST客户端类(RestClient)展示了核心功能:支持请求重试、拦截器机制、错误处理和认证管理等;同时提供了API资源管理器(ApiResourceManager)简化资源操作。这些技术实现了OpenClaw与外部系统的稳定可靠对接,为开发者构建API集成方案提供了2026年的最佳实践。

博客 1217

企业合规审查系统开发实战:基于知识图谱与深度学习的智能引擎构建(附完整Python代码)

动态合规监测:实时追踪法规变化并更新知识库智能合约审计:区块链智能合约的自动合规检查跨域知识融合:整合财务、法律、业务多维度数据可解释性增强:基于Attention机制生成合规审查依据。

理论都是虚的,代码才是王道。 456

Making Sense of Ethereum’s Layer 2 Scaling Solutions: State Channels, Plasma, and Truebit

For ethereum 2018 is the year of infrastructure. This is the year when early adoption will test the limits of the network, renewing focus on technologies built to scale ethereum.Ethereum is still in i...

omnispace的博客 966

05、CAN 总线拓扑结构详解,线型拓扑搭建要点

CAN总线拓扑与信号完整性优化 本文通过工程实践经验,深入剖析了CAN总线系统中信号完整性的关键要素。主要内容包括: 终端电阻的核心作用:必须严格在总线两端配置120Ω电阻,形成60Ω等效阻抗以匹配双绞线特性阻抗,避免信号反射导致的波形畸变。 阻抗匹配原理:解释了信号能量管理机制,指出阻抗不连续会导致信号反射,并通过示波器波形特征(如振铃现象)判断阻抗失配问题。 信号完整性多维要求:强调信号质量不仅涉及波形存在与否,还包括边沿斜率、共模电压范围等关键参数,这些直接影响通信可靠性。 工程实践建议:提供了终端电

2401_88858637的博客 178

【译】Making Sense of Ethereum’s Layer 2 Scaling Solutions: State Channels, Plasma, and Truebit

对于以太坊来说, 2018年是基础设施的一年 。 今年是早期采用测试网络极限的一年,重点关注用于扩展以太网的技术。以太坊仍处于起步阶段。 今天,它不安全或可扩展 。 任何与该技术密切合作的人都能很好地理解这一点。 但在去年,ICO驱动的炒作已经开始夸大目前的网络能力。 以太网和web3的承诺 - 一种安全,易用的分散式互联网,受到一套通用的经济协议的约束,并被数十亿人使用 - 现在仍在发展, 直到...

omnispace的博客 565

Open3D 进阶(22)间接平差法拟合空间曲线

空间曲线拟合在电力线三维重建中有着广泛的应用,本文利用python使用间接平差法对三维空间曲线的拟合进行代码实现。

点云侠的博客 1058

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

链下扩容之状态通道

本文将会不定期更新 是什么 状态通道的思想非常简单,在 A 和 B 之间存在 x 次交易(区块链中的交易只一系列的指令和代码,并非日常中所说的交易),我们只将第一次和最后一次的数据上链,其余的事务都是在链下进行的。显然链下的运算比链上的运算快得多。 具体来说,在交易开始的时候,参与者会将自己的当前 Ethereum 状态(通常是 ETH deposite 的方式)锁定在一个多签名合约中,这个锁定的步骤作为开启链下交易通道的第一步,之后便可以执行多个链下交易,链下交易并不上链,而所谓链下交易和你平时进行网.

码的世界 1万+

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Golang-无限缓存channel的设计与实现

无限缓存channel的设计与实现 一.引言 Go语言的Channel有两种类型,一种是无缓存的channle,一个种是有缓存的channel,但是对于有缓存的channle来说,其缓存长度在创建时就已经固定了,中间也不能扩缩容,这导致对某些特定的业务场景来说不太方便 业务场景如下 : 爬虫场景,想爬取某个URL页面上可达的所有URL 一个channle中存在待处理的URL 一堆worke...

Y先森0.0 2252

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

以太坊--状态通道进展

  写在前面:这里有更好的翻译!(国内的ethfans在我翻译几天以后,翻译了这篇文章,所以还是建议大家去看更好的) Counterfactual: Generalized State Channels on Ethereum 反事实:以太坊的通用状态通道   At L4 we have been working on state channels and other blockchai...

zhaiguowei的博客 2290

LTE学习笔记之CSI(Channel State Information)

   CSI(Channel State Information)是 UE 上报给 eNodeB 的信道状态信息,由 CQI(Channel Quality Indicator)、PMI(Precoding Matrix Indicator)、 PTI(Precoding Type Indicator)和 RI(Rand Indication)组成,其所占的时频资源是由 eNodeB 来控制的。 ...

JuiceLiang的博客 1万+

Netty学习(五)—IdleStateHandler心跳机制

Netty学习(五)—IdleStateHandler心跳机制 Netty的IdleStateHandler心跳机制主要是用来检测远端是否存活,如果不存活或活跃则对空闲Socket连接进行处理避免资源的浪费; 个人主页:tuzhenyu’s page 原文地址:Netty学习(五)—IdleStateHandler心跳机制 (0)基础 心跳机制 心跳是在

tuzhenyu的博客 7万+

CSI(channel state information)目标识别和室内定位

有没有FIMD: Fine-grained Device-free Motion Detection的源代码或者其他的CSI相关文章代码   重金急购!!qq:459991431

baidu_32350313的博客 7288

状态通道-文章来自问我社区

状态通道是一种非常广泛和简单的方式来考虑可能发生在区块链上的区块链交互,而是在区块链之外进行,而不会显着增加任何参与者的风险。这种策略最著名的例子是比特币支付渠道的想法,它允许在两方之间直接发送即时免费支付。 状态通道是支付通道的一般形式,将相同的想法应用于通常在区块链上执行的任何类型的状态更改操作。将这些交互从链中移出而不需要任何额外的信任可以导致显着成本和速度的改进。状态通道将成为扩展区块链技术以支持更高级别使用的关键部分。 状态通道的基本组件非常简单 部分区块链状态是通过多重签名或某种智能合约

qukuailian8899的博客 311

go-channel空间不够怎么办

一句话总结:channel空间不够存储到其他地方,等有空间再存储尽量 package main import "fmt" func main() { memoryMsgChan := make(chan int, 4) s := []int{1,2,3,4,5,6,7} for _, msg := range s { select { ...

Simon的博客 1813
上一篇: 2018年8月以太坊DApp数据分析报告
下一篇: 深入理解Plasma(3):Plasma MVP
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值