PlatON并行计算技术实现 区块链

admin 3月前 68

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

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

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

交易并行

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


技术术语

顶点:图中的一个点
边:连接两个顶点的线段叫做边,edge
度数:由一个顶点出发,有几条边就称该顶点有几度,或者该顶点的度数是几,degree
路径:通过边来连接,按顺序的从一个顶点到另一个顶点中间经过的顶点集合
简单路径:没有重复顶点的路径
环:至少含有一条边,并且起点和终点都是同一个顶点的路径
出度:由一个顶点出发的边的总数
入度:指向一个顶点的边的总数  

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

并行计算root

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

假设插入以下数据:  

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

性能对比

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

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



少客联盟- 版权声明 1、本主题所有言论和图片纯属会员个人意见,与少客联盟立场无关。
2、本站所有主题由该帖子作者发表,该帖子作者admin少客联盟享有帖子相关版权。
3、少客联盟管理员和版主有权不事先通知发贴者而删除本文。
4、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者admin少客联盟的同意。
5、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任。
6、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责。
7、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意。
8、官方反馈邮箱:chinasuc@chinasuc.cn


上一篇:区块链技术基础:分布式账本简介
下一篇:计算机网络分类和性能分析
Whatever is worth doing is worth doing well. juvenile hacker league
最新回复 (0)
    • 少客联盟
      2
        登录 注册 QQ登录(停用)
返回