基于区块分布式区块链的区块同步方法及电子设备与流程

文档序号:24984875发布日期:2021-05-07 23:02阅读:132来源:国知局
基于区块分布式区块链的区块同步方法及电子设备与流程

本发明涉及区块链技术领域,具体涉及一种基于区块分布式区块链的区块同步方法及电子设备。



背景技术:

由于区块链技术具有去中心化和不可篡改特点,因此,区块链技术受到广泛追捧并能够应用于各类业务场景。现有区块链节点的本地都保存相同区块账本,区块账本的各个区块依次串接,以形成区块链。

随着区块账本使用时间的增长,区块账本的区块日益增多,一些区块链数据量会逐渐变得过于庞大,例如,以太坊区块链的数据量大小已经超过1tb,从而导致记账节点迟早无法承受存储压力而退出记账,使得区块链系统最终瘫痪或者逐渐中心化,失去“机制可信”的能力。

若需要改变集中化存储的现有区块链结构形态,由于同步区块链数据是区块链的常规应用功能,因此,我们还需要考虑在改变现有区块链结构形态下,如何可靠安全地同步区块。



技术实现要素:

本发明实施例的一个目的旨在提供一种基于区块分布式区块链的区块同步方法及电子设备,其能够可靠安全地同步区块。

在第一方面,本发明实施例提供一种基于区块分布式区块链的区块同步方法,包括:

发送数据同步指令至多个关联节点,每个所述关联节点都保存相同区块高度的超级区块,所述超级区块包括数据可变区,所述数据可变区包括本地区块优先权,所述本地区块优先权用于表示相同区块高度的各个超级区块被相应关联节点同步的优先级;

获取每个所述关联节点返回的本地区块优先权;

根据各个所述关联节点的本地区块优先权,确定目标节点,所述目标节点为所述多个关联节点中的关联节点;

同步所述目标节点的超级区块。

在第二方面,一种存储介质,所述存储介质存储有计算机可执行指令,所述计算机可执行指令用于使电子设备执行上述的基于区块分布式区块链的区块同步方法。

在第三方面,本发明实施例提供一种计算机程序产品,所述计算机程序产品包括存储在非易失性计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被电子设备执行时,使电子设备执行上述基于区块分布式区块链的区块同步方法。

在第四方面,本发明实施例提供一种电子设备,包括:

至少一个处理器;以及,

与所述至少一个处理器通信连接的存储器;其中,

所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行所述的基于区块分布式区块链的区块同步方法。

本发明与现有技术相比至少具有以下有益效果:在本发明实施例提供的基于区块分布式区块链的区块同步方法中,首先,发送数据同步指令至多个关联节点,每个关联节点都保存相同区块高度的超级区块,超级区块包括数据可变区,数据可变区包括本地区块优先权,本地区块优先权用于表示相同区块高度的各个超级区块被相应关联节点同步的优先级;其次,获取每个关联节点返回的本地区块优先权;再次,根据各个关联节点的本地区块优先权,确定目标节点,目标节点为所述多个关联节点中的关联节点;最后,同步目标节点的超级区块,因此,本实施例通过本地区块优先权,尽量选择高安全性的超级区块进行同步,尽量避免同步存在篡改行为、不安全的超级区块,从而提高分布式区块链的数据同步的安全性和可靠性。

附图说明

一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。

图1为本发明实施例提供的一种区块分布式区块链系统的应用场景示意图;

图2为本发明实施例提供的一种基于区块分布式区块链的区块同步方法的流程示意图;

图3a至图3e分别为本发明实施例提供的一种区块分布式区块链的结构示意图;

图4a为图2所示的s23的流程示意图;

图4b为本发明实施例提供的一种区块同步系统的结构示意图;

图4c为图4a所示的s233的流程示意图;

图4d为本发明另一实施例提供的一种区块同步系统的结构示意图;

图5a为本发明另一实施例提供的一种基于区块分布式区块链的区块同步方法的流程示意图;

图5b为图5a所示的s24的一种流程示意图;

图5c为图5a所示的s24的另一种流程示意图;

图5d为本发明再一实施例提供的一种基于区块分布式区块链的区块同步方法的流程示意图;

图5e为本发明实施例提供的一种节点合法性验证的结构示意图;

图6为本发明实施例提供的一种电子设备的电路原理框图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

需要说明的是,如果不冲突,本发明实施例中的各个特征可以相互结合,均在本发明的保护范围之内。另外,虽然在装置示意图中进行了功能模块划分,在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于装置中的模块划分,或流程图中的顺序执行所示出或描述的步骤。再者,本发明所采用的“第一”、“第二”、“第三”等字样并不对数据和执行次序进行限定,仅是对功能和作用基本相同的相同项或相似项进行区分。

图1为本发明实施例提供的一种区块分布式区块链系统的应用场景示意图,如图1所示,区块分布式区块链系统100包括客户端11与区块链网络12,客户端11与区块链网络12通信连接,其中,通信方式包括支持任意合适通信协议的无线通信方式或有线通信方式。

客户端11用于与区块链网络12通信,以完成相关业务逻辑,诸如交易、同步数据、检索查询数据、上传数据等。在一些实施例中,客户端11包括智能手机、平板电脑、膝上型计算机或台式计算机等。

