首页 / 专利库 / 银行与财务事项 / 分布式账本技术 / 区块链 / 区块头 / 区块链数据结构及任务处理方法和装置

链数据结构及任务处理方法和装置

阅读:25发布:2020-05-13

专利汇可以提供链数据结构及任务处理方法和装置专利检索,专利查询,专利分析的服务。并且本 发明 属于计算机 区 块 链 技术领域,特别涉及一种区块链数据结构及任务处理方法和装置,所述数据结构通过双向链表来存储数据,将不同隐私保护需求的交互数据存放在不同链表中,链表中区块保存前一个区块和后一个区块哈希值,以实现区块的由前向后及由后向前的双向验证;进一步通过建立双向链池来分隔交易数据,将交易按隐私保护需求分隔成单个链条,但是这些链条的首个区块,被再次连接起来,形成一个新的链条,结合双向链表和链池,可以达到在分隔交易数据的同时,链上区块相互紧密耦合,同时实现机密性和完整性保护,同时增加了算 力 攻击难度,对区块链信息安全具有重要的指导意义。,下面是链数据结构及任务处理方法和装置专利的具体信息内容。

1.一种链数据结构,其特征在于,所述数据结构通过双向链表来存储数据,将不同隐私保护需求的交互数据存放在不同链表中,链表中区块保存前一个区块和后一个区块哈希值,以实现区块的由前向后及由后向前的双向验证。
2.一种区块链数据结构,其特征在于,所述数据结构通过双向链池来存储数据;双向链池中区块被划分为交易数据区块和交易发起区块,其中,交易数据区块用于记录不同隐私保护需求交易数据,相同隐私保护需求的区块采用双向链表连接形成交易数据子链;每个交易数据子链均连接到交易发起区块上;所述交易发起区块用于记录新交易开始,后续交易数据依次更新至交易数据区块中;所有交易发起区块采用双向链表连接,形成交易发起子链;所述双向链表采用权利要求1所述的区块数据结构中的双向链表。
3.根据权利要求2所述的区块链数据结构,其特征在于,所述交易发起区块的数据结构包含区块头和区块体,其中,区块头包含版本号,时间戳,用于记录前一个区块哈希值的前向哈希值,莫科尔树根,用于记录后一个区块哈希值的后向哈希值,用于记录后一个区块对后向哈希值计算结果背书的后向签名值,用于记录子链第一个区块节点哈希值的子链哈希值,及
用于记录子链第一个区块节点生成对子链哈希值背书的子链签名值;区块体用于记录交易数据描述信息,利用莫科尔树根记录完整性哈希值。
4.根据权利要求2所述的区块链数据结构,其特征在于,所述交易数据区块的数据结构包含区块头和区块体,其中,区块头包含版本号,时间戳,用于记录前一个区块哈希值的前向哈希值,莫科尔树根,用于记录后一个区块哈希值的后向哈希值,用于记录当前区块对后向哈希值计算结果背书的后向签名值;区块体用于记录交易数据,每次交易对应莫科尔树的叶子节点
5.一种基于区块链数据结构的任务处理方法,其特征在于,采用权利要求1~4任一项所述的区块链数据结构存储数据。
6.根据权利要求5所述的基于区块链数据结构的任务处理方法,其特征在于,新的交易数据在双向链表子链中通过共识机制来确定区块生成者并添加新的区块。
7.根据权利要求6所述的基于区块链数据结构的任务处理方法,其特征在于,新区块添加中,区块前向哈希值进行两次更新操作,包括:前一个区块的后向哈希值补入完成后,更新前一个区块的前向哈希值和后向哈希值;计算新区块的前向哈希值并更新。
8.根据权利要求6所述的基于区块链数据结构的任务处理方法,其特征在于,共识机制中,多个用户参与共识,每个用户生成随机数并提前公开随机数的验证因子以及签名结果,通过猜测平均数选取优胜者,并利用激励机制鼓励用户参与区块生成,最终确定区块生成者。
9.根据权利要求8所述的基于区块链数据结构的任务处理方法,其特征在于,多个用户参与共识时,分拆共识参与用户群体,缩小共识参与用户范围,分级共识;在每个缩小范围内达成共识后,将群体胜出者作为群体代表,层级递归完成多级共识。
10.一种基于区块链数据结构的任务处理装置,其特征在于,所述装置包括用于执行如权利要求5~9任一项所述的方法的单元。

