区块链的可扩展性问题及解决方案对比

article/2025/8/4 12:57:37

区块链的性能问题

VISA是目前世界上广泛使用的信用卡品牌,区块链要达到实用水平,性能上至少需要能跟VISA之类的支付系统作比较。根据VISA在2015年的记录,全年共产生92,064百万笔支付交易,平均2920tps,按平均每笔交易512字节左右计算,全年交易数据量约47TB。

而目前主流区块链性能情况是,比特币每秒只能进行大约7笔交易;以太坊每秒10-20笔。目前这些区块链的交易性能都无法与VISA相比。更严重的是,目前比特币和以太坊的矿机都需要存储全量数据,而单个机器的存储容量是有限的,若无法解决这个问题,即使交易性能提升了,若按每年新增数据量47 TB算,那么这些数据很快就会超过单机的容量,到时候整个区块链网络都无法继续运行。

那么,比特币和以太坊这种拥有海量节点的区块链系统,为什么性能却这么低呢?为什么区块链的可扩展性这么差呢?

原因分析

区块链是去中心化的账本技术,需要保证开放性、自治性、不可篡改等特性。去中心化是指使用分布式核算和存储,不存在中心化的硬件或管理机构,任意节点的权利和义务都是均等的,系统中的数据块由整个系统中具有维护功能的节点来共同维护。也就是说,系统中任意节点都需要对交易数据进行全量计算和存储。因此,区块链是没有可扩展性的,即系统的总体性能受限于单个节点的性能上限,即使加入了大量节点,系统的总体性能也无法提升。

可扩展性是传统分布式系统的基本特性,但区块链由于去中心化的要求,可扩展性却难以满足。业界总结了一个三元悖论描述去中心化与可扩展性之间的矛盾,它尚未被严格证明,只能被称为猜想,但实际系统设计过程中却能感觉到时时受其挑战:

去中心化(Decentralization),安全性(Security)和可扩展性(Scalability)这三个属性,区块链系统无法同时满足,最多只能三选其二。
区块链的可扩展性问题及解决方案对比

上图演示了区块链如何在这三个因素之间作选择及对应的策略,例如若若要满足安全性与去中心化,则需要所有节点参与共识、计算、全量存储,但由此带来的问题是失去可扩展性,也就是系统的总体性能无法随着节点的增多而提升;若要满足可扩展性与安全性,则需要中心化管理,需要保证参与共识的节点是可信的;若要满足可扩展性与去中心化,则采用分散存储、计算的策略,不做全量共识,则***网络的难度降低,安全性难以保证。

提升区块链系统性能的方案

我们知道,影响区块链交易性能的主要因素包括共识机制、交易验证、广播通信、信息加解密等几个环节。从这些环节入手,我们可以得到一些提升性能的方法。

共识机制

从PoW到PoS再到DPoS和各种BFT类算法,共识机制不断创新,区块链平台性能也得到大幅提升。

交易验证

从交易验证机制角度出发,目前有几种优化处理方式:

1)闪电网络(Lightning Network)和状态通道(State Channels),这两种策略是保持底层的区块链协议不变,将交易放到链下执行,通过改变协议用法的方式来解决扩展性问题。链下的部分可以用传统的中心化的分布式系统实现,性能具有可扩展性。在这种策略下,分布式账本上只是记录粗粒度的账本,而真正细粒度的双边或有限多边交易明细,则不作为交易记录在分布式账本上。缺点是存在中心化的系统。

2)分片处理(sharding),以太坊项目正在研发中的分片(shard)方案的总体思路是每个节点只处理一部分交易,比如一部分账户发起的交易,从而减轻节点的计算和存储负担。

3)多链架构(Multi-chain)的思路则是将原本的一条链分成多条链,每条链都负责部分计算和存储业务,并且有可扩展性,即链的数量可以随着业务量和数据的增加而增加,系统的总体性能随着链的数量的增加而提升,系统的存储空间也能随着链的数量的增加而扩大。

