【本文由赞我(zaneds.com)独家冠名】
本文翻译自:Making Sense of Ethereum’s Layer 2 Scaling Solutions: State Channels, Plasma, and Truebit
原文作者:Josh Stark
译者:区块链中文字幕组 平兄
文章简介:作者简单地概述了目前以太坊的扩容难题和Layer 1 和 Layer 2 扩容方案之间的区别,后面针对 Layer 2扩容方案的三个项目 State Channels , Plasma 以及 Truebit 进行详细介绍。此文截止20180710已经在Medium上获得了罕见的8.1K赞, Vitalik Buterin,Jon Choi,Matt Condon,Chris Dixon,Hudson Jameson,Denis Nazarov 和 Jesse Walden 也对原文早期草稿提供了评论意见。
目录
- 公有链的扩容难题
1.1. 如果每个节点不需要并行地处理所有操作呢?
1.2.如果我们能使用以太坊现有的性能挤出更多的有用操作呢? - Layer 2 是加密经济解决方案
2.1. 状态通道
2.2. Plasma
2.3.Truebit - 总结
Plasma
2017年8月11号,Vitalik Buterin 和 Joseph Poon 发布了一篇名为Plasma: Autonomous Smart Contracts 的论文。这篇论文介绍了一种新的技术,能够显著提升以太坊的吞吐量。
像状态通道一样,Plasma 是一种进行链下交易,同时依赖以太坊主链来保障其安全性的技术。但是Plasma从新的角度出发,允许依附于以太坊”主“链创建”子“区块链。这些子链还可以孵化出自己的子链,并且这些子链还可以创建子链,如此往复。
这样我们就可以在子链水平上执行许多复杂的操作,运行拥有上万用户的应用程序,可以最小化与以太坊主链的交互。一条Plasma子链能够运行地更快,手续费更低,因为操作不需要在整个以太坊网络中重复执行,开销就低了很多。
【图片】
为了讲明白Plasma是如何工作的,让我们来看一个如何使用它的例子。
假设你在以太坊上打造了一款卡牌游戏。卡牌是ERC 721非同质token(如以太猫),但是拥有一些可以让玩家对战的特性和属性,这有点像炉石传说或者万智牌。这类复杂的操作在链上执行是十分昂贵的,所以你打算让你的应用使用Plasma。
首先,我们在以太坊主链创建一组智能合约作为Plasma子链的根。Plasma根包含一些子链的基本的“状态转换规则”(例如交易无法花费已经花费过的资产),子链状态的哈希记录,并且可以作为用户在主链和子链之间转移资产的一种“桥梁”。
然后,我们创建我们的子链。子链可以拥有自己的共识算法。在这个例子中,我们假设其使用了 Proof of Authority (PoA,权威证明) ,一种依赖于区块生产者的共识机制。区块生产者类似于PoW中的矿工,它们是接收交易,生成区块并且获得交易手续费的节点。为了例子能够通俗易懂,我们假设你(也就是创建游戏的公司)是创建区块的唯一实体,也就是说,你们公司自己运行一些节点作为你们子链的区块生产者。
一旦子链被创建并激活,区块生产者会定期向根智能合约做出承诺。这意味着他们实际上是说:“我承诺在子链中最新区块是X。“这些承诺被记录在链上的Plasma根上,作为子链所发生事务的证明。
现在子链已经准备就绪,我们可以创建我们卡牌游戏的基本组建了。卡牌本身是ERC721’s ,最初是在以太坊主链上创建的,然后通过plasma根进行转移到子链的。这里引入了一个关键点:Plasma 可以扩展我们与基于区块链的数字资产之间的交互,但是这些资产应当是首先由以太坊主链创建的。 然后,我们在子链上部署真正的游戏应用程序智能合约,这些智能合约包含了所有的游戏逻辑和规则。
当用户想要玩游戏时,他们只需要与子链交互。他们可以持有资产(ERC721卡牌),跟别人进行交易,游戏对战等都不需要直接与主链交互。因为只有少量的节点需要处理交易,所以手续费将会更低操作会更快。
这样做安全吗?
通过将更多的操作从主链转移到子链,这样我们明显可以执行更多的操作。但它的安全性怎么样?是否子链上的所有操作实际上都被认为是最终状态呢?毕竟,我们描述的只是由单个实体控制子链区块生产的系统。这不是中心化了吗?这样公司不是随时都能窃取你的资产或者拿走你的收藏卡牌吗?
简单来说,即使是在子链中完全由一个实体完全控制区块生产的情景下,Plasma 也能做出你可以随时将你的资产收回到主链上的基本承诺。如果一个区块生产者开始表现出敌意,最坏的情况也只是强迫你离开这个子链。
让我们了解下几种区块链生产者可能作恶的情况,并且看看Plasma如何处理这些情况。
首先,假设一个区块生产者说谎欺骗你,他们通过创建一个伪造的新区块,在该区块中你的资产被他们所控制。由于他们是唯一的区块生产者,所以他们可以自由引入一个并不遵循区块链规则的新区块。和其他区块一样,他们也得将这个区块存在的证据作为提交推送给 Plasma 根节点合约。
如上所述,用户能够随时将他们的资产收回到主链上。在这个情景下,用户(或者与用户利益相关的应用程序)会侦测到这种盗窃的企图,并在区块生产者尝试使用他们的“被盗”资产之前撤回到主链上。
除了将资金撤回到主链,Plasma还创造了一种防欺骗的机制。Plasma引入了一种机制:任何人,包括你自己都可以向根合约发布一个欺诈证明,试图证明区块链生产者已经作弊了。这个欺诈证明将会包含上一区块的信息,并且允许我们根据子链中的状态转换规则,错误的区块并不能正确接上之前的状态。如果欺诈被证实,则子链回滚到前一个区块。更妙的是,我们还构建了一种对在假区块上签名的区块生产者的处罚体系,即扣除其链上的资产。
但提交欺诈证明需要访问底层数据,如需要历史区块来证明欺诈。如果区块生产者也不共享前一区块的信息,以阻碍平兄提交欺诈证明到根智能合约呢?
这种情况下,平兄可以撤回我的资金然后离开子链。本质上平兄是向根智能合约提交了一个“资金证明”。有一段时间任何人都可以对平兄的证明提出异议(即证明实际上我已经在之前的有效区块中花费了这些资金),过了期间后,平兄的资金就会移回以太坊主链。
【图片】
最后,区块生产者可以审查子链上的用户。他们可以不把某些交易不打包入块中,从而有效阻止了用户在子链上的任何操作。此种情况下,用户只需要跟上文所说的把资产移会以太坊主链就可以了。
但是,资金撤回本身也存在风险。有一个顾虑是,如果子链上的所有人都同时撤回资金那会怎样?在大规模撤资的情况下,以太坊主链可能无法在“异议期”内处理好所有交易,这也意味着用户的资金有可能会丢失。即使有很多针对该情况的预防措施,如延长“异议期”。
需要注意的是,所有区块生产者都被一个实体控制只是我们举的一个极端的例子。我们可以创建一条子链,其区块生产者分布在不同的实体中—事实上类似于公链的去中心化。这种情况下,上文所说的那种区块生产者干预的风险将会显著减少,用户将资产撤回主链的风险也会更少。
现在我们已经介绍了状态通道和Plasma,以下是一些值得注意的对比:
其中一点不同就是,只要状态通道中的各方都同意撤资回主链,那么状态通道就可以立即执行资金撤回。但是在Plasma中无法做到,因为需要等待一个“异议期“。
状态通道的交易边际成本应该也比Plasma低,而且速度更快。这意味着我们可能会在Plasma子链上建立状态通道。
最后,需要注意的是,这只是一个对Plasma的部分描述,缺少很多细节。Plasma本身处于早期阶段,如果你有兴趣,可以自行深入了解。
(未完待续)
区块链中文字幕组
致力于前沿区块链知识和信息的传播,为中国融入全球区块链世界贡献一份力量。
如果您懂一些技术、懂一些英文,欢迎加入我们,加微信号:w1791520555。
本文译者简介
平兄 程序员,区块链技术爱好者,欢迎加微信号: qwer82261615P
欢迎关注译者币乎 平兄
本文由币乎社区(bihu.com)内容支持计划赞助。
早赞声明:为方便早赞、避免乱赞,“BH好文好报群”为点赞者、写作者牵线搭桥,实行“先审后赞、定时发表”的规则,也让作品脱颖而出、速登热门!本文授权BH好文好报群摘编、转载以及相关转授权推文行为,加群微信:we01230123(天平)。
如有侵权,请联系译者
版权所有,转载需完整注明以上内容。