区块链第二层扩容方案Plasma和Rollups

Posted 链巨人

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了区块链第二层扩容方案Plasma和Rollups相关的知识,希望对你有一定的参考价值。

本文首发在本人知乎专栏 https://zhuanlan.zhihu.com/p/361016799

目前的permissionless区块链系统比如以太坊和比特币存在扩展性问题,表现为每秒所能处理的最大交易量有限。以太坊15tps左右,比特币7tps左右。为了让区块链系统能够处理更多的交易,人们提出了很多方法,比如blockchain sharding技术,新的共识算法,RSA accumulator,ZKP,和off-chain。off-chain包含payment channel、state channel和plasma以及rollups,都是layer2扩容方案。

这里讲解Plasma和Rollups.

Plasma

Plasma有很多变体,但是它的总体思想是一样的:有个体叫operator,ta用个人网站收集用户发来的交易数据Ti,将这些数据作为输入生成一个hash值,定期把新生成的hash值发布到区块链(比如以太坊)中。operator然后将一个证明返回给用户。这个证明是用来向这个用户证明这个交易已经“链接/敲定”到区块链上面了(交易数据到Merkle tree的根的路径信息)。

 

需要注意的是,只有hash值被保存在区块链中,那些交易数据并没有。

为什么要这样做呢?这样子,operator所管理的这个网站就相当于一个虚拟的银行,用户可以在这个虚拟银行中相互转账,而不是必须要跟main-chain(这里指上文中的智能合约区块链,比如以太坊)交互。举一个例子,我现在在operator那里注册一个账号,“可以”不跟main-chain交互,就能够接收到别人给我的转账。我也可以使用以太币兑换成这个plasma的代币来在这个虚拟银行中使用,只要我账号中有了代币,正常情况下可以不用跟main-chain交互。因此,显而易见的,在这个虚拟银行中转账,可以显著降低转账手续费。

虽然operator是一个个体,可能是malicious的,但是,这个协议能够保证operator无法盗取用户的钱,不过这个保证有一个前提:需要用户时刻监视着main-chain。需要注意的是,这个协议只提高吞吐量,而不是降低交易延迟。它需要用户时刻监视着main-chain,以免operator或者其它用户作恶(比如盗取用户钱)-- 当这种情况发送时,需要用户向main-chain中的智能合约提出挑战来解决争端,阻止operator的这次作恶。具体的攻击可以参考这篇blog: 深入理解Plasma(四)Plasma Cash | 登链社区 | 深入浅出区块链技术

存在的另一个可能的攻击是operator不将证明数据发给用户。这样子用户既无法控告operator,智能合约又无法区分是谁在作恶。

出现上面所述问题的本质原因是“data unavailability”,因为只有一个hash值被提交到区块链中。因此,区块链中的共识算法无法评判到底是谁在作恶,不知道到底发生了什么。

除此之外,plasma还存在下面两个大问题。(1)攻击者比如恶意的operator能够强迫诚信的用户向main-chain提交大量的通信数据来“挑战”operator,避免自己的钱被盗取。(2)因为区块链中只保存了hash值,因此,当智能合约需要处理“争端”时,智能合约并不知道到底是谁在作恶,因此无法让作恶的那一方来支付在争端过程中所产生的交易费用。这个交易费用是不少的,因为需要将交易数据和相应的证明发送到main-chain,还需要触发智能合约来judge。关于这个方面的细节可以参考这篇论文:Lower Bounds for Off-Chain Protocols: Exploring the Limits of Plasma。

为了解决因为data unavailability所带来的问题,我们做出了折中:我们只将交易的必要的数据保存到main-chain中,而不单单是hash值。于是我们有了rollups。

Rollups

Rollups的思路跟Plasma相似,除了交易数据的hash值,我们还将交易的必要数据保存到main-chain中,比如转账人,收款人,转账金额等(后面将这些数据叫state)。如下图所示。

读者可能会问,这个state和现在的比特币转账交易数据或者以太坊的转账交易数据有什么区别?区别是state不包含转账人的签名等数据,而且其它字段都使用更小的字节空间来存储(如下图)。这样给人的感觉就是一种“压缩”,这样operator一次可以向main-chain提交几百甚至上千的压缩后的“交易数据”。这些state相当于保存在main-chain的log数据。转账人的签名等数据放到链下operator那里。

如何保证数据的一致性呢?为了这个一致性问题,出现了两种不同的技术路线,分别是Optimistic rollup和ZK rollup。前者以乐观的方式使用“challenge-response”的方式让智能合约来做裁判来解决争端。它的一个缺点是,用户要等待一周时间才能将钱从rollup中取出,因为需要留时间给可能存在的争端;后者需要operator在本地生成零知识证明(zkSNARK),智能合约通过验证该证明来判断数据是否一致(验证证明的过程的复杂度很低,而且该复杂度独立于交易的数据量和所需要证明的constraints,因此以太坊的智能合约完全能够胜任该验证任务)。它的一个优点是,用户可以很快就能将钱从rollup中取出,但缺点是需要operator有很强的算力来生成zk证明。具体还可以参考Vitalik的博客,里面有两者比较。https://vitalik.ca/general/2021/01/05/rollup.html

 

参考:

An Incomplete Guide to RollupsPlasma Cash: Plasma with much less per-user data checkingAn Incomplete Guide to Rollups

https://ethresear.ch/t/plasma-cash-plasma-with-much-less-per-user-data-checking/1298

https://www.youtube.com/watch?v=QyM9qdFKsEA&t=723s

On-chain scaling to potentially ~500 tx/sec through mass tx validation

深入理解Plasma(四)Plasma Cash | 登链社区 | 深入浅出区块链技术

深入理解Plasma(三)Plasma MVP(验证实现) | 登链社区 | 深入浅出区块链技术

https://www.youtube.com/watch?v=_TBANNaVfXk

Dziembowski, Stefan, et al. "Lower bounds for off-chain protocols: Exploring the limits of plasma."12th Innovations in Theoretical Computer Science Conference (ITCS 2021). Schloss Dagstuhl-Leibniz-Zentrum für Informatik, 2021.

barryWhiteHat/roll_up

以上是关于区块链第二层扩容方案Plasma和Rollups的主要内容,如果未能解决你的问题,请参考以下文章

深入浅出区块链

科普 | 区块链的扩容方案和主要的二层网络方案

科普 | 区块链扩容之侧链 v.s. Rollups

深入理解PlasmaPlasma 细节

深入理解PlasmaPlasma 细节

深入理解PlasmaPlasma Cash