广播通信

P2P网络是区块链的核心技术之一,因此P2P网络通信的效率对性能的影响非常重要。为了能改善广播通信性能,需要提高节点机器的物理配置,提供高速网络连接,并采用减少广播的共识算法,如DPoS等。

信息的加解密

信息的加解密是区块链的关键环节,主要是哈希函数和非对称加密两类算法。区块链系统中可以采用更高性能的加密算法以提升交易验证的性能。

方案对比

上述优化方法中,共识机制、广播通信、信息加解密是算法层面的优化,尽管这些方案也是重要的优化,但其没有解决根本性的问题,其性能提升仍然受限于单机性能,不是可扩展的,因此性能提升有限,本文不再详述;交易验证的几个优化方案则是可扩展的方案,其中闪电网络和状态通道是链下执行的方案,采用中心化的系统提升区块链性能,与区块链去中心化的理念相悖,而且使用复杂、用户体验差(例如闪电网络要求交易中的双方以及中间人都必须同时在线、线下系统开发复杂因为要寻找可用的支付通道、不适用于大额交易等),无法得到广泛使用。因此EOS、以太坊、Cosmos及迅雷链等高性能区块链项目均采用分片或多链方案。

分片或多链方案的思路是一样的,都是让每个分片或分链进行部分交易数据的处理和存储,每个分片和分链可以并行处理不同的交易数据,这样分片或分链的数量越多,系统的总体性能就越高,这两者都是可扩展性很强的方案。

1、EOS的多链实现方案

EOS的技术白皮书中并没有描述多链的实现方案,只描述了支持跨链通信的IBC(Inter Blockchain Communication)协议,跨链交互通过简化生成消息存在的证明和消息序列的证明来实现。EOSIO声称主链可以支持3000以上的TPS,通过IBC可达到100万TPS。

EOS的多链架构其实是侧链方案。开发者可以单独部署一条EOS侧链(公链、私链都可以),运行自己的Dapp,这些侧链有可以有自己的委员会,见证人以及计算资源,有自己的代币,这些代币有自己的增发方式,而且代币可以和EOS通过接口进行锚定去实现包括锁定在内的某种操作。侧链最大的特征双向锚定(two-way-peg)技术,它使得在侧链流通的Token价格总是与EOS价格保持一定比例或者直接采用EOS。

因此EOS的多链架构并不是对主链本身进行可扩展性改造,只是期望通过子链来分担主链的压力。

2、以太坊的分片技术(Sharding)

分片(Sharding)是以太坊正在开发中的技术,其大致设计思路是:将区块链网络中的每个区块变为一个子区块链,子区块链中可以容纳若干(目前为100个)打包了交易数据的Collation(大概可以称为“校验块”,为了在分片的情景中将其与区块的概念区分开),这些Collation最终组成一个在主链上区块;因为这些Collation是整体作为区块存在的,所以其数据必定是全部由某个特定的矿工所打包生成,本质上和现有协议中的区块没有区别,所以不再需要增加额外的网络确认。这样,每个区块的交易容量就大概扩大了100倍;而且这种设计还有利于未来的继续扩展。

跨分片通信: 利用 UTXO 模型,并通过在主链上进行交易和创建一个 receipt(带有 receipt ID),用户可以将以太存入一个指定分片。分片链上的用户可以给定 receipt ID 创建一个消费 receipt(receipt-consuming)的交易,来花费该 receipt。但UTXO适用于交易,对于合约状态数据存储不适用。
区块链的可扩展性问题及解决方案对比

3、Cosmos的多链技术

Cosmos项目的目的是解决区块链交互操作和可扩展性问题,其区块链间通讯协议可以实现区块链的互联,支持不同区块链之间的资产转移。

网络主要由两部分组成,Cosmos Hub和若干个Zone。
区块链的可扩展性问题及解决方案对比

