2017年8月11日,Vitalik Buterin和Joseph Poon发表了名为《Plasma:自主智能合约》的论文。这篇文章介绍了一项全新的,可以提高
以太坊的处理效率的技术。
与状态通道一样,Plasma是一种处理链下交易的技术,需要依赖以太坊底层技术去对其安全性进行保障。但Plasma的切入点不一样,它是通过在以太坊主链上创建“子链”(“child” blockchain)。这些“子链”,反过来,也可以创建它们自己的“子链”,以此类推。
结果便是,我们可以在子链级执行许多复杂的操作,运行包含数千名用户的应用程序,但与以太坊主链只需要进行很少的交互。Plasma子链的运行速度能够非常快,并至收取较低的交易费用,因为整个过程不需要在以太坊主链上发生。
同样的,我们通过一个例子来理解Plasma是如何运作的。
比如说,你在以太坊上制作了一款卡片交易的游戏。这些卡片就是ERC 721资产(与Cryptokitties类似),但它们具有某些特性和属性,让用户可以通过其对战和博弈——类似《炉石传说》(Hearthstone)。在链上执行这些复杂的操作是很昂贵的,所以使用Plasma是很好的选择。
首先,我们在以太坊主链创建一套智能合约,作为服务于我们Plasma子链的“Root”。Plasma Root包含我们子链的“状态转换规则”(比如资产只能交易一次),记录子链状态的哈希,并充当一种“桥梁”,允许用户在以太坊主链和子链之间进行互动。
然后,我们创造我们的子链。子链可以有自己的一套共识机制——在这个案例中就是授权证明(PoA),这是一种依赖可信任的区块生产者的共识机制。区块生产者类似于工作量证明中的矿工——它们是接受交易、生成区块、收取交易费的节点。打个简单的比方,假设你(即制作游戏的公司)是生成区块的唯一实体——也就是说,你的公司运行几个节点,这些节点是我们子链的区块生产者。
一旦子链被创建或者激活,区块生产者就对Root合约做出承诺。意味着他们实际在说“我作证,子链中的最新区块是X。”这些承诺都被记录在Plasma root,以证明子链中发生的交易。
现在,子链已经准备好了,我们可以创建卡牌交易游戏的基本部分。卡片是基于以太坊主链创造的ERC 721资产,通过 Plasma Root转移到子链。这就引入了一个关键点:Plasma允许我们与基于以太坊的数字资产进行大规模交互。然后,我们再在子链上部署游戏应用的智能合约,把游戏逻辑和规则都写进合约里。
在游戏过程中,游戏用户其实只是与我们的子链交互。他们可以持有资产(ERC 721
token),与以太交易,与其他用户游戏,但完全不用与主链直接互动。因为只有少量节点需要处理交易,交易费用会低很多,操作速度也会更快。
但这怎么确保安全呢?
很明显,将更多主链上的操作转移到子链上,整个
区块链网络可以处理更多交易。但是要怎么保障它的安全呢?在子链上发生的交易是最终的吗?毕竟,我们刚刚还说,会有一个实体公司控制区块的生成。这不就是中心化吗?这个公司能随时盗走你的资金或者游戏卡吗?
简单地说,即使一个公司拥有子链区块生成100%的控制权,Plasma也为你提供了一个基本保证,你可以随时将你的资金和资产取出,放回主链。如果一个区块生产者出现恶意行为,最坏的结果就是,它强迫你离开子链。
让我们看看区块链生产者会有怎样的恶意行为,再看Plasma会做出怎样的对策。
首先,想象一下,一个区块生产者会怎样欺骗你:通过创建一个假的新区块来控制你的资金。他们是唯一有权力生成区块的,因而他们可以不按照区块链的法则来创建区块。与其他区块一样,他们也会公布一份包含该区块证据的Plasma Root契约的承诺。
如上所述,用户是有保证的,他们可以撤回他们的资产回到主链。在这种情况下,用户(或者更确切地说是代表他们行事的应用程序)将检测到企图盗窃的行为,并在区块生产者尝试使用他们“窃取”的资产之前退出。
Plasma 还创造了一种机制,以防止欺诈退出主链。Plasma包括一种机制,任何人(包括你)都可以向Root合约发布欺诈证据,证明区块生产者作弊。此欺诈证明将包含有关前一个块的信息。根据子链的状态转换规则,虚假块不符合以前的状态。如果欺诈被证实,子链将被“退回”到前一个区块。更令人欣喜的是,我们构建了一个系统——在这个系统下,任何签下虚假区块的区块生产者都会因丢失一张链上存款而受到惩罚。
但提交欺诈证明需要获得基本数据,即用于证明欺诈的块的实际历史。如果区块生产者也没有分享先前区块的信息,以阻止Alice向Root合约提交欺诈证据,该怎么办?
在这种情况下,Alice需要取出她的资金,离开子链。实际上,Alice向Root合约提交了一份“资金证明”。在等待一段时间之后,任何人都可以质疑她的证明(例如,为了证明她在后来的有效区块中花了这些钱),Alice的资金被移回以太坊主链。
最后,区块生产者可以审查子链的用户。如果他们愿意,区块生产者可以有效地阻止用户在子链上执行任何操作。这种情况下的解决办法同样很简单,将我们所有的资产撤回到上面所述的主链上。
然而,取款本身也存在风险。如果子链上的所有用户要在同一时间取出自己所有的资产,以太坊主链可能没有办法实现这一操作,这意味着用户会有可能失去其资金,不过也有许多技术可以阻止这件事发生,如延长提款的响应时间。
事实是,一个公司掌控100%区块生成权是非常极端的情况,一般不会发生这种情况。也就是说,子链和公有链一样,是去中心化的。因而上诉提到的风险会比较小,用户可以轻易地将资产转回以太坊主链。
我们已经解释了状态通道和Plasma,有必要将两者做一个比较。
一个不同之处是,当同一通道内的所有用户都同意退出时,状态通道可以即时退出。比如说,如果Alice和Bob都同意关闭一个通道,并取回他们的资金,他们就可以立即拿回资产。这在Plasma上是不可能的,在Plasma中,用户必须等待一段时间,才能退出。
状态通道也比Plasma更便宜,更便捷。这意味着我们可以将两者结合起来,在Plasma子链上建立状态通道。例如,在一个app上,两个用户可以进行系列小额交易。在子链上创建状态通道,比直接在子链上进行交易,会更便宜高效。
最后,本文可能遗漏了一些细节。Plasma还处在早期,你可以看看V神最近提出的“最小的可行Plasma(Minimal Viable plasma)”。还有一个
台湾团队也正在做这件事。OmiseGo也试图将这一技术应用到其交易所上。
版权申明:本内容来自于互联网,属第三方汇集推荐平台。本文的版权归原作者所有,文章言论不代表链门户的观点,链门户不承担任何法律责任。如有侵权请联系QQ:3341927519进行反馈。