说明书全文

链数据结构及任务处理方法和装置

技术领域

[0001] 本发明属于计算机区块链技术领域,特别涉及一种区块链数据结构及任务处理方法和装置。

背景技术

[0002] 区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),是比特币的一个重要概念,它本质上是一个去中心化的数据库,同时作为比特币的底层技术,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次比特币网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。传统区块链的单链结构是单向链表,即链中区块保存着前一个区块的完整性哈希值。验证区块链的完整性时,是从后往前依次验证。根据这种验证机制,要篡改某个区块就必须篡改后续所有区块。这种完整性验证机制成立有两个条件:一个链条上的区块足够多;攻击者生成虚假区块的速度要比链上其它所有人快。在比特币之类的应用背景下,上述条件成立。在私有区块链中,出于隐私保护的目的,单链的区块链结构往往转变为多链结构或者类似多链的树形结构,使得上述前提条件并不总是成立。经典的区块链的基础数据结构是单链结构,在这种结构中,除了第一个区块外,每个区块都保存前一个区块的完整性哈希值。经典的比特币就是采用这种数据结构。这种结构可以很好的保证区块的数据完整性,这是因为如果攻击者篡改任何一个区块,那么他就必须篡改该区块的后续所有区块。同时,由于区块在不断增加,所以攻击者想要篡改后续区块,必须具有超过区块链平台其它所有的计算能,这样才有可能成功。这就是所谓51%攻击。目前有人提出并行的多链结构,其目的是实现高可扩展性的区块链平台。在这种多链结构中,平台同时拥有多条链;这种结构可以很好的适应数据隐私保护的需求,因为不同的隐私保护需求可以共享一条链,而不会与其它链存在交叉的情况;但是多链结构也存在问题:降低链的长度以及链上的计算能力,根据51%攻击的原理,原来攻击者需要具备平台总计算能力的51%以上的能力才能发动攻击,而现在只需要平台某个链上计算能力的51%即可。现存的区块链树形结构,在这种结构中,主链作为树根、不同区块链作为主链的独立树形分支;这种结构有助于交易数据的分离,有利于隐私数据保护;但是正如多链结构一样,由于不同区链形成独立树形分支,使得单条路径的区块数量减少,不利于防御51%攻击。也有不再使用传统单链条的区块链结构,而是使用有向无环图作为基础结构;在这种结构中,区块链条分叉将是经常发生的事情,与树形结构一样,有向无环图有助于隐私数据保护,便于部署于私有/企业区块链中,但是这种结构同样面临着单条路径的区块数量减少,不利于防御51%攻击。

发明内容

