区块链扩容技术之Plasma Cash

Plasma Cash另外一种Plasma技术,大部分逻辑和Plasma MVP差不多,因此本文主要介绍plash cash不一样的地方,Plasma MVP的相关信息请看这篇文章【

区块链扩容系列之Plasma MVP

】。Plasma Cash的整体架构如下:

用户调用deposit将主链的ETH, ERC20, ERC721代币生成coin,coin类似房产,只能整体交易,没法分割,用户在子链通过交易修改coin的所有权(更改coin的owner)

交易数据结构

Plasma MVP中transaction包含的是UTXO信息,而Plasma Cash系统中Transaction包含的是coin信息, coin的原owner(from)所有权证明(pre_block),coin的新owner(to)。

Coin交易历史

Plasm cash区块采用稀疏merkle组织交易,每个区块的交易Merkle树的节点数量是一样的,每个coin占据一个叶子节点,且位置永不变动。当区块包含一个coin的交易时,coin对应的叶子节点才有值,否则是默认值。通过这种稀疏merkle树,系统很容易生成如下两个证明:

coin包含证明:

从deposit block到最新区块间包含该coin交易的区块证明, 用来验真,即用来验证某个coin在某个区块被交易了,被更改为新owner了。包含证明是个数组,每个元素是一个区块的包含coin交易的merkle验证数据。

coin排除证明:

从deposit block到最新块间不包含该coin交易的区块证明,用来验否,即用来验证某个coin在某个区块没有被交易。用来验证coin最新owner的有效性。排除证明也是个数组,每个元素是一个区块不包含coin交易的merkle验证数据。

比如coin1在1000高度有合法的包含证明,被转移给了alice了,且1001高度后有合法的排除证明,则可以认为alice是coin1的最终拥有者。这样的好处是,当alice将coin1转给bob时,alice只需将这些证明发送给bob,bob可以不需要有链的任何历史交易数据即可认可这笔交易。同时,alice也不需要保存子链的全部数据,只需保存coin1的交易记录,大大降低了每个用户的数据量。

交易Merkle root生成流程如下:

ChallengeExit机制

Plasma cash的挑战机制分为3类,具体如下

challengeAfter:

challengeBetween:

challengeBefore:

和plasma MVP operator可以伪造utxo不同,plasma cash的operator是没法伪造coin的, 因为每个coin主链合约可以轻易查询检测。因而operator只能伪造coin交易记录,但是这个又可以通过challengeBefore来挑战,从而导致operator伪造失败。Plasma MPV模式下,operator可作恶,系统没法干预和制止这种行为,只能通过全体用户调用startExit退出生态这一极端行为来解决。而Plasma Cash通过challenge机制即可解决operator作恶问题,是一个很大的提升。

Plasma Cash的缺点

1)coin交易不能分割,只能完整交易,只适合大额和fungible token交易,不适合小额交易。针对这个缺点,目前plasma debit项目在解决这个问题。

2)当区块增长时,coin的包含证明和排除证明数据不断增大

我们假设系统支持1000个coin, 这会生成一个深度为10的稀疏merkle树(2^10=1024), 这意味着每个merkle证明需要提供10个兄弟节点hash, 每个hash是32字节,所以每个merkle证明的数据大小是:32*10=320字节。我们再假设每15s出一个区块,一年就是4×60×24×365=2102400个区块,这样一年后,一个coin的合法证明的数据长度为:320*2102400=0.67G,这个数据还是蛮吓人的。为了解决这问题,开发人员提出了checkpoint的概念,即每隔一段时间裁剪coin的历史记录。

公众号:区块链斜杠青年

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181017G0GJWN00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券