当前位置:首页 > 区块链新闻 > 正文

技术指南 | 理解广义Plasma技术结构-part I

来源: 互联网时间:2019-06-11 18:13:37

简述

目前大多数开发人员只是想要简单易用的方法来扩展他们的dapps。 人们需要好的工具和文档齐全的库。他们当然不希望从头开始构建整个区块链来运行单个应用程序。

因此,我们开始创建一个平台,使构建可扩展的区块链应用程序变得容易,而无需成为Plasma专家。我们最终得到了一个通用Plasma链,你可以在上面构建应用程序(或“plapps”)。听起来怪怪的?

第2层:状态声明

“第2层”背后的核心理念是,我们可以使用主区块链以外的数据(“链外数据”)来提供主区块链上资产的担保(“链上数据”)。例如,链外数据可能会让您有权提取以太坊链上托管合同中持有的资产。但该资产的所有权在不接触以太坊的情况下发生了变化。

当然,除非在主区块链上最终可能发生交互,否则链外数据是没有用处的。这通常是通过允许用户将有关链外数据的“索赔”提交到持有索赔资产的链内智能合约来实现的。这个声明可能类似于“我有一条签名的消息,上面说我可以提取资产X。”

但是,如果在提交索赔之后,提出上述索赔的人还会发送一条消息,将资产X发送给其他人,会发生什么?这将使上述撤回无效。为确保任何此类无效提款不成功,我们会在每项索赔中添加争议期。任何人都可以在争议期结束前对索赔提出异议。否则,该声明被视为有效。很简单!

Plasma链由一系列块组成,每个块由一系列事务组成。每当创建新的Plasma链块时,对该块的加密承诺将发布到主链。这些承诺可以用来证明那个区块内有什么内容。在我们的例子中,这个承诺是从块中的所有状态更新创建的merkle根。

以太坊上的Plasma智能合约记录了运营商提交Plasma块的顺序,并防止承诺被覆盖。当用户想要对Plasma链上发生的事情提出索赔时,他们还必须通过块号引用该事情发生的时间。例如,用户可能会说,“这里是块Y中的事务X,它给了我资产Z。”这个额外的时间维度对于争议也很重要,因为有时您想知道在其他事情发生之前还是之后发生了什么事情!

链下数据论

正如我们刚才看到的,第2层主要是关于使用一些链外数据来影响链上的内容。到目前为止,链外数据主要用于表示所有权-谁拥有什么以及它是否易手。

Alice将把一项资产存入以太坊的智能合约中,她将成为该资产的所有者。然后,她可以签署一个将资产所有权转移给Bob的链外消息。然后,Bob可以使用该签名消息进行索赔,从而收回以太坊上的资产。

我们也可以代表比所有权更复杂的东西。 让我们说Alice存放一个CryptoKitty并签署一系列改变猫咪皮毛颜色的消息。 就像在上面的例子中一样,她最终可以使用她签署的最后一条消息在以太坊上宣称小猫的皮毛颜色!

无论是改变小猫的皮毛颜色还是眼睛颜色,回传到以太坊的智能合约都需要有一种理解这些变化的方式。每一项新功能-或新类型的“状态转换”-都需要更改Plasma合约后面的逻辑。在以前的Plasma规范中,添加这样的功能意味着必须重新部署*整个*Plasma合同,并将每个人的资产从旧Plasma链迁移到新的Plasma链。这不安全、不可扩展或不可升级。

predicates:使用Plasma说明

我们进入Plasma链设计,我们就想要添加新功能,我们遇到了这个可升级性问题。在一些头脑风暴之后,我们意识到有一种简单的方法可以在不改变主要Plasma链合同的情况下添加新功能。

到目前为止,我们所讨论的所有各种场景都有一些共同点-链外数据总是为了“争论”不正确的链上索赔。对某一特定主张的争议,基本上只是证明该主张所引用的声明已过时的证据。所有权的争议证明,提出索赔的用户后来将所有权转让给了其他人。关于猫咪皮毛颜色的争议需要证明猫咪的皮毛颜色已经改变。

我们的主要突破是认识到争议条件不需要在主智能合约中检查。相反,我们可以让其他智能合约实现一个功能,告诉我们争议是否有效。我们可以通过创建一个新的合约来添加新的功能,该契约实现了该功能所必需的逻辑,然后让我们的主合约引用新的合约。我们称这些外部合约为“predicates”。

现在添加新功能非常简单,但我们仍然需要一种方法来了解哪个断言(predicates)用于特定的状态更新。关于小猫皮毛颜色的说法不能通过改变小猫的眼睛颜色来加以争议。那么我们如何知道使用哪个断言(predicates)?

简单!我们只是添加了状态更新还要说明它受哪个断言(predicates)的要求。现在,改变小猫皮毛颜色的更新消息可能是,“我正在将这只猫咪的毛色变成蓝色,并且争议可以由位于(0x123 ...)的断言(predicates)来处理”

由于用户可以指定他们想要的任何断言(predicates)地址,任何人都可以通过在以太坊上部署新的断言(predicates)随时向Plasma链添加新功能。断言(predicates)比处理争端要多得多,但我们稍后会讨论这个问题。重要的是断言(predicates)只需要实现一个标准接口,这个接口在下一节中定义。

本文转载公众号:区块链研究实验室

海纳学院的内容将围绕:区块链技术,产品社群,经济模型等全方位的知识体系输出,欢迎联系作者微信:csschan1120

免责声明:

1.本文内容综合整理自互联网,观点仅代表作者本人,不代表本站立场。

2.资讯内容不构成投资建议,投资者应独立决策并自行承担风险。