【分布式存储ipfs矿机】【硬核科普】PlatON并行计算技术实现
摘要:▼在PlatON之前的版本中,验证人不论是打包区块还是验证区块,区块中的交易均采用串行方式执行,并且在计算MPT树roo
▼
在PlatON之前的版本中,验证人不论是打包区块还是验证区块,区块中的交易均采用串行方式执行,并且在计算MPT树root(hash)时,从根节点依次往下采用递归方式算出树根,从算法层面分析也属于 串行 计算root。
以上两种 串行计算 ,无法充分利用硬件多核优势。其实在执行交易和计算root过程中,没有 依赖关系 的计算步骤完全可以并行执行,再将并行计算结果汇总成最终结果。
在PlatON0.13.0底层版本中,实现了通过有向无环图(DAG)技术完成交易并行和并行计算root。DAG图是数据结构中最为复杂的一种,由一组顶点和一组能够将两个顶点相连的边组成。据测试,交易并行TPS优于交易串行版本,整体性能有30%左右的提升。

交易并行

区块中的交易是按顺序打包的,这就要求彼此有依赖关系的交易要保持和打包顺序相同的顺序,而对于彼此没有依赖的交易其实是可以并行执行的。可以借助有向无环图解析交易的依赖关系。

串行交易顺序与并行交易DAG
技术术语
顶点:图中的一个点
边:连接两个顶点的线段叫做边,edge
度数:由一个顶点出发,有几条边就称该顶点有几度,或者该顶点的度数是几,degree
路径:通过边来连接,按顺序的从一个顶点到另一个顶点中间经过的顶点集合
简单路径:没有重复顶点的路径
环:至少含有一条边,并且起点和终点都是同一个顶点的路径
出度:由一个顶点出发的边的总数
入度:指向一个顶点的边的总数
可以根据原始交易列表的执行顺序,通过交易的发起地址和接收地址,识别出交易之间的依赖关系,可以构造出一个交易的依赖DAG图,凡是入度为0(无被依赖的前序交易)的交易均可以并行执行。

并行计算root

通过深入了解 MPT 的数据结构,发现叶子节点是可以并行计算 hash 的, 且 MPT 正好与 DAG 类似, 可以把 MPT 转换为 DAG 做并行计算。
假设插入以下数据:

生成MPT树如下图,该MPT树可生成相应的DAG图,入度为0的节点可以并行计算hash。


性能对比

针对串行、并行版本,分别采用5000账户对25验证节点(机器配置为4核8G)进行转账压测,性能数据如下:

并行版本性能明显优于串行版本,PlatON也会在保证安全性与稳定性的同时不断完善性能指标,为用户提供更优质的服务。

了解PlatON更多动态
PlatON GitHub
https://github.com/PlatONnetwork
PlatON Forum
https://forum.latticex.foundation/c/PlatON-CN
PlatON Telegram
https://t.me/PlatONNetworkCN
PlatON Twitter
https://twitter.com/PlatON_Network
PlatON LinkedIn
https://linkedin.com/company/platonnetwork



戳阅读原文,访问PlatON网站!
- 免责声明
- 世链财经作为开放的信息发布平台,所有资讯仅代表作者个人观点,与世链财经无关。如文章、图片、音频或视频出现侵权、违规及其他不当言论,请提供相关材料,发送到:2785592653@qq.com。
- 风险提示:本站所提供的资讯不代表任何投资暗示。投资有风险,入市须谨慎。
- 世链粉丝群:提供最新热点新闻,空投糖果、红包等福利,微信:juu3644。

币圈观察



