什么是Plasma?Plasma Cash?
前言:我们知道Plasma是以太坊扩容方案之一,那么,到底什么是Plasma?什么是Plasma Cash?本文给我们一些简要的说明。
Plasma是一种设计模式,它允许链外消息驱动链上资产的转移。它通过将交易吞吐量转移到Plasma链来实现对根链的扩展。你可以把它看作是一个教授需要在短时间内批改许多考卷。教授可以将这项工作委托给助教,他们查看考卷上的每个问题并计算对应的分数,但只向教授报告总分。
每个Plasma链将交易排序的信息压缩到单个哈希,并存储在根链上。像比特币和以太坊这样的就是根链——这些区块链具有更强的安全性和去中性化保证(安全性和活性)。本篇文章将使用以太坊作为根链例子贯穿全文。
“Plasma 不是在中心化服务器上贴上一个Merkle树。”Plasma设计的两个主要分支称为Plasma MVP 和Plasma Cash。首先,让我们了解一下背景信息,从宏观角度了解下简单的用户流,之后再更深入地探讨每个部分。——Vitalik Buterin,2018年于TechCrunch,瑞士Zug
在开始之前,让我们先快速了解一下基本概念:
稀疏的Merkle树,来自: https://doi.org/10.1007/978-3-319-47560-8_13
稀疏Merkle树:一种大小不变的完美Merkle树,之所以称之为"稀疏",是因为大部分叶子是空的。
经济最终性:保证操作永远不会逆转,除非提供最终结果的一方将一大笔钱烧毁。
UTXO:未消费交易输出(unspent transaction output)。每笔交易都必须具有来自有效UTXO 集的输入。每笔交易的输出将成为新的UTXO 集的一部分。比特币就使用UTXO模型。
现在开始阐述Plasma。
1: 运营者将Plasma合约部署到主网
像交易所这样的实体,如希望拥有高交易吞吐量和低延迟(甚至实现即时的经济最终性)的实体将受益于运行Plasma链并成为运营者。合约所有者包含在合同的初始化中。
2:Plasma运营者创建区块
运营者的众多角色之一是聚合和排序交易,并将其打包到区块中,然后将Plasma区块的哈希提交到根链。
实现Plasma的方法有很多种。不同的Plasma链可以有不同的治理规则、不同的token、存储状态的方法等,但所有Plasma链会定期向根链提交哈希,以便继承根链的安全性。
3: Kanye是一个新用户,将ETH存入Plasma合同,并分配返回PETH
图片由阿里·格雷厄姆提供
在两种主要的Plasma设计中,你可以将任何token存入Plasma链并接收到与之相对应的token。所以,如果Kanye存入ETH,他会得到PETH!如果他存入BTC,他就会得到PBTC!(Plasma Cash的规范更好地支持ERC721 资产,如加密猫,但并非所有Plasma规范都支持存入任何token)。
4: Kanye 向Donald汇款,但Donald还不在Plasma智能合约中
Kanye 并不仅限于汇款给那些已经是Plasma合约成员的人!他也可以汇款给Donald这样的以太坊巨鲸。
在"Plasma Cash"规范中,你存入的每个代币都会被分配唯一的ID。这些唯一ID存储在稀疏Merkle树中。代币有所分配的(Merkle树的)叶子的索引,而这些索引是这些代币可用于交易的唯一位置。
想想买卖房产——当你交易房子时,房子不会移动,但拥有房子钥匙的人会改变,房子的契据是当事人的记录以及所有权易手的频率。这使得它非常容易检查token的历史记录,因为你能够轻易的在Merkle树中查找到这些记录!
图片由亚当·埃利斯提供
在这里,我们具体看Kanye发送给Donald的token的索引。Kanye 在发送token时必须包含token的历史记录。如果token被多次交易,其历史记录可能会变得非常冗长!稍后我们将讨论如何改善这种情况。但就目前而言,这对Donald来说可以接受,他只需要下载他关心的代币交易历史。
5: Donald 有两种选择: 继续花费PETH 或创建退出交易以在根链上兑换出ETH
Donald 不需要向运营者提交消息成为Plasma合约会员,以实现退出PETH并赎回ETH。Donald想立即换掉代币以保持匿名,所以他不想继续使用他的PETH。
他拿到了token的历史记录,以证明所有权,并将记录放入提交到 Plasma 合约的退出请求中。他的退出交易还包括gas费和作为抵押的保证金(以防止撒谎)。当一切停当,如果没有人挑战Donald,他能在根链上用PETH赎回ETH。
棒极了!我们已经在宏观上阐述了一个理想的场景,因此让我们深入探讨这一工作流中的每个部分:交易、退出和Plasma运营者的角色。请务必注意,它存在多种规范,不同执行方案的规范之间存在差异,但以下内容会让你熟悉一些核心的Plasma 概念和词汇。
交易
每当Kanye 发送token时,他还必须同时发送该token的历史记录。在Plasma Cash中,用户只需下载他们关注的代币的交易历史。分片客户端验证允许每个用户的数据负载更轻。
但是,如果一枚代币被花了很多很多次,那么该代币的历史就会变得很长并难以在交易中传输。解决这一问题的一种提议是引入检查点。一旦检查点最终确定,客户只需提供从该检查点(有最终性)开始的证明,这样可以将证明的大小变成常数,而不是线性增长。
Plasma Cash检查点基于加密经济聚合签名,为在Y区块高度的用户X对代币的所有权提供了经济保证。
遗憾的是,在Plasma Cash中发送任意小面额的代币更加困难(Plasma借记或状态通道是对这一缺陷的改进方案)。当调用存款函数时,用户指定其存款的面额,这一方案使得Plasma Cash适合发送ERC721非同质token,而Plasma MVP的UTXO模型更适合处理任意面额交易。
退出
当提款被认为是如下情况,退出就产生了挑战:
1. 退出一枚已经花过的代币
2. 双重退出代币
3. 退出有无效历史记录的代币
任何人都可以提交欺诈证明来挑战退出者,如果他们在撒谎,他们将失去他们的保证金。
黑客攻击怎么办?
Plasma链安全保证与根链一样好。如果Plasma链被黑客攻击,黑客必须提交退出交易,以得到他想窃取的所有资金!在Plasma Cash中,黑客必须在他的退出交易中包括保证金,他不能带着所有窃取的资金潜逃。
Plasma运营者
Plasma运营者的主要作用是将交易聚合到区块中,并将每个Plasma区块的Merkle 树发布到根链。
在更复杂的设计中,中心运营者可以由PoS 验证者取代,从而缓解对交易审查的担忧。然而,拥有中心运营商有很多好处,而且我们可以用Plasma运营者的保证金做很多有趣的事情:
· 即时经济最终性!由于运营者负责创建区块,因此他们可以提供有关交易包含和排序的保证。运营者会因为撒谎而付出失去保证金的代价,因此用户会立即知道他们的交易是否包括在内。
· 无效退出处罚:可以惩罚运营者允许无效退出的通过,并消减其保证金中的资金。
· Casper验证:运营者可以是Casper PoS验证者(验证者有保证金)
· 你能想到其他的吗?
Plasmas总结
图片由海登·亚当斯提供
本文作者Jinglan Wang,由蓝狐笔记社群的“Cipher”翻译。