月亮链 月亮链
Ctrl+D收藏月亮链

PRE:区块链研究实验室 | 理解广义Plasma技术结构开发实战-part II_TATE

作者:

时间:1900/1/1 0:00:00

断言开发实战

状态对象

现在让我们深入了解这一切在实践中如何运作的细节。我们的Plasma链设计的构建块是“状态对象”。状态对象只是一个具有两个属性的数据:

predicateAddress:控制对象的on-chain地址。

parameters:描述对象的一些任意blob数据。

状态对象实际上是资产-PlasmaCash中不可替代“硬币”概念的概括。就像每个独特的硬币都有CashID一样,每个状态对象都有一个stateID。

StateID是根据在Plasma链中的存储按顺序分配的,但是没有任何关于参数或predicate可以是什么的规则。每个Plasma块都是“状态更新”的集合,它在特定的StateID上定义新的StateObjects。

Ethereum上的Plasma链契约实现了VerifyUpdate->Bool,该Bool检查Merkle包含证明状态更新确实已提交。

?断言(Predicates)接口

断言(Predicates)需要实现标准合同接口。让我们来看看这些功能。

Plasma合同所做的最重要的事情是确定状态更新的有效性。特别是,我们需要防止操作员能够“潜入”一个有效的状态更新,该更新具有stateobject.parameters.owner==operator-这将是盗窃!

全球金融科技实验室专家顾问:区块链+智能制造成推进工业化和信息化深度融合战略举措:业内专家普遍认为,区块链在生物医药、新能源、新材料等产业上的应用前景比较广阔。对此,全球金融科技实验室专家顾问郑磊博士表示,目前还没听说过有区块链技术的应用,在新材料领域有落地的项目,但区块链+智能制造成为加快推进落实工业化和信息化深度融合、打造制造强国的战略举措。智能制造的价值之一就是重塑价值链的透明度、灵活性,并能够更敏捷的应对生产、物流、仓储、营销、销售、售后等环节存在的问题。(证券日报)[2020/4/12]

为了实现这一点,我们引入了“状态弃用”的概念。我们说给定stateID的有效状态是尚未被“弃用”的最早更新的状态。状态弃用类似于未使用的事务输出变为耗尽UTXO区块链的交易输出。

这样,即使操作员在以后的更新中偷偷地使用stateobject.parameters.owner==operator,也会优先使用stateobject.parameters.owner==alice进行早期更新,因为只有她才能取消预测状态。

因此,断言(Predicates)中最重要的函数定义了其状态可能被否决的理由:

verifyDeprecation(stateID:?uint,?update:?stateUpdate,?deprecationWitness:?bytes)??

VerifyDeprecation根据提交的StateUpdate是否已针对特定StateID弃用而返回true或false。deprecationwitness是断言(Predicates)用来检查StateObject是否已被弃用的任意数据。例如,通过要求deprecationwitness包含update.stateobject.parameters.owner的有效签名,我们保证只有所有者才能批准deprecation。

声音 | 徐明星:区块链行业正处在蛰伏期并将开始一轮新的机遇:近日,区块链孵化器B-Labs在杭州开业,其发起人之一、OK集团创始人徐明星表示,没有一蹴而就的成功,现在区块链行业正在度过蛰伏期,并将开始一轮新的机遇。现在我们这一代创业者,面对的也不再是BAT崛起的那个光景,各个领域的创新和突破时刻在发生,传统领域的创新已经越来越难,新兴领域的探索又充满变数。而区块链创业的道路更是充满未知。想送给行业者们一句话:要做出最好的选择,唯一的方法就是把自己变强。[2019/6/26]

记住,这个函数实际上并没有对Plasma的退出游戏、争议等进行任何弃用。相反,Plasma合约在需要知道是否不推荐使用StateObject来评估争议时调用该函数。

断言(Predicates)接口-中还有三个其他函数,按重要性排序,它们是:

finalizeExit(exit:?bytes)?

当退出被赎回时,Plasma合约将与索赔相关联的任何资产发送到断言(Predicates)地址,然后调用此函数。?

canInitiateExit(stateUpdate:?bytes,?initiationWitness:?bytes)?->?bool

此函数允许断言(Predicates)限制谁可以在提交状态上启动声明。例如,所有权谓词可能希望将canInitiateExit限制为资产的所有者。?