区块链网络12包括在区块链系统中充当各类业务角色的各类节点,如图1所示,各类节点包括出块节点121、权威节点122及普通节点123,出块节点121、权威节点122及普通节点123互相通信连接。

出块节点121用于共识超级区块,当共识通过超级区块,便将超级区块写入权威节点122,其中,出块节点121的数量可以为多个,出块节点121可以采用任意合适共识算法完成超级区块的共识,诸如长老团共识机制、工作量证明(proofofwork,pow)、权益证明(proofofstake,pos)、股份授权证明(delegateproofofstake,dpos)、实用拜占庭容错(practicalbyzantinefaulttolerance,pbft)、授权拜占庭容错(delegatedbyzantinefaulttolerance,dbft)等。

本文所阐述的超级区块可以为任意合适数据类型、任意合适数据大小的区块,在此不对超级区块的数据类型和/或数据大小作出任何不当限定。

权威节点122用于存储出块节点121共识通过的超级区块,通常,由于权威节点122最早被写入超级区块,并且是由各个出块节点121根据共识算法共识确定的节点,因此,权威节点122本地存储的超级区块具有最高真实性,其中,权威节点122的数量可以为多个。

普通节点123为具有记账功能的节点,可以发起账本交易及记录区块,并且还可以从其它节点同步记录超级区块,更新本地账本。

可以理解的是,在一些实施例中,区块链网络12中一些节点可以同时兼任多种业务角色,比如,出块节点121不仅可以共识超级区块,而且还可以具有记账功能或交易功能,因此,在本文中,不对区块链节点能够执行的业务逻辑作出任何不当限定。在一些实施例中,区块链节点可以包括智能电话、平板电脑、膝上型计算机、台式计算机或服务器等。

作为本发明实施例一方面,本发明实施例提供一种基于区块分布式区块链的区块同步方法,请参阅图2,区块同步方法s200包括:

s21、发送数据同步指令至多个关联节点,每个关联节点都保存相同区块高度的超级区块,超级区块包括数据可变区,数据可变区包括本地区块优先权,本地区块优先权用于表示相同区块高度的各个超级区块被相应关联节点同步的优先级;

在本实施例中,各个关联节点为存储相同区块高度的节点,数据同步指令用于请求多个关联节点返回本地超级区块的本地区块优先权,以便同步相应的超级区块。每个关联节点接收到数据同步指令,解析数据同步指令,并根据解析结果,提取本地超级区块的本地区块优先权并将其返回。此处关联节点可以为任意合适角色的节点,例如普通节点或出块节点等。

在本实施例中,超级区块由共识候选区块得到,候选区块由业务数据打包而成,在本实施例中,业务数据可以为任意合适业务场景下的数据,数据内容可以为任意形式内容,例如,在交易场景下,业务数据为双方的交易数据,数据内容为付款方、收款方、支付数额等内容,或者,为了防止某类技术数据丢失而无法有效地还原某项技术,在重要数据保存场景,业务数据为行业重要技术性数据,数据内容为能够还原该行业或某个细分技术领域的技术内容。在本实施例中,候选区块为待共识区块。

在一些实施例中,将业务数据打包成候选区块之前,可以判断业务数据是否满足预设打包条件,若是,将业务数据打包成候选区块,若否,继续获取另一组业务数据或者等待业务数据满足预设打包条件,举例而言,在重要数据保存场景下,需要先判断当前业务数据是否足够还原某项技术,若否,则继续搜索业务数据,等待业务数据满足预设打包条件。再举例而言,当前业务数据的数据量小于预设数据阈值,则需要等待业务数据等于或大于预设数据阈值,方可将业务数据打包成候选区块。

在本实施例中,共识通过候选区块后得到超级区块,出块节点可以将超级区块写入权威节点。区块链网络约定出块节点写入新权威节点的超级区块的数量为指定数量,出块节点根据约定规则,在相同新权威节点写入指定数量的超级区块,其中,指定数量可以为一个或两个以上,写入同一个新权威节点的各个超级区块的区块高度可以不同。

在本实施例中,在区块链网络中,权威节点的数量可以为多个,不同区块高度的超级区块可以存储在不同权威节点,也可以存储在相同权威节点。当被写入当前指定数量的超级区块时,当前权威节点为新权威节点。

可以理解的是,写入指定数量超级区块的新权威节点的数量可以为一个或两个以上,当写入两个以上的新权威节点时,其能够更加安全地存储超级区块,降低因某个新权威节点被恶意攻击而无法正常提供超级区块时的风险,并且也会提高同步超级区块的效率。

在本实施例中,不同权威节点所存储的超级区块或相同权威节点的各个超级区块互锁,从而形成区块分布式区块链。

举例而言,请参阅图3a,权威节点1-1写入区块高度为1的超级区块,权威节点2-1写入区块高度为2的超级区块,权威节点3-1写入区块高度为3的超级区块,以此类推,因此,在图3a中,每个权威节点写入一个超级区块,并且,各个权威节点的超级区块互相形成互锁关系,从而构成区块分布式区块链。