Cosmos网络里第一条链是Hub,从名字和功能上都可以把它理解为Cosmos的中心链或者管理员链,所有其它区块链的交易都会在Hub记录,一条区块链上的token可以通过Hub转移到另一条区块链。Hub是Cosmos网络的核心,和其余的Zone是不平等的,从严格意义上讲Cosmos网络不是真正的分布式系统,如果Hub发生了单点故障(当然Hub本身是分布式的,发生问题的机率很小),Cosmos网络的很多特性会不可用。关于这点,白皮书中强调Hub必须得到严格保护。

每个Zone可以看做是单独的区块链空间。每个Zone会和Hub保持状态同步。Hub通过去中心化的验证人组来保证安全性。Zone1向Zone2做跨链消息时,Zone1先生成消息包,并将其证明发布在Hub上,接下来Hub会生成Zone1的跨链消息包已在Hub上的存在证明的证明发布于Zone2,接下来Zone2收妥消息包,并给出证明发布于Hub上,最后,Hub再给出Zone2的收妥证明的证明发布于Zone2。完成整个跨链消息传递。

4、迅雷链同构多链架构

迅雷链是同构多链的架构,即每条链的结构相同、地位平等。即系统由一条条相对独立(独立进行共识)的链组成,每条链有多个节点,每个节点被分配到其中一条链上,不同的账户数据被锚定在不同的同构链上,然后接入层将交易路由到发送方所在的链上进行区块打包与共识。系统中链的数量能够按业务需求动态增加。因此同构多链的架构首先保证了系统的可扩展性。
区块链的可扩展性问题及解决方案对比

不同于EOS等区块链系统需要昂贵的高性能服务器作为记账节点,迅雷链使用廉价省电的玩客云设备作为记账节点,构建了自己的大规模共享计算平台。目前玩客云节点数量已超过150万个节点数,如此庞大的节点数量,对区块链系统的可扩展性提出了严峻的挑战。挑战主要来自两个方面:

1)玩客云设备廉价省电,性能也低,这就要求共识算法必须使用绿色环保、适应家庭用户的网络环境的算法。针对这个挑战,迅雷链在改进的PBFT的基础上,还融合了DPoS的思想,在每条链上,都会周期性地(例如每隔5000个区块)选举出验证人节点参与共识。与传统的DPoS不同之处在于,迅雷链并不是根据矿工持有的代币数量或币龄作为选举标准投票权重,而是按玩客云节点的存储容量、网络稳定性、带宽、时延等标准作为衡量标准,以获得更好的公平性和网络效率。

2)玩客云节点数量庞大,家庭网络环境复杂,要求区块链系统必须设计成可扩展性高、自治能力强的架构。得益于同构多链的架构非常强大的可扩展性,迅雷链能够充分利用海量玩客云节点,可以将链数“无限”扩展,从而具备百万级的并发处理能力。

综上所述,迅雷链采用多链架构实现了可扩展性 + 使用PBFT实现了强一致性 + 使用更绿色环保和公平的DPoS进一步提升了共识效率、也得到了更高的可用性。从去中心化(Decentralization),安全性(Security)和可扩展性(Scalability)三要素的角度看,由海量的广泛分布的玩客云设备支撑了去中心化和安全性,采用多链架构以实现可扩展性。

总结

共识机制、广播通信、信息加解密等算法层面的优化,无法解决大规模去中心化系统的可扩展性问题;而闪电网络和状态通道是链下执行的方案,则与区块链去中心化的理念相悖,而且使用复杂、用户体验差,无法得到广泛使用。因此前沿的区块链项目均采用可扩展性强的分片或多链方案。

