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)。
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生成流程如下:
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作恶问题,是一个很大的提升。
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的历史记录。
|**************************************************
* 本文来自CSDN博主"爱踢门",喜欢请点关注
* 转载请标明出处:http://blog.csdn.net/itleaks
***************************************************|
如果你对EOS,ETH技术及开发感兴趣,请入QQ群讨论: 829789117
如需实时查看最新文章,请关注公众号"区块链斜杠青年",一起探索区块链未来