再举例而言,请参阅图3b,权威节点1-1、权威节点1-2及权威节点1-3都写入区块高度为1的超级区块,权威节点2-1、权威节点2-2及权威节点2-3都写入区块高度为2的超级区块,权威节点3-1、权威节点3-2及权威节点3-3都写入区块高度为3的超级区块,以此类推,因此,在图3b中,相同区块高度的超级区块分别写入多个权威节点,每个权威节点写入一个超级区块,并且,各个权威节点的超级区块互相形成互锁关系,从而构成区块分布式区块链。

举例而言,请参阅图3c,权威节点1-1写入区块高度分别为1和2的超级区块,权威节点2-1写入区块高度分别为3和4的超级区块,权威节点3-1写入区块高度分别为5和6的超级区块,以此类推,因此,在图3c中,每个权威节点写入区块高度连续的两个超级区块,并且,各个权威节点的超级区块以及相同权威节点的超级区块互相形成互锁关系,从而构成区块分布式区块链。

举例而言,请参阅图3d,多个权威节点1-1都写入区块高度分别为1和2的超级区块,多个权威节点2-1都写入区块高度分别为3和4的超级区块,多个权威节点3-1都写入区块高度分别为5和6的超级区块,以此类推,因此,在图3d中,多个权威节点写入区块高度连续的两个超级区块,并且,各个权威节点的超级区块以及相同权威节点的超级区块互相形成互锁关系,从而构成区块分布式区块链。

可以理解的是,写入权威节点的超级区块可以为多个,多个权威节点1-1写入区块高度分别为1、2及3的超级区块。

还可以理解的是,写入相同权威节点的多个超级区块的区块高度可以是连续的,亦可以是断续的,区块链网络可以自行约定区块写入规则,各个出块节点可以根据区块写入规则完成超级区块的写入。如图3e所示,多个权威节点1-1写入区块高度分别为1、3的超级区块,多个权威节点2-1写入区块高度分别为2、4的超级区块,多个权威节点3-1写入区块高度分别为5、7的超级区块,以此类推,因此,在图3e中,多个权威节点写入区块高度断续的两个超级区块,并且,各个权威节点的超级区块以及相同权威节点的超级区块互相形成互锁关系,从而构成区块分布式区块链。

由上述各个实施例得知,相对现有区块链,本方法能够将现有区块链打碎,分散保存超级区块,分散后的超级区块能够形成区块分布式区块链,后续相关记账节点同步区块分布式区块链时,无需如现有技术般需要同步整条区块链,只需要根据自身需求,对相应超级区块进行记账,从而提高了区块链的使用效率。并且在提高存储区块的灵活度的前提下,还能够保证本实施例提供的区块分布式区块链具备去中心化、透明及不可篡改的特性。即使随着区块链使用时间的增长,本实施例能够均衡协调记账节点的存储能力,避免记账节点存储过多区块数据而出现崩溃或退出记账的情况出现。

并且,现有区块链依赖于记账内容的定时出块,从而导致区块时而空转时而满负荷,运营效益差,在本实施例提供的区块分布式区块链中,其并不受限出块时间,只要满足指定数量,便可以将指定数量的超级区块写入至少一个新权威节点,从而避免区块链空转的情形出现。

在一些实施例中,每个新权威节点存储指定数量的超级区块后,被配置于禁止接收其它区块的封闭模式,超级区块处于只读模式。

封闭模式为权威节点在写入指定数量的超级区块后,进入禁止接收其它区块写入的模式,只读模式为超级区块的数据仅能被读取但禁止修改、删除或更新的模式。

在一些实施例中,每个权威节点进入封闭模式后,虽然其禁止写入其它区块,但是还可以接收非区块的辅助数据的写入,例如,辅助数据包括其它权威节点的地址信息以及存储超级区块的区块高度。

因此,由于权威节点进入封闭模式,其能够避免权威节点遭受恶意攻击而被增加或删减超级区块,从而有利于维护区块分布式区块链的秩序、安全及稳定。并且,由于超级区块写入权威节点后进入只读模式,避免恶意节点篡改或删除超级区块,从而有利于维护超级区块的数据稳定性和安全性。

在一些实施例中,指定数量为1,不同区块高度的超级区块分布于不同权威节点,以形成区块分布式区块链,亦即,此时区块链结构如图3a所示,采用此种区块链结构,其能够提高区块上链的实时性,有利于增强区块链的安全性和透明性。

为了更加安全可靠地塑造区块分布式区块链,在一些实施例,请参阅表1:

表1

如表1所示,超级区块的区块体包括业务数据及父节点列表,区块头包括区块高度、父区块哈希及区块体哈希,父节点列表包括处于相同区块高度下每个父权威节点的节点信息。

在本实施例中,父节点列表为包含处于相同区块高度下每个父权威节点的节点信息的列表,区块高度为当前超级区块在区块分布式区块链的排列高度,父区块哈希为在区块分布式区块链中,排列在当前超级区块前面一个区块的哈希,区块体哈希用于锚定区块体中的各个数据,在一些实施例中,区块体哈希可以为区块体中全部数据的哈希,亦可以包括业务数据哈希和父节点列表哈希,请参阅表2:

