5月13日,学院2期导师、HPB芯链联合创始人&CTO许理讲授了《区块链技术瓶颈分析与解决方案探讨》。许理从底层技术出发,分析了目前区块链存在的性能瓶颈问题并提出相应解决方案。
许理首先展示了一组数据,描述当前区块链行业TPS现状。信用卡每秒钟可处理的交易数量是4.4万笔,天猫在2017年双十一的交易量峰值32.5万次/秒。对比之下,比特币和以太坊的处理速度显得极低,这也是为什么基于区块链的某些应用目前很难跑起来的重要原因。
接下来许理以以太坊为研究对象,通过大量数据,为我们揭示了当前区块链存在的瓶颈的主要原因。
第一部分:区块链网络交易流程
以太坊的交易分为交易发生、交易确认与出块两部分。流程大致如图所示:
交易发生
交易确认与出块
第二部分:性能瓶颈分析——网络性能、计算与处理性能分析
网络性能分析
包括交易广播、区块同步广播、总数据同步、存储容量4部分。
第一,从交易广播看,以太坊中任意一个节点任意一笔交易需广播给临近的25个节点。以TPS10万次计算,任意一个节点需要广播的数据量为:144Byte*25个节点*100000笔/秒=360,000,000Bps=2.88Gbps。以上行速率4Mbps计算,10万次突发交易数据,需要12分钟才能全部广播完成。
第二,从区块同步广播看,以TPS10万次/秒计算(峰值),每笔交易入块数据144Byte,同步到临近25个设备,每秒同步区块数据量约为:360,000,000Byte,这要求每个节点理论上行带宽必须达到2.88Gbps,才能完成全部区块广播。
第三,从总数据同步看,许理以某叫车平台平均交易次数115笔/秒(均值)计算,每笔交易入块数据144Byte,以10分钟一个区块计算,每个区块数据量约为:115笔/秒*144Byte*600秒/笔=9,936,000Byte。任意一个节点,需要广播的数据量约为:9,936,000×25×8×2=3,974,400,000bits=3.9744Gbits。要求每个节点理论上行带宽必须达到6.624Mbps,才能完成全部区块广播。
第四,从存储容量看,以太坊中任意一个节点,任意一笔交易,以TPS10万次计算,每秒账本新增数据量:144Byte*10万笔/秒=14.4MBps,每天新增账本的容量是:14.4MB*3600*24=1,244,160MB=1.2TB。
计算与处理性能分析
首先是验签处理,任意节点收到一笔新的交易都需要做交易验证,这部分工作是通过CPU完成。以ETH采用的ECC算法为例,测试系统使用x86,i5双核2.0G处理器,一次验签耗费时间大于20ms。意味着双核全部做ECC验签,每秒钟处理50次。果遇到突发上万TPS时,就会出现交易溢出,系统内存耗尽,崩溃宕机现象。
其次是转发处理,任意一笔新的交易同样由CPU来进行转发,ETH的处理方法是每发一笔交易,在广播交易事件时,都会导致开启一个线程。当交易量上升时,线程会逐渐累积,累积过大,可能导致golang虚拟机宕机。而且当交易量较大时,因事件机制不完善,导致交易广播线程不能顺序处理,使得某个账户发送的交易不能按照nonce的顺序广播,其他节点会抛弃相应交易。
第三部分:解决方案——纵向加速、横向加速
为突破当前瓶颈,许理提出了两个解决方案:纵向加速以及横向加速。
所谓纵向加速解决方案是基于传统概念链技术基础之上,优化减少同步数据量,提升网络带宽及处理性能的一系列解决方案。具体特点是:
1.采用数据中心,数据集群;
2.减少同步数据量;
3.提高各节点网络带宽是关键;
4.提高各节点并发处理性能;
横向解决方案包括两种,一种是建立分层结构(Layer2),把不必要的交易从最底层的主链分离到附属结构上,比如比特币的闪电网跟随的就是这个思路。另一种是分片技术(Sharding),用于改进主链本身的协议来提高它的性能。
以上仅为老师讲课内容的小部分节选,更多详细内容,请关注下一期学院。