基于有向无环图的高效并行区块链
洪璇 胡军
摘 要: 区块链系统的性能制约了它的推广应用,主要表现为交易吞吐量低、,提出一种基于有向无环图(DAG)的区块交易
速度[3].SARFRAZ等[4]提出了基于DAG的分布式账本埃欧塔(IOTA),实现了良好的吞吐量性能,其交易是无序的,[5]开发的Conflux系统将DAG中的节点按照时间先后顺序划分成若干纪元,在每个纪元内进行选择具有最高“权重”的区块,得到纪元的主链,进而得到整个系统的主链,锚定了所有区块的全序,在保持并发的情况下,能决定不同区块的顺序,但该方案较复杂,需要计算每个区块的“权重”后,[6]开发的CoDAG系统将图划分为不同的级别,并通过计算其“连通性”将区块分为不同的级别,[7]提出了一种基于ID分类的有向无环图数据结构,但没有对方案进行详细的设计,-F6B0-4DBF-9636-E806FE77B2A6
为了让网络节点在完全去中心化的情况下,能对高并发的DAG结构达成共识,本方案结合PoW共识机制与DAG区块链技术,,根据谜题链的最长链原则和最难链原则,[4?7]的方案,本方案无需再进行“权重”或“连通性”,使得区块链更加难被篡改,,可以应用在基于个人信用的场景中,体现了本方案的扩展性.
1 数据结构设计
为了确保DAG上的區块达成共识机制,设计一种紧密联系DAG上所有区块,,选择哈希难度较高
的一些区块作为谜题链区块,,谜题链上的区块为谜题区块,比常规区块更难被挖掘,但谜题区块与其他区块的挖掘工作流程相一致.
另外,为了能够快速地对DAG进行拓扑排序,考虑将DAG分解退化成若干二叉树,每个节点除了有一条连接谜题链节点的边之外,还需要两条连接别的节点的边,,在矿工准备生成区块的时候,,将矿工挖掘的所有区块连接到一个矿工链中,该矿工链包含了矿工的信息,比如他的哈希算力等;第二个指针main指向最长谜题链上的最新谜题区块,如果这个新区块被确认为谜题区块,那所有谜题区块都将通过这个指针与该新区块保持连接;第三个指针wait指向一个其他矿工挖掘的区块,,某一区块连接节点的集合中,每个指针对应于一条有向边,区块之间按照时间先后顺序通过指针连接,即形成了一个DAG[8].当交易量增多的时候,前驱节点有多个入度,可以同时被多个后继节点所指向,,后继节点有多个出度,可以同时指向多个前驱节点,以加速整个图形的收敛[9].
,区块头中包含了指定区块关系的3个指针(ptrpeer,ptrmain,ptrwait)、生成该区块的矿工信息peer、时间戳Timestamp、应用数据message的Merkle根、解决哈希难题的解nonce等,如图2所示.
在所有区块中,整个DAG中的根节点即定义为创世区块.
指针
,可以将对于某区块的共识机制扩展为所有前驱区块的共识机制.
ptrpeer和矿工链
指针ptrpeer指向由同一名矿工生成的前一个区块,如果该矿工此前没有生成过任何区块,,,可以根据这些信息得到矿工的状态,评估矿工的哈希算力.
ptrmain和谜题链
,只要节点对所有谜题区块达成共识,,需要将所有谜题区块集合到一个链结构中,进而使所有的区块能被谜题区块所指定.
ptrwait和连通性
为了增强DAG区块间的连通性,
基于有向无环图的高效并行区块链 来自淘豆网www.taodocs.com转载请标明出处.