表2

如表2所示,业务数据哈希为区块体中的业务数据的哈希,父节点列表哈希为区块体中的父节点列表的哈希。由于区块体哈希分为业务数据哈希和父节点列表哈希,后续验证超级区块时,其能够有利于其它节点可靠安全地多维度验证超级区块的合法性。

如表1或表2所示,父权威节点为当前超级区块的父超级区块所在的权威节点,例如,请结合图3b,区块高度为1的第二超级区块为区块高度为2的第一超级区块的父区块,亦即,第二超级区块与第一超级区块互为父子关系,因此,权威节点1-1为权威节点2-1的父权威节点。

在一些实施例中,由于父节点列表包括处于相同区块高度下每个父权威节点的节点信息,后期验证当前超级区块的合法性时,区块链节点可以从当前超级区块中提取出父节点列表中各个父权威节点的节点信息,再根据父权威节点的节点信息获取父超级区块,再计算父超级区块的父区块哈希,将此时的父区块哈希与当前超级区块的父区块哈希作比对,若一致,则当前超级区块在此点是合法的,若不一致,则当前超级区块是非法的。因此,采用本方法,其能够更加安全可靠地塑造区块分布式区块链。

在一些实施例中,每个权威节点的节点信息包括节点哈希和/或节点公钥,权威节点的节点哈希用于标识权威节点,节点哈希可以为权威节点的设备系列号的哈希,亦可以由表示权威节点的设备信息的字符或字符串根据哈希算法计算得到,更可以为表示权威节点的地址的哈希,后期,其它区块链节点可以根据权威节点的节点信息,访问权威节点。节点公钥用于辅助验证权威节点参与的相关业务的合法性,其中,权威节点的节点公钥可以播报在区块链网络,相关区块链节点都可以获取权威节点的节点公钥。

在一些实施例中,超级区块的区块头包括出块节点的节点签名,后续相关节点可以根据出块节点的节点签名验证超级区块的合法性。

通常,现有区块链的区块中的数据都是一致性的,例如,在现有区块链中,区块链节点a1与区块链节点a2都保存相同区块账本,所述区块账本包括区块高度为100的区块s,其中,区块链节点a1中区块高度为100的区块s与区块链节点a2中区块高度为100的区块s都是相同的,亦即两者的区块数据都是一致的,但是,由于区块分布式区块链的超级区块是分散存储在不同权威节点,权威节点并未如现有区块链般保存着区块链上的全部区块,此种区块结构在区块分布式区块链中并未能够有效地反映出当前区块与本地节点或父节点的关系,后续未能够高效率地验证区块或者恶意节点容易攻击超级区块。

因此,在一些实施例中,超级区块的区块体还包括数据可变区,处于相同区块高度下各个超级区块中数据可变区的数据可不一致,且数据可变区的数据在超级区块上链前为可变的,在超级区块上链后为不可变的,举例而言,超级区块b1写入权威节点c1,其包括数据可变区d1。超级区块b2写入权威节点c2,其包括数据可变区d2。

超级区块b3写入权威节点c3,其包括数据可变区d3。超级区块b1、b2及b3的区块高度都为150,数据可变区d1的数据与数据可变区d2的数据一致,数据可变区d1的数据与数据可变区d3的数据不一致。

在超级区块b1写入权威节点c1之前,亦即超级区块b1在上链到区块分布式区块链之前,数据可变区d1的数据可以修改、更新或删除,在写入权威节点c1之后,亦即超级区块b1上链到区块分布式区块链,此时,数据可变区d1的数据是不可变的,例如,将超级区块b1配置进入只读模式。对于超级区块b2及b3,其数据可变区的数据变化可以按照上文所阐述的推理,在此不赘述。

因此,由于超级区块增设数据可变区,因此,其能够更加灵活和全面地描述超级区块在区块分布式区块链中的形成关系,有助于提高区块分布式区块链的使用效率、运营效率和安全性。

可以理解的是,本领域技术人员可以根据本文公开的内容,通过合乎逻辑地推导和自行确定每个超级区块中数据可变区的内容表达。

在一些实施例中,数据可变区包括与本地节点关联的本地特征数据,本地特征数据用于表示本地超级区块和/或本地节点的特征,其中,本地节点不仅可以为本地权威节点,亦可以为保存超级区块的任何角色节点,例如,在普通节点保存超级区块中,其数据可变区包括本地特征数据。

在一些实施例,请参阅表3:

表3

在表3中,区块体哈希为业务数据哈希、父节点列表哈希或由业务数据和父节点列表共同计算得到的哈希。

如表3所示,本地特征数据包括本地节点字段和/或本地区块来源字段,本地节点字段用于表示存储超级区块的本地节点信息,本地区块来源字段用于表示超级区块的来源节点信息。

举例而言,超级区块e1存储在普通节点f1,则其本地节点字段用于表示普通节点f1的节点信息。超级区块e2存储在权威节点f2,则其本地节点字段用于表示权威节点f2的节点信息。

假设普通节点f1从权威节点f2同步超级区块e2,从而得到本地超级区块e1,由于超级区块e1是来源于超级区块e2的,则权威节点f2是普通节点f1的来源节点,因此,本地区块来源字段用于表示权威节点f2的节点信息。

