本文首发在本人知乎专栏 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相关推荐

  1. 浅谈几种区块链网络攻击以及防御方案之51#37攻击

    旧博文,搬到 csdn 原文:http://rebootcat.com/2020/04/11/network_attack_of_blockchain_51_attack/ 写在前面的话 自比特币诞生 ...

  2. 浅谈几种区块链网络攻击以及防御方案之其它网络攻击

    旧博文,搬到 csdn 原文:http://rebootcat.com/2020/04/16/network_attack_of_blockchain_other_attack/ 写在前面的话 自比特 ...

  3. 浅谈几种区块链网络攻击以及防御方案之拒绝服务攻击

    旧博文,搬到 csdn 原文:http://rebootcat.com/2020/04/14/network_attack_of_blockchain_ddos_attack/ 写在前面的话 自比特币 ...

  4. 浅谈几种区块链网络攻击以及防御方案之女巫攻击

    旧博文,搬到 csdn 原文:http://rebootcat.com/2020/04/13/network_attack_of_blockchain_sybil_attack/ 写在前面的话 自比特 ...

  5. 浅谈几种区块链网络攻击以及防御方案之日蚀攻击

    旧博文,搬到 csdn 原文:http://rebootcat.com/2020/04/12/network_attack_of_blockchain_eclipse_attack/ 写在前面的话 自 ...

  6. 区块链激励层——区块链生态建设的驱动力量

    在区块链的层级架构下,我们可以看到借由区块链数据层.区块链网络层.区块链共识层.区块链合约层,保证了有数据.有网络,以及在网络上更新数据和自动化执行的规则.但潜在的挑战是,在区块链P2P网络中,我们如 ...

  7. 陀螺产业区块链第二季 | “货兑宝”区块链电子存货仓单创新应用

    2020年4月,国家发改委在例行新闻发布会上宣布区块链被正式列为新型基础设施中的信息基础设施,自此区块链正式搭上新基建的"风口". 与传统基础设施建设相比,新型基础设施建设更加侧重 ...

  8. 区块链电子签名技术及方案

    数字签名技术是电子签名的底层核心技术,由非对称密钥加密技术和数字摘要技术构成.首先发送方利用Hash函数对文件内容进行加密并生成数字摘要,然后利用私钥对数字摘要加密形成数字签名;接收方利用发送方提供的 ...

  9. 在企业中应用的区块链应能够扩容以满足业务条线的需求

    发表时间:2022年8月19日 信息来源:bsvblockchain.org 企业将业务条线(LoB)应用迁移至BSV区块链涉及到对业务的重大规划和评估.在采用新的架构之前,决策过程中的多个阶段的问题 ...

最新文章

  1. vim-addon-manager install youcompleteme
  2. java capacity_关于Java中StringBuffer的capacity问题
  3. java中 queryparam_@PathParam 和 @QueryParam
  4. ajax(检测用户名,添加数据)
  5. [数据结构]合并有序数组
  6. swiper切换按钮位置改变_2019-01-18左右按钮控制swiper轮播图切换
  7. niceTitle插件
  8. 相亲交友小程序,案例:情深深之恋
  9. 用户画像的定义及构建方法
  10. 802.11 Beacon帧
  11. 从百度有啊独立看O2O发展的三大趋势
  12. 关于电影《暗杀》背后的故事和想法
  13. 星号下三角形python答案_Python练习题:星号三角形
  14. 剖析Apple Pay 它与支付宝究竟暧昧什么?
  15. 运筹学-2-单纯形法的矩阵计算
  16. windows PC/SC 常用Scard前缀函数说明
  17. DC(Design Compiler)使用说明
  18. freetype安装
  19. 【Python图像处理】SciPy库
  20. 强大实用的报表工具,一键生成报表

热门文章

  1. C++ 偏微分数值计算库_【动手学计算机视觉】第一讲:图像预处理之图像去噪...
  2. html5自定义属性作用,html5自定义属性:如何获取自定义属性值(附代码)
  3. elasticsearch使用bulk实现批量操作
  4. 【微信】微信小程序 微信开发工具 创建js文件报错 pages/module/module.js 出现脚本错误或者未正确调用 Page()...
  5. 转载:Ajax及 GET、POST 区别
  6. ubuntu12.04安装node.js详细步骤
  7. 【IOS】ios之httpServer
  8. Oracle 表的访问方式(2)-----索引扫描
  9. matlab norm 范式
  10. 转eclipse如何修改dynamic web module version .