总结出来的一个结论是,目前对于
区块链行业,由于低吞吐量带来的高手续费,给开发DApp带来很多功能限制。
可扩展性无论是学术界还是产业界都致力于解决区块链低吞吐量的问题。其中一个方法是增加区块大小。如果把区块大小增加,吞吐量会有一个提升。但是由于带宽限制,这不是个提升吞吐量的高效(100倍)解决方案。
方案二,通过链下交易。链下处理所有交易,将结算部分上链。因为可以使用中心化的服务器处理交易,那么可以轻松实现每秒上千/万笔交易。通过这样的方式可以有效提高吞吐量。但是也有劣势,因为不是所有交易都在链上完成,那么中心化的服务器本身会不会进行一些作弊?透明度是个问题。
方案三,我们不再采用链式的数据结构,而是采用图结构,不同的节点可以生产不同的区块进行广播。当一个节点想打包区块的时候,可以基于过去的区块,建立一个有向无环图,再打包分发给其它节点。好处是可以包含多种交易,同时提高吞吐量。在图结构里面可能很多交易是有冲突的,对于最终要执行的智能合约是有分歧的,这就是图结构所遇到的难题。
方案四,代理人机制。参与共识协议的节点越少,跑起来越快,吞吐量越高。只有少量的超级节点参与共识协议可以达到一个高吞吐量,但是容易被大家垢病的是少量的代理节点能否代表整个社区。如果节点越少,这些节点不太喜欢某一些交易或者某一些应用,其实可以拒绝这个应用提交的交易。这就回到了中心化的弊端。
还有,就是分片以及多链。这个解决方案代表了一个趋势,在不损失很多去中心化特性的同时,可以达到比较好的吞吐量。大家看到最新的
以太坊2.0和新的分片项目,还有一些跨链项目,大家会发现这中间的区别已经变得很模糊,很多时候可以把一个分片看成一个同构的链。在处理多链跨链交易的原子性协议和分片协议里面提到的原子性协议区别不大,有的采用同样的技术。只不过多链技术以及分片技术,有的时候会有一个中继链或者中继分片来协调不同的分片或者不同的链。但是归根到底,技术本身其实有很多相似的地方,这里统一起来进行讲解。
分片就是将交易分而治之,从而提高吞吐量。举个例子,有一千道问题,同时有一百个人解决问题。现在可以分组,一百个人分成十个小组,将一千道问题分给十个小组,每个小组十个人处理一百道问题,根据绝大多数人的答案形成一个共识,那么我们其实可以保证每个小组正确的解决一百道问题,这样整个解决时间就从一千减小到一百。未来如果有更多的听众,例如一千个,我们可以把一千人分成一百个小组,一百小组解决一千个问题,一个小组只解决十个问题,最终只用解决十个问题的时间把一千个问题都解决了。然而可能会出现一些攻击情形,假如如果有十个攻击者,他们合谋分到第一个小组,达成共识的时候不遵循一些原则,例如把一分钱掰成一万块人民币来进行双花攻击。如果攻击者能控制一个分片,产生的攻击在一些协议里面其它分片是不能进行阻止的。
版权申明:本内容来自于互联网,属第三方汇集推荐平台。本文的版权归原作者所有,文章言论不代表链门户的观点,链门户不承担任何法律责任。如有侵权请联系QQ:3341927519进行反馈。