一种基于有向无环图的区块链系统中区块的定序方法技术方案

技术编号:33033432 阅读:15 留言:0更新日期:2022-04-15 09:10
本发明专利技术公开了一种基于有向无环图的区块链系统中区块的定序方法,确定并记录该纪元内所有区块的引用计数,引用计数表示的是一个区块在其所属纪元内被其它区块引用的次数;建立队列,并将引用计数为0的定序区块送入队列中,随后建立栈,并使得栈初始状态为空;从队列中出列第一个区块,获取该区块的引用列表,然后将该区块送入栈中;对于步骤3中的引用列表,对引用列表中引用的每一个区块,如果该区块也在这个纪元中,那么该区块引用计数减1。本发明专利技术法体现了DAG结构引用即见证的特性,并且在定序区块还未出现时,不容被恶意节点操纵区块顺序。序。序。

【技术实现步骤摘要】
一种基于有向无环图的区块链系统中区块的定序方法


[0001]本专利技术涉及区块链
,具体为一种基于有向无环图的区块链系统中区块的定序方法。

技术介绍

[0002]区块链是一个分布式的账本数据库,具有去中心化,不可篡改,可以溯源等特点。这些特点使区块链拥有了信任的价值,使之成为了一项火热的技术。但区块链的性能收到区块大小和出块时间的限制,通常并不高。有向无环图(Directed Acyclic Graph,DAG)是一种为了提高区块链性能而被应用于区块链系统中的数据结构,在DAG结构下,数据可以更加并发地被打包上链。
[0003]在传统的区块链系统中,每一个区块会引用记录其认同的最长链的上一个区块的哈希值。而在DAG结构的区块链中,按照其有向无环的定义,每一个区块会引用记录多个已经在链上的区块的哈希值。当数据并发量较低时,DAG会呈现和传统区块链一样的链式结果,当数据并发量高时,DAG会呈现出网状结构,如图1所示。
[0004]对于区块链系统而言,数据在链上的顺序是极其重要的,因为它是决定系统中两个或多个矛盾数据哪一个才被视为有效数据的关键。在传统的区块链结构中,采用最长链原则为区块定序,而完成了区块的定序也即完成了对于所有数据的定序。对于DAG结构的区块链系统而言,由于DAG没有非常朴素的最长链概念,因此有各种各样的共识机制产生。在DAG系统的区块链中最常用的共识方法是由一组委员会通过共识不断上链定序区块来决定链上区块顺序。在这类系统中,所有链上的区块分为已经被定序的和未被定序的,每出现一个定序块,所有被这个新定序区块直接引用和间接引用的且还未被定序的区块则在此时视为被定序,这一组同时被定序的区块被称作一个纪元(epoch)。由委员会共识的定序块是有序无分叉的,因此对应的纪元也是有序无分叉的。对于区块的定序,排序靠前的纪元中的区块一定在排序靠后的纪元的区块之前,因此剩余的问题是同一个纪元中的区块如何定序。
[0005]在现有的方案中,通常对于同一个纪元内的区块,使用哈希大小定序法。即哈希值越小的区块定序越靠前。这样的做法确实比较简单,但也存在一些问题。其一,DAG中区块对于其他区块的引用拥有见证属性,即如果区块A引用了区块B,那么即表达了区块A的逻辑时间在区块B之后,而在DAG结构中,这种关系是偏序的,即不会引起任何矛盾,那么直接使用哈希大小定序则无法体现DAG结构自带的这一层优势。其二,当委员会由于某种故障而较长时间未能给出定序块时,直接使用哈希定序很容让恶意节点在区块还未被定序时逆转数据的先后性。因此我们对此做出改进,提出一种基于有向无环图的区块链系统中区块的定序方法。

技术实现思路