其中,EOS目前是多线程的架构,总体性能还是受到单台机器的性能所限,需要昂贵的服务器来运行区块链节点,可扩展性并不算强;以太坊正在开发中的分片技术则需要主链负责验证子链的区块,由于主链会存在性能瓶颈,因此子链数量受到限制(100个子链);Cosmos也是同样的问题,Hub必须得到严格保护;迅雷链采用的同构多链架构则避免了上述缺点,适用于大规则廉价节点的部署, 可以将链数“无限”扩展,从而具备百万级的并发处理能力。


http://chatgpt.dhexx.cn/article/fYSOMiAb.shtml

相关文章

#私藏项目实操分享# 提高区块链的可扩展性并不需要牺牲安全和去中心化

可扩展性难题?区块链不可能三角?这篇论文可能有解决之道 背景 “The block chain scalability trilemma”(可扩展性难题)-是由以太坊创始人Vitalik Buterin创造的词语,国内亦被翻译为“区块链不可能三角”问题、“三元悖论”,是指…

【软件质量】软件可扩展性

文章目录 软件可扩展性纵向扩展横向扩展软件可演化性软件可扩展性 可扩展性是当系统的应用领域和设计的特征在操作范围内发生变化时,系统将质量目标满足其利益相关者可接受的水平的能力。在考虑计算机系统的可扩展性时,不仅要考虑软件,还要考虑它在上运行的基础设施(硬件)。…

面试问题:如何实现软件可扩展性

网站的可扩展性架构设计,能够在对现有系统影响最小的情况下,系统功能可以可持续扩展及提升的能力。 在此,对容易混为一谈的 “扩展性” 和 “伸缩性” 的概念进行详细说明: 扩展性 表现为:基础设施不需要经常变更&a…

聊聊分布式的可扩展性

前言 樱花灿烂的季节,满地的绿叶攀上指尖。 春天,总是容易萌生懵懂的心理。。。这就是一堆人辞职的理由??? 团队,总会有人离开,总会有人加入。。。总会有一个leader,当服务器的数量增…

可维护性、可复用性和可扩展性的区别

三者是不同的软件质量属性。 可维护性、可复用性又被认为是两个最重要的用于衡量软件质量的属性。 在《Java设计模式》一书中对可维护性的定义为:指软件能够被理解、改正、适应及扩展的难易程度。 对可复用性的定义为:指软件能够被重复使用的难易程度。 …

八、系统架构 - 可扩展性架构设计

目录 可扩展性 可扩展性的定义 可扩展架构的核心思想 可扩展性架构的主要手段 利用分布式消息队列降低系统耦合性 事件驱动架构(Event Driven Architecture) 消息队列的优势 分布式消息队列 利用分布式服务打造可复用的业务平台 巨无霸系统及其…

后台系统可扩展性学习笔记(一)概要

文章目录 系统大致架构可扩展性负载均衡器与会话保持引入冗余增强系统可用性缓存减轻数据库压力异步处理参考 系统大致架构 当一个用户请求从客户端出发,经过网络传输,达到 Web 服务层,接着进入应用层,最后抵达数据层&#xff0c…

1.3 可扩展性

即使一个系统现在可以可靠地工作,但并不意味着未来它也一定会可靠地工作。造成退化的一个常见的原因就是日益增加的负载:系统的并发用户可能从10000增加到了100000,或者从1000000增加到10000000。可能它处理的数据量比之前大得多。可扩展性是…

七种方法增强代码可扩展性(多图详解)

1 六大原则 在设计模式中有六大设计原则: 单一职责原则:一个类只做一件事 里式替换原则:子类可以扩展父类 依赖倒置原则:面向接口编程 接口隔离原则:高内聚低耦合 迪米特法则:最少知道原则 开闭原则&#…

系统复杂度之【可扩展性】

紧接着我们来聊聊可扩展性。 可扩展性是指,软件系统具备面对未来需求变化而进行扩展的能力。系统可根据新的需求做出少量或者不需要修改,无需对整个系统进行重构或重建。 由于软件系统变化多端,新的需求不断提出,因此可扩展性非常…

php文字链接下划线怎么取消,html超链接怎么去掉下划线