动态 | 北航教授蔡维德对2019年区块链技术发展做出七大预测:北航教授蔡维德对2019区块链技术发展做出七大预测: 一、2015年初预测联盟链会是主流,2019年联盟链会加速发展。 二、2015年在北航和国防科大(长沙)演讲预测计算法学会非常重要, 在2019年法律科技会加速发展。 三、2018年根据欧洲、日本、加拿大央行的报告,2019年预测PFMI会改变区块链的设计和方向。 四、2019年预测区块链产业沙盒会在多国多地开花。 五、2019年预测世界包括中国会有大型区块链计划出现。 六、2019年STO在国外会流行。 七、2019年区块链互联网开始研发,这个新网络在3年到4年以后会出现。[2019/1/3]

getAdditionalDisputePeriod(stateUpdate:?bytes)?->?uint

此函数允许断言(Predicates)增加索赔的争议期。我们只将其用于可能需要较长争议解决过程的复杂断言(Predicates)。此函数通常只返回0。???

此函数允许断言(Predicates)增加索赔的争议期。我们只将其用于可能需要较长争议解决过程的复杂断言(Predicates)。此函数通常只返回0。???

断言(Predicates)示例:断言(Predicates)所有权

通过示例,一切都变得更容易,所以让我们来看一个。最简单的断言(Predicates)是所有权断言(Predicates)。此状态允许其当前参数.owner随时退出,或批准任何状态更新。

动态 | 故宫与腾讯合作利用区块链技术保存数字文物:据人民网消息,故宫博物院院长单霁翔10月22日在“故宫×腾讯三年合作成果分享会”上表示,在后端平台建设上,腾讯云为故宫提供了技术支撑,打造线上博物馆平台,双方结合区块链技术,在数字文物保存等方面探讨进一步合作。[2018/10/25]

创建断言(Predicates)的第一步是设计状态对象。幸运的是,这非常简单,对象参数中唯一的数据是当前所有者的地址。使用所有权断言(Predicates)的状态对象可能如下所示:

OwnedByAlice?=?{??parameters:?{????owner:?'0xAliceAddress...',??},??predicate:?'0xOwnershipPredicateAddress...'}??

要实现的最重要的函数是verifyDeprecated,它接收一些任意的deprecationWitness。对于所有权断言(Predicates),有效的deprecationWitness包括:

state.parameters.owner的签名同意新的stateUpdate。

证明新的stateUpdate是在稍后的Plasma块中提交的。

verifyDeprecated需要检查这些东西是否有效,这意味着检查签名和Merkle证明。

综上所述,我们看到所有者如何通过批准新的更新来弃用其所有权状态:

动态 | “加密猫”推出海洋生物保护的区块链慈善活动:据ccn消息,Cryptockitties(加密猫)团队宣布与ACTAI Global和Ocean Elders签署合作伙伴关系,创建一个名为Honu的新CryptoKitty,将被拍卖,从销售中收集的金额将用于帮助保护海洋生物和海洋。[2018/7/22]

其余的功能非常简单。canInitiateExit需要检查申请人是否为所有者,finalizeExit将资产转发给所有者,getAdditionalDisputePeriod可以返回0。

这就是代码中的实际情况!下面我们包含了简单所有权断言(Predicates)的python实现。我们用Python编写它是为了简单起见,但在solidity或vyper中也很容易做到。

?class?OwnershipDeprecationWitness:????def?__init__(self,?next_state_update,?signature,?inclusion_witness):????????self.next_state_update?=?next_state_update????????self.signature?=?signature????????self.inclusion_witness?=?inclusion_witnessclass?OwnershipPredicate:????def?__init__(self,?parent_plasma_contract):????????self.parent?=?parent_plasma_contract????def?can_initiate_exit(self,?state_update,?initiation_witness):????????#?Only?the?owner?can?submit?a?claim????????assert?state_update.state.owner?==?initiation_witness????????return?True????def?verify_deprecation(self,?state_id,?state_update,?deprecation_witness):????????#?Check?the?state_id?is?in?the?deprecation_witness?state?update????????assert?deprecation_witness.next_state_update.start?<=?state_id??????????????and?deprecation_witness.next_state_update.end?>?state_id????????#?Check?inclusion?proof?for?more?recent?state?update????????assert?self.parent.commitment_chain.verify_inclusion?????????????(deprecation_witness.next_state_update,????????????????self.parent.address,????????????????deprecation_witness.inclusion_witness)????????#?Check?that?the?previous?owner?signed?off?on?the?change????????assert?state_update.state.owner?==?deprecation_witness.signature????????return?True????def?finalize_exit(self,?exit):????????#?Transfer?funds?to?the?owner????????self.parent.erc20_contract.transferFrom?????????????(self,?exit.state_update.state.owner,?????????????????exit.state_update.end?-?exit.state_update.start)????def?get_additional_lockup(self,?state):????????return?0