再假设超级区块e3存储在普通节点f3,其中,普通节点f3从普通节点f1同步超级区块e1,从而得到本地超级区块e3,由于超级区块e3是来源于超级区块e1的,则普通节点f1是普通节点f3的来源节点,因此,本地区块来源字段用于表示普通节点f1的节点信息。可以理解的是,当本地节点为权威节点时,本地区块来源字段为空字段。

因此,采用本方法,当某个超级区块的同步次数比较多,各个超级区块也会基于本地特征数据形成一定程度的互锁关系,若某个区块链节点恶意修改本地超级区块的数据,同步此超级区块的下一个区块链节点除了根据上文提供方法验证之外,还可以通过本地特征数据验证此超级区块,若验证此超级区块非法,通过本地特征数据,也比较容易锁定与此超级区块存在继承关系的相关区块链节点,并从中进行排查,并将排查结果在区块链网络中播报,以便相应区块链节点执行相应的安全操作,从而能够有效和高安全地维护和运营区块分布式区块链。

在一些实施例中,本地节点字段包括本地节点的本地节点哈希和/或本地区块优先权和/或本地节点公钥和/或本地签名字段。

本地节点哈希包括本地节点的设备信息和/或节点地址的哈希。

本地区块优先权用于表示相同区块高度的各个超级区块被相应节点保存的优先级,其中,对于相同区块高度的不同超级区块在不同节点的本地区块优先权可以相同,亦可以不同。

举例而言,超级区块g1存储在权威节点h1,超级区块g2存储在普通节点h2,超级区块g3存储在普通节点h3,超级区块g4存储在普通节点h4,其中,超级区块g2与超级区块g3是普通节点h2和普通节点h3分别同步权威节点h1的超级区块g1得到的,超级区块g4是普通节点h4同步普通节点h3的超级区块g3得到的,因此,虽然超级区块g1、超级区块g2、超级区块g3及超级区块g4的区块高度相同,但是,超级区块g1的本地区块优先权高于超级区块g2和超级区块g3,超级区块g2的本地区块优先权与超级区块g3的本地区块优先权相同,超级区块g4的本地区块优先权低于超级区块g3的,后续普通节点h5需要同步超级区块时,可以优先同步权威节点h1的超级区块g1。

本地节点公钥用于辅助验证本地节点参与的相关业务的合法性,其中,本地节点的节点公钥可以播报在区块链网络,相关区块链节点都可以获取本地节点的节点公钥。

本地签名字段为本地节点对数据可变区中除本地签名字段之外的数据的签名,后续其它区块链节点可以通过本地签名字段验证数据可变区中的数据是否被篡改等非法处理,因此,此种作法有利于在超级区块增加数据可变区的前提下,能够高效率安全地校验数据可变区的数据。

在一些实施例中,本地区块来源字段包括继承字段和/或根源字段,继承字段用于表示被继承的超级区块对应的继承节点的节点信息,根源字段用于表示本地超级区块对应的根源节点的节点信息,根源节点为可追溯地最早存储本地超级区块的节点。

举例而言,如前所述,对于超级区块g2或超级区块g3而言,超级区块g1为被继承的超级区块,因此,权威节点h1为普通节点h2和普通节点h3的继承节点。同理,对于超级区块g4而言,超级区块g3为被继承的超级区块,因此,普通节点h3为普通节点h4的继承节点,因此,在普通节点h4的超级区块g4中,其继承字段写入的节点信息为普通节点h3的节点信息。

再举例而言,假设普通节点h5同步权威节点h1的超级区块g1,得到超级区块g5。普通节点h6同步普通节点h4的超级区块g4,得到超级区块g6,普通节点h7同步普通节点h6的超级区块g6,得到超级区块g7,普通节点h8同步普通节点h7的超级区块g7,得到超级区块g8。对于普通节点h8,超级区块g8为本地超级区块,超级区块g8的同步路径为g8—g7—g6—g4—g3—g1,超级区块g1存储在权威节点h1,因此,可追溯地最早存储超级区块g8的节点为权威节点h1,亦即,权威节点h1为根源节点,因此,在普通节点h8的超级区块g8中,其根源字段写入的节点信息为权威节点h1的节点信息。

假设存储超级区块g4的普通节点h4消失在区块链网络中,例如,普通节点h4被恶意攻击而崩溃离线,或者被物理破坏而丢失,因此,超级区块g4也会跟随普通节点h4的消失而消失,对于超级区块g8而言,普通节点h8追溯到普通节点h6的超级区块g6时,便无法继续追溯超级区块g8的起源,因此,普通节点h8能够追溯到最早存储超级区块g8的节点为普通节点h6,亦即,普通节点h6为根源节点,因此,在普通节点h8的超级区块g8中,其根源字段写入的节点信息为普通节点h6的节点信息。

因此,通过增加继承字段和/或根源字段,其能够在区块分布式地存储形态下,简单可靠全面安全地还原相应超级区块的同步路径,能够更加有效安全地维护区块分布式区块链。

