当前位置:首页 行业动态 正文

金色深核|“高并发”中的“文昌链”

2025-03-23

编者按:本文内容源于2022年6月25日BSN月度说明会上边界智能创始人曹恒对文昌链的汇报口述内容,会后边界智能CTO奚海峰为内容增加了更为详细的问题分析和分布式应用开发建议,本文因此成为一篇全面记录文昌链经历高并发过程的文章。

《金色深核》栏目认为开放联盟链将会是中国Web3进程中的重要角色,其基础设施应对互联网级别并发的经验也甚为重要,为此,将文章中进行后期编辑,以更为清晰的叙述过程,为关注开放联盟链的读者、开发者所用。

作者:曹恒、奚海峰,编辑:王航


背景 :6 月的并发高峰
6月29日,中国区块链基础设施BSN官方发布了一则数据,其NFT基础设施BSN-DDC单日链上交易总数接近百万次,超过了以太坊单日链上交易数。

BSN-DDC是由多个开放联盟链组成的NFT基础设施,以适应中国监管合规环境的特性塑造着与以太坊开源生态相似的应用多样性。

由边界智能搭建的的文昌链,是目前支持BSN-DDC运行的四条开放联盟链之一,在6月,BSN链上数据爆发的表现中,文昌链链上数据爆发尤为突出。

据边界智能创始人曹恒描述,截止到2022年6月21日19点18分,文昌链上活跃链账户数为645万,以链上数据估算,上线应用近250个,进行测试对接的应用约300个。

而此时链上NFT技术支持的可信数据对象总数为797万。通过历史数据分析,所有可信数据对象中,55%产生于6月,约为442万个。

(至本文发出时,文昌链活跃账户数已过1061万,NFT技术支持可信数据对象1194万)。

文昌链于2021年2月上线,免费稳定试运行一年后,于2022年3月份开始商业化运行,随后文昌链的业务量已开始快速增长,从月度业务量翻倍到6月实现指数级增长。

可对比数据开放联盟链的腾讯至信链2021年6月上线,截止到20225月,总用户数超过300万,发行的数字藏品超过500万。

而伴随着6月业务量飞涨,618前后在并发高峰期,文昌链出现了卡顿、交易排队的情况,区块打包时间最高达到了30秒,有所影响用户体验。

随后,BSN运维团队红枣科技和文昌链技术支持团队边界智能通力合作,在不停服的前提下对系统进行了紧急升级及优化。

调优后,正在以小于4秒的平均出块时间平稳安全地运行。


问题上链交易缓慢与优化思路


全球公链上的交易堵塞、等待问题很常见。文昌链在高并发情况下出现的此类问题,是区块链在面对商业化应用中必然要面对的。

在传统互联网应用中,平台方可以通过增加计算资源的水平扩展方式和挑战任务并行分配方式来解决,有多大压力,就用多大的计算资源解决。

而在区块链上,尤其是在与公链同样分布式结构的开放联盟链上,其性能的优化、升级需要经历相对复杂的过程。

性能问题公示

文昌链采用开放应用服务模式,支持多元应用生态。经技术团队进行网络性能分析,其问题和解决方案如下:

问题1:接收用户交易的全节点跟共识节点之间的p2p连接不稳定,造成很多交易不能及时进入共识节点参与出块。

解决方案:优化全节点与共识节点之间p2p连接配置参数,提高连接稳定性。

解决状态:已解决

问题2:全网交易量高峰时段,每个新区块包含交易数很多(2000~3000),共识节点在广播和校验每个区块上耗费时间变长,造成出块间隙时间变长(从3秒左右变为30秒左右);虽然网络整体吞吐量(TPS)增加,但单个交易的上链延迟变长,用户体验到的上链等待时间变长。

解决方案:优化共识算法各阶段超时时间配置参数,提高出块速度。

解决状态:已改善,还在持续优化参数和垂直扩展共识节点性能。

问题3:EVM相关交易因nonce错误而上链失败,需要用户重试。

解决方案:应用修改上链策略,每个发交易的链账户要串行发送交易,确保前一个交易的上链状态确定后再发送下一个交易;若要提高交易并发性能,则可采用多个链账户并行发送交易。

解决状态:已经发布更新的FAQ和代码示例


分析为何开放联盟链(OPB)调优更为复杂?


开放联盟链(OPB,OpenPermissionedBlockchain又称开放许可链)是结合了公链、联盟链技术优势,能支持非信任环境下的分布式公共账本服务,其可以很好地支持商业级应用的合规需求和良好的应用开发体验。

因此,OPB(开放联盟链)的调优比公链、联盟链都要复杂许多。

在传统的互联网中心化应用开发中,应用上线前要对数据库进行规划,包括分区,如何给数据表加读写锁,索引等等。应用上线后,中心化数据库的调优可能需要一个月甚至更长的时间,来监控应用访问数据库的模式,针对应用进行进一步的优化。

而相比中心化数据库的调优,开放联盟链的调优难度近乎是其20倍甚至以上。

区块链应用,又称分布式应用。所以有人说区块链则是分布式数据库,但区块链的难度远远超越了分布式数据库。

原因在于分布式数据库的调优,比中心化数