首页 > 世链号 > Plasma Core的证明结构和检查
解币集货店  

Plasma Core的证明结构和检查

摘要:与传统的区块链系统不同,完整的Plasma节点不存储每一个交易,它们只需要存储与其拥有的资产相关的信息。

与传统的区块链系统不同,完整的Plasma节点不存储每一个交易,它们只需要存储与其拥有的资产相关的信息。这意味着发送者必须向接收者证明发送者实际上拥有给定的范围。一个完整的证明包含了足够的信息来保证,如果以太坊链本身不分叉,那么令牌可以在主链上赎回。

必须根据操作员提交给主链上智能合约的块哈希检查包含根。通过追踪证明方案中验证的保管链,从代币的初始存款到目前为止,保证了赎回能力。

Plasma Core采用了一种相对简单的方法来验证传入的事务证明。本节介绍该方法。

证明格式(Proof Format)

历史证明包括一组存款记录和相应交易的长清单以及相应的TransctionProofs。

plasma-utils暴露一个静态checkTransactionProof(transaction,transactionProof,root)方法,Plasma-core通过调用ProofService来使用它。

交易证明(Transaction Proof)

TransactionProof对象包含检查给定Transaction的有效性的所有必要信息。也就是说,它只是一个TransferProof对象的数组。根据上面关于原子多重的一节,当且仅当所有的TransferProofs都有效时,给定的TransactionProof才有效。

转移证明(Transfer Proof)

TransferProofs包含在正确的块编号中恢复包含与事务中给定Transfer相对应的有效分支所需的所有必要信息。这构成:

  1. Merkle sum tree的实际节点,代表分支的完整`inclusionProof`

  2. 用于计算分支跟踪的二进制路径的叶的索引

  3. 上面的sum树规范中描述的已解析的bottom.sum

  4. 特定发件人的签名

就像plasma-utils架构一样:

2BLI5E2I9rlCngFf0nWX3ZMaUkwx0HF0HH01zNPY.png

请注意,inclusionProof是一个可变长度数组,其大小取决于树的深度。

证明步骤(Proof steps)

从存款开始,验证过程的核心是将每个证明元素应用于当前“已验证”状态。如果任何证明元素没有导致有效的状态转换,我们必须拒绝证明。

应用每个证明元素的过程是公开的; 我们只是根据合同的监管规则要求在每个区块应用交易。

快照对象(Snapshot object)

我们跟踪历史拥有范围的方式称为快照。

快照代表了区块中范围的经过验证的所有者:

DPcd4reUUTt1Rd38irSpx5nmGtZR12gfnhr61YiU.png

存款记录(Deposit records)

每个收到的范围必须来自相应的存款。

存款记录由其令牌、开始、结束、存款人和块号组成。

对于每个存款记录,验证者必须仔细检查以太坊以确认所声称的存款确实发生,并且在此期间没有发生退出。

验证快照数组将初始化为这些存储,每个snapshot.owner都是存储者。

接下来,我们应用所有给定的事务证明,相应地更新已验证的快照。对于每个事务和相应的TransactionProof,验证程序执行以下步骤:

  1. 验证给定的证明元素是否有效。如果没有,提示错误

  2. 对于交易中的每次转移,请执行以下操作:

  a.“拆分”在transfer.typedstart、transfer.typend、implicitstart和implicitend上更新的任何快照。

  b.增加所有结果验证快照的.block编号,这些快照的block编号等于transaction.block number-1;

  c.对于在transfer.start和transfer.end之间的每个拆分快照:

  i.验证snapshot.owner==transfer.from。如果没有,抛出一个错误。

  ii.设置snapshot.owner=transfer.sender。

TransactionProof必须应用于递增的BlockNumber中。

一旦该操作被递归地应用于所有交易证明,客户可以通过搜索已验证快照中的所有元素(块号等于当前Plasma块,所有者等于其地址)来检查自己现在拥有的新硬币。

交易证明有效性(TransactionProof Validity)

上述步骤1中的交易有效性检查等同于检查智能合约的有效性条件。基于上面的和树规范的基本有效性检查如下:

1.检查事务编码是否格式正确。

2.对于每次转移和相应的转移证明:

a.检查签名是否解析为其transfer.sender地址

b.验证inclusionproof的根是否等于该Plasma块的根哈希,以及leafindex定义的二进制路径。

c.计算分支的implicitstart和implicitend,并验证implicitstart<=transfer.start<transfer.end<=implicitend

本文来源: 区块链研究实验室

免责声明
世链财经作为开放的信息发布平台,所有资讯仅代表作者个人观点,与世链财经无关。如文章、图片、音频或视频出现侵权、违规及其他不当言论,请提供相关材料,发送到:2785592653@qq.com。
风险提示:本站所提供的资讯不代表任何投资暗示。投资有风险,入市须谨慎。
世链粉丝群:提供最新热点新闻,空投糖果、红包等福利,微信:juu3644。