PlatON并行计算技术实现

PlatON 阅读 52 2020-7-11 17:58
分享至
微信扫一扫,打开网页后点击屏幕右上角分享按钮

在PlatON之前的版本中,验证人不论是打包区块还是验证区块,区块中的交易均采用串行方式执行,并且在计算MPT树root(hash)时,从根节点依次往下采用递归方式算出树根,从算法层面分析也属于“串行”计算root。

以上两种“串行计算”,无法充分利用硬件多核优势。其实在执行交易和计算root过程中,没有“依赖关系”的计算步骤完全可以并行执行,再将并行计算结果汇总成最终结果。

在PlatON0.13.0底层版本中,实现了通过有向无环图(DAG)技术完成交易并行和并行计算root。DAG图是数据结构中最为复杂的一种,由一组顶点和一组能够将两个顶点相连的边组成。 据测试,交易并行TPS优于交易串行版本,整体性能有30%左右的提升。

交易并行

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

PlatON并行计算技术实现

串行交易顺序与并行交易DAG

技术术语

顶点:图中的一个点

边:连接两个顶点的线段叫做边,edge

度数:由一个顶点出发,有几条边就称该顶点有几度,或者该顶点的度数是几,degree

路径:通过边来连接,按顺序的从一个顶点到另一个顶点中间经过的顶点集合

简单路径:没有重复顶点的路径

环:至少含有一条边,并且起点和终点都是同一个顶点的路径

出度:由一个顶点出发的边的总数

入度:指向一个顶点的边的总数

可以根据原始交易列表的执行顺序,通过交易的发起地址和接收地址,识别出交易之间的依赖关系,可以构造出一个交易的依赖DAG图,凡是入度为0(无被依赖的前序交易)的交易均可以并行执行。

并行计算root

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

假设插入以下数据:

PlatON并行计算技术实现

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

PlatON并行计算技术实现

性能对比

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

PlatON并行计算技术实现

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

btcfans公众号

微信扫描关注公众号,及时掌握新动向

免责声明:
2.本文版权归属原作所有,仅代表作者本人观点,不代表比特范的观点或立场
2.本文版权归属原作所有,仅代表作者本人观点,不代表比特范的观点或立场
上一篇:股市大涨,为什么说币圈未来不久大概率会有大牛市 下一篇:Filecoin矿机骗局那么多,IPFS云存储未来发展空间大么?

相关资讯