在一些实施例中,继承节点的节点信息包括继承节点哈希和/或继承节点优先权和/或继承节点公钥和/或继承节点的本地签名字段,继承节点的本地签名字段为本地节点对数据可变区中除继承节点的本地签名字段之外的数据的签名。和/或,根源节点的节点信息包括根源节点哈希和/或根源节点优先权和/或根源节点公钥和/或根源节点的本地签名字段,根源节点的本地签名字段为本地节点对数据可变区中除根源节点的本地签名字段之外的数据的签名。

在本实施例中,可以采用任意合适共识算法共识候选区块,同上所述的各类共识算法,在此不赘述。

在本实施例中,超级区块可以为任意合适数据类型、任意合适数据大小的区块。

s22、获取每个关联节点返回的本地区块优先权;

在本实施例中,本地区块优先权可以由任意合适形式的字符或字符串表示,例如,以阿拉伯数字表示本地区块优先权,其中,数字越小,亦即本地区块优先权越小,超级区块被相应节点同步的优先级越高,例如,本地区块优先权为0,则第一超级区块被同步的优先级最高。本地区块优先权为1,则第二超级区块被同步的优先级比第一超级区块的低,虽然第一超级区块与第二超级区块的区块高度相同,假设电子设备需要同步超级区块时,可以根据第一超级区块或第二超级区块的本地区块优先权,优先选择第一超级区块进行同步。

通常,存储在权威节点的超级区块的优先级为最高,例如,写入本地节点字段的本地区块优先权为0。

s23、根据各个关联节点的本地区块优先权,确定目标节点;

在本实施例中,电子设备可以根据各个关联节点的本地区块优先权,结合任意合适规则或算法确定目标节点,其中,目标节点的数量可以为一个或两个以上。

s44、同步目标节点的超级区块。

在本实施例中,同步目标节点的超级区块时,电子设备可以同步超级区块的全部数据或者部分数据。

总体而言,本实施例通过本地区块优先权,尽量选择高安全性的超级区块进行同步,尽量避免同步存在篡改行为、不安全的超级区块,从而提高分布式区块链的数据同步的安全性和可靠性。

并且,本实施例能够提高区块链的使用效率,并且在提高存储区块的灵活度的前提下,还能够保证本实施例提供的区块分布式区块链具备去中心化、透明及不可篡改的特性。另一方面,即使随着区块链使用时间的增长,本实施例能够均衡协调记账节点的存储能力,避免记账节点存储过多区块数据而出现崩溃或退出记账的情况出现。

另外,本实施例可根据自身的存储能力选择超级区块的存储数量,无需存储所有超级区块,解决目前系统随时间迟早崩溃的隐患。电子设备可根据自身的需要选择相应区块高度的超级区块进行存储,无需从头开始存储,可集中资源服务与其相关的方向。

在一些实施例中,请参阅图4a,s23包括:

s231、根据各个关联节点的本地区块优先权,判断各个关联节点中是否存在最高优先级的超级区块;

s232、若是,选择保存最高优先级的超级区块的关联节点为目标节点;

s233、若否,根据各个关联节点返回的本地区块优先权,继续确定目标节点。

举例而言,请结合图4b,电子设备4-0向区块链网络广播数据同步指令,其中,数据同步指令封装有需要同步超级区块的目标区块高度,例如,目标区块高度为120,亦即,电子设备4-0需要同步区块高度为120的超级区块。区块链网络中相应节点收到数据同步指令,解析数据同步指令,得到目标区块高度。相应节点搜索本地是否存储与目标区块高度匹配的超级区块,若存储,则响应数据同步指令,并将本地区块优先权返回给电子设备4-0,若未存储,则不响应数据同步指令。

如图4b所示,权威节点4-1、普通节点4-2、普通节点4-3及普通节点4-4都向电子设备返回本地区块优先权,其中,权威节点4-1的本地区块优先权为0,普通节点4-2与普通节点4-3的本地区块优先权都为1,普通节点4-4的本地区块优先权为2。

电子设备根据各个节点的本地区块优先权,遍历到存在最高优先级的超级区块,亦即,最高优先级的超级区块对应的节点为权威节点4-1,因此,电子设备选择权威节点4-1为目标节点,同步权威节点4-1的超级区块。

可以理解的是,与上述实施例不同点在于,电子设备可以本地维护着同步节点列表,同步节点列表包括各个节点的区块高度及节点地址,若电子设备需要同步某个区块高度的超级区块时,电子设备可以查询同步节点列表,从同步节点列表中提取出相同区块高度的节点的节点地址,并以此将数据同步指令发送至多个节点,所述多个节点都保存相同区块高度的超级区块。

可以理解的是,考虑到权威节点或者高优先级的节点处于离线状态而未能及时响应数据同步指令,或者被恶意攻击而被屏蔽在区块链网络之外,因此,电子设备发送数据同步指令时,权威节点或者高优先级的节点也未能够及时返回本地区块优先权,因此,在电子设备收到的各个节点的本地区块优先权中,可能不存在权威节点的本地区块优先权或高优先级的节点的本地区块优先权。