[0006]为了解决上述技术问题,本专利技术提供了如下的技术方案:
[0007]本专利技术一种基于有向无环图的区块链系统中区块的定序方法,包括以下几个步
骤:
[0008]步骤1、确定并记录该纪元内所有区块的引用计数,引用计数表示的是一个区块在其所属纪元内被其它区块引用的次数;
[0009]步骤2、建立队列,并将引用计数为0的定序区块送入队列中,
[0010]步骤3、随后建立栈,并使得栈初始状态为空;
[0011]步骤4、从队列中出列第一个区块,获取该区块的引用列表,然后将该区块送入栈中;
[0012]步骤5、对于步骤4中的引用列表,对引用列表中引用的每一个区块,如果该区块也在这个纪元中,那么该区块引用计数减1;
[0013]步骤6、此时如果队列为空,则进入步骤7,否则跳转回到步骤4;
[0014]步骤7、将步骤3所述的栈按照先入后出的原则出栈,出栈顺序即为整个纪元内区块的定序排序。
[0015]作为本专利技术的一种优选技术方案,对于区块引用计数统计的方法可以是区块加入系统时实时维护,也可以是在定序时统计计算。
[0016]作为本专利技术的一种优选技术方案,所述的建立的队列是先进先出队列,来实现依次对应用计数减为0的区块进行遍历操作。
[0017]作为本专利技术的一种优选技术方案,所述建立栈是一个先进后出的栈,实现对队列操作的顺序进行反序统计。
[0018]作为本专利技术的一种优选技术方案,所述的步骤4中如果引用计数在此时被减为0,则该区块送入队列中。
[0019]本专利技术的有益效果是:
[0020]该种基于有向无环图的区块链系统中区块的定序方法体现了DAG结构引用即见证的特性,并且在定序区块还未出现时,不容被恶意节点操纵区块顺序,具体为以下步骤,步骤1、确定并记录该纪元内所有区块的引用计数,引用计数表示的是一个区块在其所属纪元内被其它区块引用的次数;步骤2、建立队列,并将引用计数为0的定序区块送入队列中,步骤3、随后建立栈,并使得栈初始状态为空;步骤4、从队列中出列第一个区块,获取该区块的引用列表,然后将该区块送入栈中;步骤5、对于步骤4中的引用列表,对引用列表中引用的每一个区块,如果该区块也在这个纪元中,那么该区块引用计数减1;步骤6、此时如果队列为空,则进入步骤7,否则跳转回到步骤4;步骤7、将步骤3所述的栈按照先入后出的原则出栈,出栈顺序即为整个纪元内区块的定序排序;整个纪元内的所有区块必定都被定序了。可以作一个简单的证明:假如有一个区块在上述过程结束后没有被定序,那么它一定没有进过队列,引用计数一定大于0,也即至少有一个引用它的区块也没有进过队列,那么这个区块同样没有被定序,即对于每个没被定序的区块,一定可以找到另一个没被定序的区块引用它,由于DAG有无环的特性,这个过程可以一直持续下去而不重复,因此可以找到无限多的区块未被定序,与一个纪元只有有限个区块相矛盾,于每个区块在引用计数归0时才入列,此时所有引用该区块的区块必定均已完成出队操作,因此该区块最后的定序必定排在引用该区块的区块之前。因此本方法能体现DAG结构引用即见证的特个区块的被引区块全部出列之时即该区块的入列之时,因此该区块的排序主要取决于被引情况。因此一个纪元中,对于一个时间上较晚产生的区块,即使它故意只引用较早的区块,也对其排序没有任何
帮助,只要大多数节点能诚实地引用新区块,那么区块顺序都将是比较良好的。
附图说明
[0021]附图用来提供对本专利技术的进一步理解,并且构成说明书的一部分,与本专利技术的实施例一起用于解释本专利技术,并不构成对本专利技术的限制。在附图中:
[0022]图1是本专利技术一种基于有向无环图的区块链系统中区块的定序方法的流程图;
[0023]图2是本专利技术一个具体实施过程中一个DAG纪元内的样例;
[0024]图3是DAG结构的区块链示意图。
具体实施方式
[0025]以下结合附图对本专利技术的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本专利技术,并不用于限定本专利技术。
[0026]实施例:如图1所示,本专利技术一种基于有向无环图的区块链系统中区块的定序方法,包括以下几个步骤:
[0027]步骤1、确定并记录该纪元内所有区块的引用计数,引用计数表示的是一个区块本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于有向无环图的区块链系统中区块的定序方法,其特征在于:包括以下几个步骤:步骤1、确定并记录该纪元内所有区块的引用计数,引用计数表示的是一个区块在其所属纪元内被其它区块引用的次数;步骤2、建立队列,并将引用计数为0的定序区块送入队列中,步骤3、随后建立栈,并使得栈初始状态为空;步骤4、从队列中出列第一个区块,获取该区块的引用列表,然后将该区块送入栈中;步骤5、对于步骤4中的引用列表,对引用列表中引用的每一个区块,如果该区块也在这个纪元中,那么该区块引用计数减1;步骤6、此时如果队列为空,则进入步骤7,否则跳转回到步骤4;步骤7、将步骤3所述的栈按照先入后出的原则出栈,出栈顺序即为整个纪元内区块的定序排序。2.根据...

【专利技术属性】
技术研发人员:顾星远邓超国
申请(专利权)人:观源上海科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1