html超链接怎么去掉下划线? 可以用css的text-decoration:none来取消连接的下划线 这是一个链接 扩展资料: 超级文本标记语言是标准通用标记语言下的一个应用,也是一种规范,一种标准,它通过标记符号来标记要显示的网页中…

html去除超链接标记,html超链接去掉下划线的方法

html超链接去掉下划线的方法 发布时间:2020-04-03 15:16:00 来源:亿速云 阅读:59 作者:小新 今天小编给大家分享的是html超链接去掉下划线的方法,很多人都不太了解,今天小编为了让大家更加了解html超链接去…

<el-tabs>改变样式(去掉下划线及其他样式)

elemen-ui官方文档中给的标签页是蓝色的&#xff0c;长这样 我想要的样子&#xff1a; 这里重点是去掉原来的下划线以及鼠标悬停时的背景颜色&#xff0c;话不多说直接上代码&#xff1a; <div class"leftTabs"><el-tabs v-model"activeName" c…

html怎么消除链接字体,CSS去掉超链接下划线

div css之去掉A超链接下划线样式 一、去掉字体下划线装饰CSS属性样式代码 text-decoration:none 解释&#xff1a; CSS下划线样式单词&#xff1a;text-decoration 不显示下划线(去掉字体下划线样式)&#xff1a;none 二、div css网页重构前初始化去掉超链接下划线 由于有的浏览…

html更改超链接下划线颜色,超链接去掉下划线_WORD中不取消超链接,只改超链接的颜色和去掉下划线...

ppt超链接去掉下划线 1、首先打开PPT。2、“插入”“文本框”“横排文本框”,在空白处写字,调整字的大小等。3、插入”“超链接”,会出现“插入超链接”对话框,在这里选择需要链接到的位置,点击确定。4、这时出现的超链接字体就会有下划线。 5、我们在这里选中超链接字体右…

html超链接下划线改虚线_html超链接去掉下划线 html去除取消超链接下划线

大多时候我们知道&#xff1a;text-decoration:underline &#xfffd;?strong>显示下划&#xfffd;?/strong>&#xfffd;?/p> html中去除去&#xfffd;?a href"//www.css5.com.cn/html/989.shtml">A标签超链接下划线代码&#xfffd;?br /> …

php中超链接怎么去下划线的,html如何去掉超链接下划线?html超链接去掉下划线的方法介绍...

前端网页的开发中总是不可避免会使用到超链接&#xff0c;但是使用超链接时下面都会有一条下划线&#xff0c;这在网页中有时会显得很突兀&#xff0c;不合适也不美观&#xff0c;所以我们就需要将超链接下的这条下划线给去掉&#xff0c;接下来的这篇文章就来给大家介绍html下…

html5中链接去除下划线,html超链接去掉下划线 html去除取消超链接下划线

html a超链接标签&#xff0c;默认有的涉猎器表现有下划线&#xff0c;有的不有下划线&#xff0c;大多锚文本超链接A标签内字体是有下划线的&#xff0c;怎么去除超链接下划线&#xff1f;html 超链接去除下划线怎么样做&#xff1f; 去掉去除超链接锚文本的下划线需要CSS花样…

html如何取消表格的横线,怎么去掉下划线样式?

怎么去掉超链接下划线?下面本篇文章给大家介绍一下在html网页和word文档中去掉下划线样式的方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。 html代码中去掉超链接的下划线 前端网页的开发中总是不可避免会使用到超链接,但是使用超链接时下面都会有…

word里边页眉下面的下划线怎么去掉

原创作品&#xff0c;出自 “深蓝的blog” 博客&#xff0c;欢迎转载&#xff0c;转载时请务必注明以下出处&#xff0c;否则追究版权法律责任。 深蓝的blog&#xff1a;http://blog.csdn.net/huangyanlong/article/details/43762599 今日在使用word编辑统计表时&#xff0c;添…