假设在图4b中,权威节点4-1处于离线状态而未能够返回本地区块优先权0给电子设备,为了能够正常有秩序地继续同步超级区块,电子设备根据普通节点4-2、普通节点4-3及普通节点4-4返回的本地区块优先权,继续确定目标节点,例如,电子设备可以选择普通节点4-2和/或普通节点4-3作为目标节点。

在一些实施例中,请参阅图4c,s233包括:

s2331、按照每个本地区块优先权的优先级次序,排列各个关联节点;

s2332、选择优先级依次最接近最高优先级的指定数量的关联节点作为目标节点。

举例而言,请参阅图4d,如前所述,权威节点4-1处于离线状态而未能够返回本地区块优先权0给电子设备,但是普通节点4-2、普通节点4-3……普通节点4-9都向电子设备返回本地区块优先权,权威节点4-1、普通节点4-2、普通节点4-3……普通节点4-9都保存相同区块高度的超级区块,普通节点4-2与普通节点4-3的本地区块优先权都为1,普通节点4-4的本地区块优先权为2,普通节点4-5的本地区块优先权为3,普通节点4-6、4-7的本地区块优先权都为4,普通节点4-8、4-9的本地区块优先权都为5。

电子设备按照由高到低(或者由低到高)的优先级次序,排列普通节点4-2、普通节点4-3……普通节点4-9,得到:

{(4-2,1),(4-3,1),(4-4,2),(4-5,3),(4-6,4),(4-7,4),(4-8,5),(4-9,5),}。

假设指定数量为1,由于普通节点4-2与普通节点4-3的优先级都是最接近权威节点4-1的优先级,则电子设备可以选择普通节点4-2或普通节点4-3作为目标节点,于是,电子设备便可以选择普通节点4-2或普通节点4-3的超级区块进行同步。

假设指定数量为4,由于普通节点4-2、普通节点4-3、普通节点4-4及普通节点4-5的优先级都是依次最接近权威节点4-1的优先级,因此,电子设备选择普通节点4-2、普通节点4-3、普通节点4-4及普通节点4-5都作为目标节点,于是,电子设备便可以选择普通节点4-3、普通节点4-4及普通节点4-5中任一普通节点的超级区块进行同步。

在一些实施例中,为了更加安全可靠地同步超级区块,当目标节点的数量为至少两个以上时,在执行s24之前,请参阅图5a,区块同步方法s200还包括:

s25、判断多个目标节点中超级区块的区块头哈希是否一致,若是,进入s24,若否,执行s26;

s26、继续确定目标节点。

在本实施例中,区块头哈希可以为对超级区块中区块头的全部数据作哈希运算得到的哈希,亦可以为区块头中父区块哈希、区块体哈希等。

在本实施例中,当多个目标节点中超级区块的区块头哈希不一致,则说明某个或多个目标节点的区块数据被篡改,由于电子设备无法获取到安全可靠地区块数据,因此,电子设备无法同步此时目标节点的超级区块,采用此种作法,有利于维护了区块分布式区块链的数据稳定性、安全性及可靠性。

举例而言,请结合图4d,指定数量为4,若普通节点4-2、普通节点4-3、普通节点4-4及普通节点4-5的区块头哈希不一致,则电子设备不选择普通节点4-2、普通节点4-3、普通节点4-4及普通节点4-5作为目标节点,这对于在电子设备无法获取到最高优先级的超级区块,亦即无法直接访问权威节点的前提下,采用此种作法有助于增强区块同步的安全性和可靠性。

在一些实施例中,请参阅图5b,s24包括:

s241、将超级区块中区块头的区块高度、父区块哈希及区块体哈希同步在本地超级区块的区块头;

s242、将超级区块中区块体的业务数据及父节点列表同步在本地超级区块的区块体;

s243、更新本地超级区块中区块体的数据可变区,使得更新后的本地超级区块的本地区块优先权的优先级低于目标节点中本地区块优先权的优先级。

举例而言,在目标节点的超级区块q1中,区块高度、父区块哈希及区块体哈希分别为{h0,w0,w1},则电子设备生成本地超级区块q2时,将超级区块q1的区块高度、父区块哈希及区块体哈希{h0,w0,w1}分别写入在本地超级区块q2的区块头中相应位置。并且,电子设备还将超级区块q1中区块体的业务数据及父节点列表{z0,z1}同步在本地超级区块q2的区块体中相应位置。

另外,由于超级区块q1的本地区块优先权为0,则电子设备更新本地超级区块中区块体的数据可变区时,将本地超级区块的本地区块优先权更新为1,亦即,更新后的本地超级区块的本地区块优先权的优先级低于目标节点中本地区块优先权的优先级,因此,基于同步次序越多,超级区块被篡改的风险越高的考虑,采用此种作法,其能够有利于后续节点同步超级区块时,有效地选择高安全性和高可靠性地超级区块进行同步,降低非法超级区块的存在可能性,进而能够有效地维护好区块分布式区块链。

在一些实施例中,请参阅图5c,s24包括s244,s244:更新本地超级区块中数据可变区的继承字段和/或根源字段。

在一些实施例中,更新本地超级区块中数据可变区的继承字段时,电子设备将目标节点的节点信息填充本地超级区块的继承字段。