[0003] 为此,本发明提供一种区块链数据结构及任务处理方法和装置,兼顾交易数据分离,保护隐私数据同时,还可防御51%攻击,能够使整个区块链成为更为紧密的整体,实现数据机密性和完整性保护。
[0004] 按照本发明所提供的设计方案,提供一种区块链数据结构,所述数据结构通过双向链表来存储数据,将不同隐私保护需求的交互数据存放在不同链表中,链表中区块保存前一个区块和后一个区块哈希值,以实现区块的由前向后及由后向前的双向验证。
[0005] 进一步地,本发明提供的区块链数据结构,所述数据结构还可通过双向链池来存储数据;双向链池中区块被划分为交易数据区块和交易发起区块,其中,交易数据区块用于记录不同隐私保护需求交易数据,相同隐私保护需求的区块采用双向链表连接形成交易数据子链;每个交易数据子链均连接到交易发起区块上;所述交易发起区块用于记录新交易开始,后续交易数据依次更新至交易数据区块中;所有交易发起区块采用双向链表连接,形成交易发起子链;所述双向链表采用上述区块数据结构中的双向链表。
[0006] 作为本发明的区块链数据结构,进一步地,所述交易发起区块的数据结构包含区块头和区块体,其中,区块头包含版本号,时间戳,用于记录前一个区块哈希值的前向哈希值,莫科尔树根,用于记录后一个区块哈希值的后向哈希值,用于记录后一个区块对后向哈希值计算结果背书的后向签名值,用于记录子链第一个区块节点哈希值的子链哈希值,及用于记录子链第一个区块节点生成对子链哈希值背书的子链签名值;区块体用于记录交易数据描述信息,利用莫科尔树根记录完整性哈希值。
[0007] 作为本发明的区块链数据结构,进一步地,所述交易数据区块的数据结构包含区块头和区块体,其中,区块头包含版本号,时间戳,用于记录前一个区块哈希值的前向哈希值,莫科尔树根,用于记录后一个区块哈希值的后向哈希值,用于记录当前区块对后向哈希值计算结果背书的后向签名值;区块体用于记录交易数据,每次交易对应莫科尔树的叶子节点
[0008] 进一步地,本发明还提供一种基于区块链数据结构的任务处理方法,采用上述的区块链数据结构存储数据。
[0009] 作为本发明的基于区块链数据结构的任务处理方法,进一步地,新的交易数据在双向链表子链中通过共识机制来确定区块生成者并添加新的区块。
[0010] 作为本发明的基于区块链数据结构的任务处理方法,进一步地,新区块添加中,区块前向哈希值进行两次更新操作,包括:前一个区块的后向哈希值补入完成后,更新前一个区块的前向哈希值和后向哈希值;计算新区块的前向哈希值并更新。
[0011] 作为本发明的基于区块链数据结构的任务处理方法,进一步地,共识机制中,多个用户参与共识,每个用户生成随机数并提前公开随机数的验证因子以及签名结果,通过猜测平均数选取优胜者,并利用激励机制鼓励用户参与区块生成,最终确定区块生成者。
[0012] 作为本发明的基于区块链数据结构的任务处理方法,进一步地,多个用户参与共识时,分拆共识参与用户群体,缩小共识参与用户范围,分级共识;在每个缩小范围内达成共识后,将群体胜出者作为群体代表,层级递归完成多级共识。
[0013] 进一步地,本发明还提供一种基于区块链数据结构的任务处理装置,所述装置包括用于执行如上述基于区块链数据结构的任务处理方法的单元。
[0014] 本发明的有益效果:
[0015] 本发明针对企业区块链隐私保护所采用的多链结构所存在的问题,通过采用双向链表的基本结构,使得链上区块验证不仅是由后往前验证,也可以从前往后验证,这样攻击者如果篡改任何一个区块,那么他不仅要篡改该区块的后续区块,也必须篡改该区块的前导区块,使得攻击者要篡改整个链上的所有区块,才能达到篡改其中任何一个区块的目的,保护在保护隐私数据的同时,不分拆区块链,使得其长度维持不变,使得算力攻击的难度不会降低;进一步地,通过建立双向链池来分隔交易数据,将交易按隐私保护需求分隔成单个链条,但是这些链条的首个区块,被再次连接起来,形成一个新的链条,结合双向链表和链池,可以达到在分隔交易数据的同时,链上区块相互紧密耦合,同时实现机密性和完整性保护,同时增加了算力攻击难度,对区块链信息安全具有重要的指导意义。附图说明:
[0016] 图1为本发明实施例中双向链表结构示意图;
[0017] 图2为本发明实施例中传统单向链表结构示意图;
[0018] 图3为本发明实施例中双向链池结构示意图;
[0019] 图4为本发明实施例中交易发起区块结构示意图;
[0020] 图5为本发明实施例中交易数据区块结构示意图。具体实施方式:
[0021] 为使本发明的目的、技术方案和优点更加清楚、明白,下面结合附图和技术方案对本发明作进一步详细的说明。
[0022] 世界上任何个体或者团体都可以发送交易,且交易能够获得该区块链的有效确认,任何人都可以参与其共识过程。仅仅使用区块链的总账技术进行记账,可以是一个公司,也可以是个人,独享该区块链的写入权限。私有链往往应用于小范围的公司、研究所、单位等,进入平台的人员受限,平台持有的数据,如网上交易数据、货物物流信息等,通常具有机密性保护要求,不能被未授权人员读取,以确保小部利益不受到损害。区块链采用哈希级联的方式,将所有区块链接在一起。这种数据组织方式使得攻击者篡改任何一个区块的内容,就必须篡改该区块以及该区块后续的所有区块。同时,区块链在不断生成,攻击者篡改的速度还必须超越区块生成速度。所以,只有当攻击者拥有超过总体计算量51%以上才可能篡改成功。以比特币为代表的区块链的基础数据是单链结构,如图2所示,阴影里面的HASH,是方框内数据的计算结果。链上区块存放前一个区块的哈希值,所有区块逻辑上按序连接起来形成链。这种数据组织方式使得攻击者篡改任何一个区块的内容,就必须篡改该区块以及该区块后续的所有区块,只有当攻击者拥有超过总体计算量51%以上才能实施攻击。为了保护区块链中的隐私数据,主要有两类方法:一是通过将不同等级数据分离,对访问数据的用户进行筛选,对于区块链基本数据结构而言,主要是增加链条或者子链,使不同交易数据位于不同的链条/分支上。另一种方法是采用密码算法,将交易数据加密存储,或者在区块内存储的只是交易数据的完整性哈希值。本发明实施例中,参见图1所示,提供一种区块链数据结构,所述数据结构通过双向链表来存储数据,将不同隐私保护需求的交互数据存放在不同链表中,链表中区块保存前一个区块和后一个区块哈希值,以实现区块的由前向后及由后向前的双向验证。将链条分叉,使交易数据分类存储,使得链上区块验证不仅是由后往前验证,也可以从前往后验证。这样攻击者如果篡改任何一个区块,那么他不仅要篡改该区块的后续区块,也必须篡改该区块的前导区块,使得攻击者要篡改整个链上的所有区块,才能达到篡改其中任何一个区块的目的。
[0023] 进一步地,本发明实施例中还提供的区块链数据结构,参见图3所示,所述数据结构通过双向链池来存储数据;双向链池中区块被划分为交易数据区块和交易发起区块,其中,交易数据区块用于记录不同隐私保护需求交易数据,相同隐私保护需求的区块采用双向链表连接形成交易数据子链;每个交易数据子链均连接到交易发起区块上;所述交易发起区块用于记录新交易开始,后续交易数据依次更新至交易数据区块中;所有交易发起区块采用双向链表连接,形成交易发起子链;所述双向链表采用上述区块数据结构中的双向链表。
[0024] 图3中,区块分为交易发起区块和交易数据区块。交易数据区块用于记录不同隐私保护需求的交易数据,相同隐私保护需求的区块采用双向链表的形式连接在一起,形成交易数据子链。平台存在多种交易,也存在多个交易数据子链,但是它们并不是完全相互孤立的,它们通过交易发起区块连接在一起。每个交易子链均链接到某个交易发起区块上。所有交易发起区块采用双向链表的形式连接在一起,形成交易发起子链。双向链池具有以下特点:(1)一个平台只拥有一个链,包括一个交易发起子链及多个交易数据子链;(2)每个交易数据子链均需要链接到交易发起子链的节点;(3)每个交易发起节点只允许链接一个交易数据子链;(4)每个交易数据子链的长度并不相同,根据实际情况可长可短;(5)每个交易数据子链不允许分叉。举例而言,如果企业销售部门发起某隐私交易业务,交易参与者共同生成一个新的区块,不妨标记为head_node,并作为尾节点加入交易发起子链;交易数据大量产生后,产生第一个交易数据区块,不妨标记为data_node;交易数据区块data_node被连接到交易发起区块head_node;后续交易数据产生的区块将链接到data_node后,形成相对独立的交易数据子链。简单来说就是,交易发起区块用于记录新交易的开始,而后续交易数据将依次更新到交易数据区块中。
[0025] 通过将不同交易数据分链条存储,多个子链通过链池连接,区块与区块通过双向验证紧密耦合,在保证数据隐私的同时,不降低51%的算力攻击。实施例中虽然也将数据分链存储,但这只是逻辑上,而非物理上。在逻辑上,不同隐私保护需求的交易数据存放在不同子链上,相互之间不交互。在物理上,区块的完整性验证路径并没有因为子链的出现而被截短,而是采用双向验证的方法,将单链的完整性验证推进至整个链条。这样,即保证了子链数据隐私保护的支持,也保证了链条数据的完整性验证,可适用于私有链中。私有链很重要的一点是数据隐私保护,其适用范围主要是企业、单位部门等小范围组织。在这种背景下,节点必须经过认证才能进入平台中,这意味着节点的一些基本情况对于链中其它节点是公开的,例如证书和身份标识等,同时也可以为节点分配一些必要的秘密参数。其次,链中节点是良性,而非恶意的,所谓良性节点是指节点本身不会实施恶意的攻击行为,但是节点可能被敌人攻击而被控制,也不排除少量内部节点与敌人勾结实施攻击。攻击能力假设:攻击者可以控制链中少量节点,被攻击节点的数量一般不超过链中节点总量的1/3;攻击者可以具有一定程度的计算能力,强大的攻击者可以借助平台外计算能力来实施攻击,但攻击者不具备篡改链中所有区块的能力。
[0026] 作为本发明实施例中的区块链数据结构,进一步地,参见图4所示,所述交易发起区块的数据结构包含区块头和区块体,其中,区块头包含版本号,时间戳,用于记录前一个区块哈希值的前向哈希值,莫科尔树根,用于记录后一个区块哈希值的后向哈希值,用于记录后一个区块对后向哈希值计算结果背书的后向签名值,用于记录子链第一个区块节点哈希值的子链哈希值,及用于记录子链第一个区块节点生成对子链哈希值背书的子链签名值;区块体用于记录交易数据描述信息,利用莫科尔树根记录完整性哈希值。
[0027] 与传统区块的结构一样,交易发起区块,就区块头而言,与传统区块链结构的主要区别在于,传统区块链只记录前一个区块的哈希值,在交易发起区块中包含了三个哈希值,分别代表:前一个区块的哈希值、后一个区块的哈希值以及子链第一个节点的哈希值,分别称为:前向哈希值、后向哈希值和子链哈希值。后向签名值是后一个区块对后向哈希值计算结果的背书;子链签名值是子链第一个区块生成对子链哈希值的背书。区块体不再记录交易的具体数据,而是记录交易数据的描述信息,例如:交易发起者是谁,交易发起时间等等。具体内容由交易发起者决定。区块体内容可以利用莫科尔树来记录其完整性哈希值,也可以直接记录哈希值,由交易发起者决定。
[0028] 作为本发明实施例中的区块链数据结构,进一步地,参加图5所示,所述交易数据区块的数据结构包含区块头和区块体,其中,区块头包含版本号,时间戳,用于记录前一个区块哈希值的前向哈希值,莫科尔树根,用于记录后一个区块哈希值的后向哈希值,用于记录当前区块对后向哈希值计算结果背书的后向签名值;区块体用于记录交易数据,每次交易对应莫科尔树的叶子节点。
[0029] 与交易发起区块相比,交易数据区块不包括子链哈希值。换言之,在交易数据区块后,不允许再生成新的交易数据子链,只允许链接后续的区块。类似的,交易数据区块的前向哈希值和后向哈希值分别代表前一个区块和后一个区块的完整性哈希值。较为特殊的是子链的第一个区块,其前向哈希值是交易发起子链里某个区块。后向签名值是当前区块对前一个区块的后向哈希值计算结果的背书;区块体内包括具体的交易数据,通常每次交易对应于莫科尔树的一个叶子节点,用莫科尔树根来反映整个交易数据的完整性。
[0030] 进一步地,本发明实施例还提供一种基于区块链数据结构的任务处理方法,采用上述的区块链数据结构存储数据。
[0031] 作为本发明实施例中的基于区块链数据结构的任务处理方法,进一步地,新的交易数据在双向链表子链中通过共识机制来确定区块生成者并添加新的区块。
[0032] 作为本发明实施例中的基于区块链数据结构的任务处理方法,进一步地,新区块添加中,区块前向哈希值进行两次更新操作,包括:前一个区块的后向哈希值补入完成后,更新前一个区块的前向哈希值和后向哈希值;计算新区块的前向哈希值并更新。
[0033] 区块生成分为三种情形:交易发起子链生成新的区块、交易数据子链生成新的区块,以及产生新的交易子链。
[0034] 在交易数据子链添加区块,代表新的交易数据确认。较传统区块结构,我们新添加了三个字段,包括:前向哈希值、后向哈希值以及后向签名值。与传统区块结构相同的部分,仍然采用传统方法,下面举例介绍新增字段的更新:
[0035] 说明:现已经有n个区块已经组织成链,编号n+1的区块(用node(n)表示)正在由用户A完成入链操作,准备链接到编号n的区块后,作为其后续区块;区块前向哈希值用pre_hash表示,后向哈希值用next_hash表示;用node(n).pre_hash表示编号n的区块的前向哈希值,以此类推;区块头结构可以分为三个部分:pre_hash、next_hash和其它部分(用others表示);用户A持有公钥和私钥;符号hash()表示哈希计算,不限定具体哈希算法;||表示参与哈希计算的实体集合,并不严格反映实体的前后顺序。步骤:
[0036] (1)node(n)已经接入链中,但是node(n).next_hash为空;
[0037] (2)用户A填写node(n+1).others;
[0038] (3)用户A计算hash(node(n).others||node(n).pre_hash),将计算结果更新到node(n+1).pre_hash,注意此时node(n).next_hash和node(n+1).next_hash为空;
[0039] (4)用户A计算hash(node(n+1).others||node(n+1).pre_hash),将计算结果更新到node(n).next_hash,即区块n+1的生成者为区块n的后向哈希值赋值;
[0040] (5)用户A用私钥对后向哈希值进行签名,签名结果附在区块头;
[0041] (6)用户A计算hash(node(n).others||node(n).pre_hash||node(n).next_hash),将计算结果更新到node(n+1).pre_hash,该值是node(n+1)最终的前向哈希值。
[0042] 任何一个区块的前向哈希值都有两次更新操作。第一次更新时,由于前一个区块的后向哈希值为空,所以前向哈希值的计算范围不包括前一个区块的后向哈希值。待前一个区块的后向哈希值补充后,前一个区块的更新结束,区块拥有前向哈希值和后向哈希值;再一次计算新区块的前向哈希值,更新到区块的前向哈希值,这是第二次更新。总结来看:
[0043] (1)区块n+1的前向哈希值的计算过程可以描述为:
[0044] node(n+1).pre_hash=hash(node(n).others||node(n).pre_hash||hash(node(n+1).others||hash(node(n).others||node(n).pre_hash)))
[0045] (2)区块n的后向哈希值的计算过程可以描述为:
[0046] node(n).next_hash=hash(node(n+1).others||hash(node(n).others||node(n).pre_hash))
[0047] 在交易发起子链生成新区块,代表一类新的交易产生。交易发起区块存在三个新增字段:前向哈希值、后向哈希值和子链哈希值。在此操作中,只更新前向哈希值和后向哈希值,子链哈希值为空。关于前向哈希值和后向哈希值更新,可如上所述。
[0048] 交易数据子链生成,代表新的交易已经开始,第一个交易数据区块即将链入到指定交易发起区块。此时子链哈希值的作用等同于后向哈希值,只是其指向是交易数据子链的第一个区块,而非交易发起子链的后继区块,具体过程可如上所述。
[0049] 任何一个用户,如果需要验证区块链的完整性,可以采用以下算法实现:
[0050] (1)当用户正处于链上的n号区块,可以根据前向哈希值字段,依次向前验证前序区块的完整性,验证方法是:
[0051] node(n).pre_hash=hash(node(n-1).others||node(n-1).pre_hash||node(n-1).next_hash)
[0052] (2)当用户正处于链上的n号区块,可以根据后向哈希值字段,依次向后验证前序区块的完整性,验证方法是:
[0053] node(n).next_hash=hash(node(n).others||node(n).pre_hash||hash(node(n+1).others||
[0054] hash(node(n).others||node(n).pre_hash)))
[0055] (3)当用户正处于交易数据子链第一个区块node_data,根据前向哈希值字段,验证交易发起子链对应区块node_head的完整性,验证方法是:
[0056] node_data.pre_hash=hash(node_head.others||node_head.pre_hash||node_head.sublink(其中node_head.sublink代表交易发起区块的子链哈希值)[0057] (4)当用户正处于交易发起区块,根据子链哈希值,验证交易数据第一个区块的完整性,验证方法是:
[0058] node_head.sublink=hash(node_head.others||node_head.pre_hash||hash_data.others||
[0059] hash(node_head.others||node_head.pre_hash)))
[0060] 作为本发明实施例中的基于区块链数据结构的任务处理方法,进一步地,共识机制中,多个用户参与共识,每个用户生成随机数并提前公开随机数的验证因子以及签名结果,通过猜测平均数选取优胜者,并利用激励机制鼓励用户参与区块生成,最终确定区块生成者。
[0061] 共识机制要求共识效率高,能够满足交易达成速度需求。由于应用背景的限制,平台可主要是私有区块链,各个节点都是经过认证才能进入平台,所以各个节点并不是完全陌生,这为快速达成共识提供了基础支持。这种共识机制可称之其为猜数共识算法。具体算法可设计为如下内容:
[0062]
[0063]
[0064] 在猜数共识算法中,每个参与者提前公开随机数的验证因子(即随机数的哈希值)以及签名结果。这样,当随机数被公开时,任何一个参与者可以验证其它随机数的来源以及完整性和真实性。通过上述方式,可以避免参与者为了回避共识,抵赖其行为。但是参与者可以以未收到消息为借口,拒绝共识。这方面,可以通过相应的激励机制,鼓励参与者参与区块生成。在私有链中,可以基于积分等方法实现激励机制。存在多个胜出者的原因可能有三个方面。首先在正常情况下,两位或者两位以上胜出者给出同样的随机数值,并且该数值符合最后胜出条件。这种情况可以扩大随机数精度来尽可能避免。其次是广播过程中,存在消息丢失的情况,造成不同用户所计算的平均值并不相同。这种情况是不可避免的,尤其当参与共识用户非常多的情况下。最后一种情况是存在被攻击者控制的用户,这些攻击者可以恶意的隐藏消息,或者违规发送非法消息。
[0065] 作为本发明实施例中的基于区块链数据结构的任务处理方法,进一步地,多个用户参与共识时,分拆共识参与用户群体,缩小共识参与用户范围,分级共识;在每个缩小范围内达成共识后,将群体胜出者作为群体代表,层级递归完成多级共识。
[0066] 为了避免猜数共识算法执行后出现的上述后两种情况,本发明实施例中给出多级猜数共识算法。其核心思想是先在小范围达成共识,再逐步扩大共识范围,直至最后得到共识,算法可设计为如下内容:
[0067]
[0068]
[0069] 从本质上讲,“多级猜数共识”就是在大群体难以达成共识时,将共识参与范围减少以求得共识,再由子群体共识者参与上一层次的共识。这种方法有助于快速达成共识。现有共识算法有多种。本发明实施例中所提出的“猜数共识”以及“多级猜数共识”只是其中一种,适应于私有链,但是不排斥其它共识算法来实现区块链中的共识处理过程。
[0070] 进一步地,本发明实施例中还提供一种基于区块链数据结构的任务处理装置,所述装置包括用于执行如上述基于区块链数据结构的任务处理方法的单元。
[0071] 除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对步骤、数字表达式和数值并不限制本发明的范围。
[0072] 基于上述的方法,本发明实施例还提供一种服务器,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现上述的方法。
[0073] 基于上述的方法,本发明实施例还提供一种计算机可读介质,其上存储有计算机程序,其中,该程序被处理器执行时实现上述的方法。
[0074] 本发明实施例所提供的系统/装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,系统/装置实施例部分未提及之处,可参考前述方法实施例中相应内容。
[0075] 所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统/装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0076] 在这里示出和描述的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制,因此,示例性实施例的其他示例可以具有不同的值。
[0077] 应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
[0078] 附图中的流程图框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0079] 在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0080] 所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0081] 另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
[0082] 所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0083] 最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