如您所见,我们已实现上述整个界面。

我们有了它!表示资产可转让所有权的断言(Predicates)。这里的大部分逻辑都与Plasma合同中已经做过的相同。我们甚至在Ethdenver的过程中尝试了改变的原型。这主要是围绕我们已经编写的代码移动的问题。

这种结构是我们理解Plasma的重要一步。它类似于从支付渠道跳到通用状态渠道——我们能够在不升级Plasma协议本身的情况下,在Plasma架构中适应新的特性和功能。

状态通道

各种类型的DEX谓词

碎片整理断言(Predicates)

嵌套Plasma

P2P选项和CDP合同

然而,重要的是要记住,断言(Predicates)不是万能的——它们仍然被限制在Plasma设计空间内。可能还没有发现更多的泛化。然而,断言(Predicates)非常强大,似乎对几乎所有的Plasma实现都很有用,包括那些不基于PlasmaCash的实现。

我们认为这是整个Plasma生态系统标准化的一个机会。任何共享这种状态拒绝架构的Plasma实现都可以共享断言(Predicates)并以新的方式进行互操作。

第2层扩展解决方案都是关于使用链外数据来保证未来的链上状态。无论旧的状态是通过签名、承诺还是其他什么方式被否决,这些工具最终都会完成相同的事情。我们希望这一进步是朝着一种包含所有第2层解决方案的统一、共享语言迈出的一步。我们设想未来,钱包可以通过使用标准接口连接到任何第2层解决方案,而不是每次都编写自定义集成。一切为了互操作性,一切为了互操作性!

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

海纳学院的内容将围绕:区块链技术,产品社群,经济模型等全方位的知识体系输出,为大家带来不一样的社群学习体验。欢迎联系作者微信加入社群:csschan1120

标签:PRECATSTATATEPREZ币CATHEONstarl币行情United States Property Coin

以太坊交易所热门资讯
BAN:HNB公示:「HNB期权补偿基金」6.2 亏损补偿数据_BANK

为了庆祝LBank期权交易火热上线,并拓展HNB的交易场景。我们启动了预算共500,000RMB的「HNB再启期权亏损豁免权!50万补偿金邀你参加LBank期权交易」.

1900/1/1 0:00:00
以太坊:行情分析:6月3日市场恐慌,短期恐怕难以支撑_以太坊银行币值钱吗

比特币行情分析:比特币于今日走出下行趋势,现报价8480美元附近,整体趋势偏弱,从1小时周期来看,K线呈空头形态,近期抛单量剧增,上方压力强劲,指标均给出卖出信号.

1900/1/1 0:00:00
USD:各大美元稳定币大盘点,USDK托管、审计方首次披露_usdk币是什么币

近期Bitfinex涉嫌挪用USDT的美元储备资金填补亏空事件久未平息,号称1:1足额抵押发行的众多美元稳定币是否真的安全可信成为区块链行业投资用户非常关心的问题.

1900/1/1 0:00:00
莱特币:莱特币半年内上涨400%,CNBC主持人惊呼“卖房卖车卖娃买莱特币!”_比特币

在CNBC最新一期的FastMoney节目中,主持人和加密评论者们讨论了最近一段时间的加密货币市场.

1900/1/1 0:00:00
加密货币:比特币回落反弹,假消息使BSV火箭飙升_Toy Doge Coin

过去24小时,加密货币市场整体表现平淡。市值最高的加密货币比特币在小幅回落后马上恢复至8700美元附近横盘整理.

1900/1/1 0:00:00
BLO:首个符合美国SEC监管的项目开始发放代币,融资总额达5000万美元_Blockearth

近日美国区块链项目Blockstack开始向2017年预注册的投资者发Token。投资者需要完成“合格购买者”的KYC.

1900/1/1 0:00:00