在一些实施例中,更新本地区块中数据可变区的根源字段时,当目标节点为权威节点,将权威节点的节点信息填充根源字段,举例而言,目标节点i1为权威节点,电子设备将目标节点i1的节点信息填充本地超级区块的根源字段。

当目标节点为非权威节点,且其根源字段为权威节点的节点信息,则将权威节点的节点信息填充本地超级区块的根源字段,举例而言,目标节点i2为普通节点,且目标节点i2的根源字段为权威节点i3的节点信息,则电子设备将权威节点i3的节点信息填充本地超级区块的根源字段。

当目标节点为非权威节点,且其根源字段为非权威节点的节点信息,则将非权威节点的节点信息填充本地超级区块的根源字段,举例而言,目标节点i4为普通节点,且目标节点i4的根源字段为普通节点i5的节点信息,则电子设备将普通节点i5的节点信息填充本地超级区块的根源字段。

如前所述,采用此作法,通过不断地更新和记录每个超级区块中的继承字段和/或根源字段,其能够在区块分布式地存储形态下,简单可靠全面安全地还原相应超级区块的同步路径,能够更加有效安全地维护区块分布式区块链。

为了防止恶意节点假冒权威节点或者对权威节点进行其它恶意攻击,电子设备同步权威节点的超级区块或者访问权威节点时,可以验证权威节点的合法性,因此,在一些实施例中,请参阅图5d,区块同步方法s200还包括:

s27、发送随机码至第一权威节点,以使第一权威节点使用私钥对随机码进行签名,并返回签名结果,第一权威节点保存第一超级区块;

s28、在区块高度邻接第一超级区块之后的第二超级区块中,提取第一权威节点的节点公钥;

s29、使用第一权威节点的节点公钥验证签名结果是否合法,若是,则第一权威节点为合法权威节点,若否,则第一权威节点为非法权威节点。

在本实施例中,随机码为任意合适形式的字符或字符串。

为了详细理解本实施例,下文结合图5e对此作出详细说明:

如图5e所示,第一权威节点j1存储区块高度为101的第一超级区块q3,第二权威节点j2存储区块高度为102的第二超级区块q4,因此,第一超级区块q3与第二超级区块q4在区块分布式区块链上是相邻的,第一权威节点j1为第二权威节点j2的父权威节点。

由于第二超级区块q4的父节点列表记录第一权威节点j1的节点信息,亦即,第二超级区块q4的父节点列表记录第一权威节点j1的节点公钥,因此,后期可以使用第一权威节点j1的节点公钥验证第一权威节点j1的合法性。

举例而言,电子设备j0随机生成一段随机码,并将随机码发送给第一权威节点j1。按照业务逻辑,第一权威节点j1需要使用自身的私钥对随机码作签名,从而得到签名结果,然后第一权威节点j1将签名结果发送给电子设备。

电子设备j0知悉第一权威节点j1的节点公钥存储在第二权威节点j2的第二超级区块q4中,因此,电子设备j0在第二超级区块q4中提取第一权威节点j1的节点公钥,并使用第一权威节点j1的节点公钥验证签名结果是否合法,若是,则第一权威节点j1为合法权威节点,若否,则第一权威节点j1为非法权威节点。

因此,采用此种作法,其能够在区块分布式区块链中,有效地验证权威节点的合法性,从而有效地维护区块分布式区块链的信息安全。

需要说明的是,在上述各个实施方式中,上述各步骤之间并不必然存在一定的先后顺序,本领域普通技术人员,根据本发明实施方式的描述可以理解,不同实施方式中,上述各步骤可以有不同的执行顺序,亦即,可以并行执行,亦可以交换执行等等。

请参阅图6,图6为本发明实施例提供的一种电子设备的电路原理框图。如图6所示,电子设备600包括一个或多个处理器61以及存储器62。其中,图6中以一个处理器61为例。

处理器61和存储器62可以通过总线或者其他方式连接,图6中以通过总线连接为例。

存储器62作为一种存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本发明实施例中的基于区块分布式区块链的区块同步方法对应的程序指令/模块。处理器61通过运行存储在存储器62中的非易失性软件程序、指令以及模块,实现上述方法实施例提供的基于区块分布式区块链的区块同步方法的功能。

存储器62可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器62可选包括相对于处理器61远程设置的存储器,这些远程存储器可以通过网络连接至处理器61。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

所述程序指令/模块存储在所述存储器62中,当被所述一个或者多个处理器61执行时,执行上述任意方法实施例中的基于区块分布式区块链的区块同步方法。

本发明实施例还提供了一种非易失性计算机存储介质,所述计算机存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行,例如图6中的一个处理器61,可使得上述一个或多个处理器可执行上述任意方法实施例中的基于区块分布式区块链的区块同步方法。

本发明实施例还提供了一种计算机程序产品,所述计算机程序产品包括存储在非易失性计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被电子设备执行时,使所述电子设备执行任一项所述的基于区块分布式区块链的区块同步方法。

以上所描述的装置或设备实施例仅仅是示意性的,其中所述作为分离部件说明的单元模块可以是或者也可以不是物理上分开的,作为模块单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络模块单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;在本发明的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本发明的不同方面的许多其它变化,为了简明,它们没有在细节中提供;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1