区块链扩容方案详解
Posted 区块链星际社
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了区块链扩容方案详解相关的知识,希望对你有一定的参考价值。
区块链的拥堵情况一直是近几年来行业中一个十分苦恼的问题。早在2017年,CryotoKitty 引发以太坊拥堵开始,便受到了许多人的重视。
在不断地探索下,区块链开发者们也找到了一些解决方案。总体上来说,这些解决方案主要可以分为两大类;
一是通过对区块链本身进行改造,即所谓的 Layer1方案,主要是通过对区块分片来实现;
二是通过将数据的交易执行和处理放在链下,区块链仅仅只是验证交易的有效性,提供安全保证,这也是目前较为主流的扩容方式,即我们常听说的 Layer2方案。
Layer2解决方案,根据发展历程,主要有三种,分别是状态通道、Plasma和Rollup。都始终遵循着将大批量实际交易在链下进行,区块链上只通过极少量的交易验证最终有效性的原则。
状态通道
这是一种比较早期的 Layer2方案,它简单来说便是将第一次和最后一次的交易放在区块链当中执行,而在中间环节中形成的状态通道,支持发送无限数量的签名信息。
这里有一个例子可以让我们十分清楚地明白什么是状态通道。
在我们日常生活中,总是有一些商家喜欢推荐我们办会员卡,并提前在卡中预缴一定的费用。比如我们在一些网上的培训课程,通过预先在会员卡中的缴纳的费用。在之后的过程中,我们都可以使用这张卡进行消费,此时我们不需要再进行付款,只需扣除卡里的余额即可。而当我们不再需要使用这个卡时,找到客服办理退卡,客服便会将卡里最终剩余的钱退还给我们。
在整个过程中,我们进行了很多次的交易,但是,真正进行转账的过程只有最初的充值,以及最后的退款。这个过程便是一种十分形象的状态通道。如果我们不办理会员卡,即不开启转态通道,那么我们每一次的交易,便都会进行一次实际的转账,从而使整个过程变得十分复杂。
状态通道通过这种方式十分有效的解决了区块链中的拥堵问题,但同样,这也有一定的局限性,从前面关于“会员卡”的例子中我们不难发现,要完成这个过程需要提前支付一笔费用,而在区块链当中,便是导致大笔的资金将会被锁定而导致无法灵活运用。同时,这也必须要求资金发送方和接收方都要参与到这个通道当中,才能顺利完成这个过程。
Plasma
Plasma 是一种为了解决状态通道局限性而出现的全新解决方案。它本质上并非技术的创新,而是在区块链主链之外另开一条子链。Plasma 链可以拥有和主链不同的共识机制,也可以有不同的节点为它提供共识。Plasma 链的核心原理便是在链上会存在一个名为“Operator”的角色机制,会定期将这一子链上的状态,生成默克尔树,并将这一默克尔树的根哈希传递给主链进行记录和验证。
通过 Plasma 链的这种方式,主链只需验证最终的根哈希,便可确定资产转移的有效性。而在子链中的交易,就如同正常的区块链交易一般,没有了状态通道存在的限制。
不过,Plasma 也产生了新的问题,那就是“数据不可用”。简单来说便是,Plasma 只会向主链提交转态转移的结果,不会提交在链上发生的交易数据。这便导致无法通过主链的安全性保证来对这些交易数据作验证。用户使用 Layer2 的前提便是基于主链的安全性,而 Plasma 虽然在效率上提升十分高,但却使得这个过程中的安全级别变得比较低。
Rollup
Rollup可以说是一种对于对于主链处理和 Plasma 的折中方式,Rollup 和 Plasma 最大的区别便是增加了交易数据的提交,允许任何人都可以进行验证这些数据,大大提高了安全性。
当然,Rollup 也并非是直接加交易数据不加任何处理直接提高,那样毫无意义。它会最大限度对这些数据通过编码方式进行压缩处理,并且还会适当删除一些不影响最终在主链进行验证的数据。
其主要方式是通过在主链上建立一个或多个相关联的合约,这个合约主要便是用于记录来自于 Rollup 中形成的默克尔树根哈希,这一点和 Plasma 有很大的相似性。而不同之处在于,Rollup 默克尔树记录的是它当中用户的账户状态信息。
从原理上来看,Rollup 本质上是将发生在其中的多个交易进行汇总,发送到主链中在其中形成一笔新的交易。分散的交易在 Rollup 中执行和计算,主链则是根据汇总而来的数据确认并验证这些交易。这在提升交易效率,降低交易成本的同时,也与主链建立了同一级别的信任。
总结
Rollup 的扩容解决方式是当前一个比较优秀的方案,当然,也只限于当前。Rollup 的确解决了普适性、数据可用性,以及安全性等问题,但它并非是完美的,它也同样存在一些诸如效率瓶颈、通讯难题等问题。从整个区块链的发展过程来看,更为优秀的解决方案产生是十分快的,我们也同样期待有更好的扩容方案来替代 Rollup。
以上是关于区块链扩容方案详解的主要内容,如果未能解决你的问题,请参考以下文章