首页 / 专利库 / 银行与财务事项 / 分布式账本技术 / 区块链 / 区块头 / 一种待共识区块的处理方法、相关装置及区块链系统

一种待共识区的处理方法、相关装置及区块链系统

阅读:152发布:2020-05-08

专利汇可以提供一种待共识区的处理方法、相关装置及区块链系统专利检索,专利查询,专利分析的服务。并且本 申请 公开了一种待共识区 块 的处理方法:轻量 节点 仅需要对待共识区块的 区块头 信息进行验证,即可根据区块头信息验证结果结束自身对该待共识区块的共识操作。若区块头信息通过了验证,轻量节点将通过向所属的待共识区块附加签名的方式进行共识投票,以标识自身对该待共识区块的认可。相比于现有方式,无需轻量节点对共识区块中的具体内容进行一一验证,从而显著缩短了验证时间,解决了因运算能 力 较差导致无法实际参与进共识过程的技术 缺陷 ,提升了篡改存储于 区块链 中数据的难度,进而提升了数据的安全性。本申请还同时公开了一种待共识区块的处理系统、一种区块链轻量节点设备及计算机可读存储介质,具有上述有益效果。,下面是一种待共识区的处理方法、相关装置及区块链系统专利的具体信息内容。

1.一种待共识区的处理方法,其特征在于,应用于轻量节点,所述轻量节点存储有历史区块的区块头,所述方法包括:
接收待共识区块;
提取所述待共识区块的区块头信息,并验证所述区块头信息的有效性;
当所述区块头信息通过有效性验证后,对所述待共识区块进行签名,并广播得到的签名后区块。
2.根据权利要求1所述的处理方法,其特征在于,验证所述区块头信息的有效性,包括:
提取所述区块头信息中包含的出块者签名、父区块hash值;
判断所述出块者签名是否为合法签名,以及判断所述父区块hash值是否与已记录的最新区块的hash值一致;
对应的,
当所述出块者签名为合法签名,且所述父区块hash值与已记录的最新区块的hash值一致时,判定所述区块头信息通过了有效性验证;
当所述出块者签名为非法签名或所述父区块hash值与已记录的最新区块的hash值不一致时,判定所述区块头信息未通过有效性验证。
3.根据权利要求1所述的处理方法,其特征在于,在提取所述待共识区块的区块头信息之前,还包括:
判断自身是否需要对所述待共识区块进行共识,若否,则丢弃所述待共识区块。
4.根据权利要求3所述的处理方法,其特征在于,判断自身是否需要对所述待共识区块进行共识,包括:
根据自身记录的最新区块确定所述待共识区块在作为下一个区块时的高度信息;
根据轻量节点共识选取表确定与所述高度信息对应的目标轻量节点集;其中,所述轻量节点共识选取表中预先记录有每个高度信息与每个轻量节点集之间的对应关系,每个所述轻量节点集中记录有第一预设数量的轻量节点的身份信息;
判断所述目标轻量节点集中是否包含有自身的身份信息;
若所述目标轻量节点集中包含有自身的身份信息,则确定自身需要对所述待共识区块进行共识;
若所述目标轻量节点集中未包含有自身的身份信息,则确定自身不需要对所述待共识区块进行共识。
5.根据权利要求3所述的处理方法,其特征在于,还包括:
接收其它轻量节点广播的签名后区块;
验证所述签名后区块的有效性;
当所述签名后区块通过有效性验证后,将所述签名后区块的区块头信息作为所述区块链上的最新区块的区块头信息进行落盘保存。
6.根据权利要求3至5任一项所述的处理方法,其特征在于,还包括:
当因预设原因导致所述区块链出现分叉的两条子链时,全量节点通过第二预设数量的待共识区块确定目标子链,并丢弃非所述目标子链的另一条子链;其中,所述预设原因指上一个待共识区块的共识过程未完成,所述共识过程未完成包括共识超时或未收集到超过预设比例的目标轻量节点的签名。
7.一种区块链轻量节点设备,其特征在于,所述轻量节点存储有历史区块的区块头,所述区块链轻量节点设备包括存储器和处理器,所述存储器上存储有可在所述处理器上运行的待共识区块处理程序,所述待共识区块处理程序被所述处理器执行时实现如下方法:
接收待共识区块;
提取所述待共识区块的区块头信息,并验证所述区块头信息的有效性;
当所述区块头信息通过有效性验证后,对所述待共识区块进行签名,并广播得到的签名后区块。
8.根据权利要求7所述的区块链轻量节点设备,其特征在于,所述待共识区块处理程序被所述处理器执行时还实现:
判断自身是否需要对所述待共识区块进行共识,若否,则丢弃所述待共识区块。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有待共识区块处理程序,所述待共识区块处理程序可被一个或者多个处理器执行,以实现如权利要求1至6任一项所述的待共识区块的处理方法。
10.一种区块链系统,所述区块链系统包括多个全量节点和多个轻量节点,所述轻量节点存储有历史区块的区块头,所述全量节点存储有历史区块的全部内容,其特征在于,包括:
所述轻量节点,用于接收待共识区块;提取所述待共识区块的区块头信息,并验证所述区块头信息的有效性;当所述区块头信息通过有效性验证后,对所述待共识区块进行签名,并广播得到的签名后区块;
所述全量节点,用于接收待共识区块;提取所述待共识区块的区块头信息,并验证所述区块头信息的有效性;提取所述待共识区块的区块内容,并验证所述区块内容的有效性;当所述区块头信息和所述区块内容均通过有效性验证后,对所述待共识区块进行签名,并广播得到的签名后区块。

说明书全文

一种待共识区的处理方法、相关装置及区块链系统

技术领域

[0001] 本申请涉及区块链技术领域,特别涉及一种应用于轻量节点的待共识区块的处理方法、区块链轻量节点设备、计算机可读存储介质以及区块链系统。

背景技术

[0002] 由于中心化存储方式存在的诸多问题,用于解决这些问题的去中心化存储方式逐步进入大众的视野。其中,区块链技术作为时下最火热的去中心化技术也被广泛研究和应用。
[0003] 中心化存储方式最主要的问题是:数据集中存储在数据中心,只有其管理方可接触到并具有相应的数据处理权限,普通的用户无法访问到存储在数据中心中自己的数据,使得数据是否遭到恶意篡改不公开透明。同时,一旦因各种情况导致该数据中心损坏,将可能造成严重的数据丢失。
[0004] 为实现去中心化,区块链技术根据多个区块链节点构成了区块链网络,区块链网络中的每个区块链节点地位相同,均拥有数据上传和存储能,并通过同步的方式使得所有节点中的数据保持一致,以此实现数据的去中心化存储。为保持一致性,每个待共识区块均需要通过共识过程使其被超过全网一半以上区块链节点认同。
[0005] 区块链技术默认构成区块链网络的每个区块链节点都需要参与共识,但由于实际情况下,不同区块链节点之间运算能力的差异,一些运算能力较差的节点(后文统称为轻量节点)实际上是参与不到共识过程中的,共识的结果实际上被一些具有较强运算能力(后文统称为全量节点)把控,这不仅有违区块链技术的去中心化本意,也降低了篡改存储于区块链中数据的难度,降低了数据的安全性。
[0006] 因此,如何克服上述技术缺陷是本领域技术人员亟待解决的问题。发明内容
[0007] 本申请的目的是提供一种应用于轻量节点的待共识区块的处理方法、区块链轻量节点设备、计算机可读存储介质以及区块链系统,旨在让轻量节点能够实际参与进待共识区块的共识过程,提升了篡改存储于区块链中数据的难度,进而提升了数据的安全性。
[0008] 为实现上述目的,本申请提供一种待共识区块的处理方法,应用于轻量节点,所述轻量节点包括:
[0009] 接收待共识区块;
[0010] 提取所述待共识区块的区块头信息,并验证所述区块头信息的有效性;
[0011] 当所述区块头信息通过有效性验证后,对所述待共识区块进行签名,并广播得到的签名后区块。
[0012] 可选的,验证所述区块头信息的有效性,包括:
[0013] 提取所述区块头信息中包含的出块者签名、父区块hash值;
[0014] 判断所述出块者签名是否为合法签名,以及判断所述父区块hash值是否与已记录的最新区块的hash值一致;
[0015] 对应的,
[0016] 当所述出块者签名为合法签名,且所述父区块hash值与已记录的最新区块的hash值一致时,判定所述区块头信息通过了有效性验证;
[0017] 当所述出块者签名为非法签名或所述父区块hash值与已记录的最新区块的hash值不一致时,判定所述区块头信息未通过有效性验证。
[0018] 可选的,在提取所述待共识区块的区块头信息之前,还包括:
[0019] 判断自身是否需要对所述待共识区块进行共识,若否,则丢弃所述待共识区块。
[0020] 可选的,判断自身是否需要对所述待共识区块进行共识,包括:
[0021] 根据自身记录的最新区块确定所述待共识区块在作为下一个区块时的高度信息;
[0022] 根据轻量节点共识选取表确定与所述高度信息对应的目标轻量节点集;其中,所述轻量节点共识选取表中预先记录有每个高度信息与每个轻量节点集之间的对应关系,每个所述轻量节点集中记录有第一预设数量的轻量节点的身份信息;
[0023] 判断所述目标轻量节点集中是否包含有自身的身份信息;
[0024] 若所述目标轻量节点集中包含有自身的身份信息,则确定自身需要对所述待共识区块进行共识;
[0025] 若所述目标轻量节点集中未包含有自身的身份信息,则确定自身不需要对所述待共识区块进行共识。
[0026] 可选的,该待共识区块的处理方法还包括:
[0027] 接收其它轻量节点广播的签名后区块;
[0028] 验证所述签名后区块的有效性;
[0029] 当所述签名后区块通过有效性验证后,将所述签名后区块的区块头信息作为所述区块链上的最新区块的区块头信息进行落盘保存。
[0030] 可选的,该待共识区块的处理方法还包括:
[0031] 当因预设原因导致所述区块链出现分叉的两条子链时,全量节点通过第二预设数量的待共识区块确定目标子链,并丢弃非所述目标子链的另一条子链;其中,所述预设原因指上一个待共识区块的共识过程未完成,所述共识过程未完成包括共识超时或未收集到超过预设比例的目标轻量节点的签名。
[0032] 为实现上述目的,本申请还提供了一种区块链轻量节点设备,所述区块链轻量节点设备中存储有历史区块的区块头,所述区块链轻量节点设备包括存储器和处理器,所述存储器上存储有可在所述处理器上运行的待共识区块处理程序,所述待共识区块处理程序被所述处理器执行时实现如下方法:
[0033] 接收待共识区块;
[0034] 提取所述待共识区块的区块头信息,并验证所述区块头信息的有效性;
[0035] 当所述区块头信息通过有效性验证后,对所述待共识区块进行签名,并广播得到的签名后区块。
[0036] 为实现上述目的,本申请还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有待共识区块处理程序,所述待共识区块处理程序可被一个或者多个处理器执行,以实现上述内容描述的待共识区块的处理方法。
[0037] 为实现上述目的,本申请还提供了一种区块链系统,该区块链系统包括多个轻量节点和多个全量节点,所述轻量节点存储有历史区块的区块头,所述全量节点存储有历史区块的全部内容,其特征在于,包括:
[0038] 所述轻量节点,用于接收待共识区块;提取所述待共识区块的区块头信息,并验证所述区块头信息的有效性;当所述区块头信息通过有效性验证后,对所述待共识区块进行签名,并广播得到的签名后区块;
[0039] 所述全量节点,用于接收待共识区块;提取所述待共识区块的区块头信息,并验证所述区块头信息的有效性;提取所述待共识区块的区块内容,并验证所述区块内容的有效性;当所述区块头信息和所述区块内容均通过有效性验证后,对所述待共识区块进行签名,并广播得到的签名后区块。
[0040] 本申请提供了一种待共识区块的处理方法,应用于轻量节点,所述轻量节点中存储有历史区块的区块头,包括:接收待共识区块;提取所述待共识区块的区块头信息,并验证所述区块头信息的有效性;当所述区块头信息通过有效性验证后,对所述待共识区块进行签名,并广播得到的签名后区块。
[0041] 根据上述方案可以看出,本申请提供了一种轻量节点仅需要对待共识区块的区块头信息进行验证,即可根据区块头信息验证结果结束自身对该待共识区块的共识操作。若区块头信息通过了验证,轻量节点将通过向所属的待共识区块附加签名的方式进行共识投票,以标识自身对该待共识区块的认可。相比于现有处理方式,不再需要轻量节点在对区块头信息验证过后,仍需对待共识区块中的具体内容进行一一验证。从而显著缩短了验证时间,解决了因运算能力较差导致无法实际参与进共识过程的技术缺陷,提升了篡改存储于区块链中数据的难度,进而提升了数据的安全性。
[0042] 本申请同时还提供了一种区块链轻量节点设备、计算机可读存储介质以及区块链系统,具有上述有益效果,在此不再赘述。附图说明
[0043] 为了更清楚地说明本申请实施例现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
[0044] 图1为本申请实施例提供的一种待共识区块的处理方法的流程图
[0045] 图2为本申请实施例提供的一种验证区块头信息的方法的流程图;
[0046] 图3为本申请实施例提供的一种如何判断自身是否需要对该待共识区块进行共识的方法的流程图;
[0047] 图4为本申请实施例提供的一种待共识区块的处理系统的结构框图
[0048] 图5为本申请实施例提供的一种区块链轻量节点设备的结构示意图。

具体实施方式

[0049] 本申请的目的是提供一种应用于轻量节点的待共识区块的处理方法、系统、一种区块链轻量节点设备以及一种计算机可读存储介质,旨在让轻量节点能够实际参与进待共识区块的共识过程,提升了篡改存储于区块链中数据的难度,进而提升了数据的安全性。
[0050] 为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
[0051] 实施例一
[0052] 请参见图1,图1为本申请实施例提供的一种待共识区块的处理方法的流程图,需要说明的是,下述各步骤的执行主体均为轻量节点,步骤如下:
[0053] S101:接收待共识区块;
[0054] 本步骤旨在由当前的轻量节点接收出块节点广播的待共识区块。其中,出块节点是指生成待共识区块的区块链节点,待共识区块是出块节点根据区块链网络一段时间内生成的信息打包处理后得到的,例如在诸如比特币的区块链中,该信息为比特币的交易信息,根据区块链技术具体应用领域的不同,该信息将表现为其它形式,例如合同数据、文件的索引等等,此处并不做具体限定。
[0055] S102:提取待共识区块的区块头信息,并验证区块头信息的有效性;
[0056] 待共识区块可以分为两部分,一部分为区块头信息,另一部分为区块内容信息。其中,区块内容信息是出块节点在一段时间内收集到的发生在区块链网络中的信息,区块头信息则是出块节点在打包这些收集到的信息时生成的,往往作为该待共识区块的摘要存在。该区块头信息中包含有该待共识区块的出块者签名(即出块节点自身的签名)、父区块签名(区块链上该待共识区块的上一个区块的出块者签名)、父区块哈希值等等,根据实际应用场景的不同,还可以在此基础上,在区块头增加或删减部分种类的信息,以满足实际应用场景下所有可能存在的特殊要求,此处并不做具体限定。
[0057] 在S101的基础上,本步骤旨在提取待共识区块的区块头信息,并进一步验证该区块头信息的有效性。具体的,在验证该区块头信息的有效性时,上述不同种类的信息可以在不存在依赖关系的基础上分别进行验证,也可以为节省不必要验证操作,采用依次验证的方式进行验证。当采用依次验证的方式时,有任意一项未通过验证,都将得出该区块头信息未通过有效性验证的结论,因此可有效节省掉后续其它种类的验证操作。
[0058] 为便于理解,本申请还通过图2提供了一种验证区块头信息有效性的流程图,以验证该待共识区块的出块者签名和其父区块的出块者签名为例:
[0059] S201:提取区块头信息中包含的出块者签名、父区块hash值;
[0060] S202:判断出块者签名是否为合法签名,若是,执行S203,否则执行S205;
[0061] 本步骤旨在判断从该区块头信息中提取到的出块者签名是否为合法签名,也就是判断该出块者签名是否为合法的出块节点的签名。
[0062] 具体的,当出块者签名是出块节点用自身的私钥加密得到时,当前的轻量节点将通过使用该出块节点的公钥来尝试解密的方式来判断是否为合法签名。其中,每个区块链节点均预先存储有其它区块链节点的公钥,而作为利用非对称加密算法计算得到的一对公钥和私钥,用私钥加密的信息只能通过相应的公钥解开,因此一旦当前的轻量节点使用公钥成功解开了该出块者签名,就能证明该出块者签名是出块节点使用只有其自己持有的私钥加密得到的,以此即可证明该出块节点的合法性。
[0063] 在此基础上,为进一步防止出块节点的私钥丢失,还可以在使用私钥对只有被自身和轻量节点已知的身份验证信息进行加密,该身份验证信息可以是基于两者已知的随机数或者其它信息,旨在通过盗取到私钥的仿冒者在不了解这部分信息时实现暴露其仿冒者身份的目的。
[0064] S203:判断父区块hash值是否与已记录的最新区块的hash值一致,若是,执行S204,否则执行S205;
[0065] 本步骤建立在S202的判断结果为出块者签名为合法签名的基础上,旨在进一步的验证其父区块hash值是否与自身已记录的最新区块的hash值一致,以根据本步骤的验证结果来进一步确定该区块头信息是否可以通过有效性验证。本步骤之所以要验证父区块hash值是否与已记录的最新区块的hash值一致,目的是确认区块间的联系是否中断。
[0066] 父区块hash值为根据区块链上该待共识区块的上一个区块中的内容计算出的一个特征值,而上一个区块在此之前完成了共识并入链,因此在该待共识区块通过共识并入链之前,父区块应为当前区块链上最末尾或者说最高高度的区块,而父区块的区块头信息将以被保存在各区块链节点中。按照现有区块链技术的要求,每一个待共识区块在由出块节点打包时均要加入能够证明其父区块的身份信息和内容信息,以根据这一信息将各区块有序的排列为链,即证明链中各区块的顺序是正确的,因此,本步骤基于这一要求具体采用了通过hash值来进行是否相同的验证。
[0067] 当然,在此基础上,也可以灵活换用其它可行的方式来实现同样的目的。
[0068] S204:判定区块头信息通过了有效性验证;
[0069] 本步骤建立在S203的判断结果为父区块hash值与自身已记录的最新区块的hash值一致的基础上,因此通过依次对上述两个最关键的信息的验证,最终在两项验证均通过时,判定该区块头信息通过了有效性验证。
[0070] S205:判定区块头信息未通过有效性验证。
[0071] 本步骤建立在S202的判断结果为出块者签名为非法签名,或S203的判断结果为父区块hash值与自身已记录的最新区块的hash值不一致的基础上,因此,将由于未通过全部的两项验证,判定该区块头信息未通过有效性验证。
[0072] S103:当区块头信息通过有效性验证后,对待共识区块进行签名,并广播得到的签名后区块。
[0073] 在S102的基础上,本步骤建立在区块头信息通过了有效性验证的基础上,旨在对与该区块头信息对应的待共识区块进行签名投票,以标识自身完成了对该待共识区块的共识,并将得到的签名后区块广播出去进行后续共识步骤。
[0074] 根据上述方案可以看出,在本申请中轻量节点是通过仅对待共识区块的区块头信息进行验证的方式参入进共识过程的,由于区块头信息中包含的信息有效,验证所需时间较短,使得全量节点与轻量节点在运算能力上的差异表现的不明显。而现有技术下,固定的要求每个区块链区块在参与共识时不仅需要对区块头信息进行验证,还要在区块头信息验证通过的基础上,验证该待共识区块中包含的每一条信息。以比特币的交易信息为例,一个待共识区块可能包含有10000条具体的交易信息,在验证这10000条交易信息时,最基础的对附加在每一条交易信息上的交易双方的签名进行验证,在此之上还可能包含一些其它的验证,由此可见现有技术下验证的工作量巨大。而巨大的工作量也将导致轻量节点会与全量节点在耗时和进展上存在巨大的差异。
[0075] 据本申请申请人研究发现,在区块头信息通过验证的情况下,几乎不会出现区块内容信息异常的情况,因此就使得无论何种运算能力的节点都去对内容信息进行验证的操作有些多余,不仅不会对一致性带来明显的收益,反而严重影响了区块链网络具有的去中心化能力,对数据的安全性带来明显的险。而且在本申请中只是要求轻量节点不对内容信息进行验证,全量节点仍需要对内容信息进行验证,因此并不会带来一致性方面的削减,反而极大的提升了去中心化能力,进而提升了篡改存储于区块链中数据的难度和数据的安全性。
[0076] 实施例二
[0077] 实际情况下,用户的任何一个满足要求的区块链轻量节点设备均可以作为一个区块链节点,因此就使得构成区块链网络的区块链节点包含数量众多的轻量节点。如果每次共识都需要全部的轻量节点参与其中,虽然极大的体现了去中心化能力,但仍会使得共识过程需要较长的时间。因此,如何在轻量节点按照上述实施例的方式参与共识时,尽可能的在不影响去中心化能力的基础上缩短共识整体时间,也是十分有益的。
[0078] 本实施例在这一思想的指导下,在实施例一方案的基础上,对每个轻量节点而言,还进一步对自身是否需要对该待共识区块进行共识进行判断,若自身无需对该待共识区块进行共识,则丢弃该待共识区块。
[0079] 本申请通过如图3所示的流程图,提供了一种如何判断自身是否需要对该待共识区块进行共识的方法,各步骤执行主体也均为轻量节点,包括如下步骤:
[0080] S301:根据自身记录的最新区块确定待共识区块在作为下一个区块时的高度信息;
[0081] 本步骤旨在由当前的轻量节点在接收到新的待共识区块后,根据自身记录的最新区块确定待共识区块在作为下一个区块时的高度信息。例如,假定当前区块链上总共有100个区块,那么最新区块在区块链上的高度信息就为100,也就是说如果当前新接收到的待共识区块在通过共识后,将以101的高度信息入链,排列在高度信息为100的区块后面,也就说是本步骤将最终得到该共识区块的高度信息为101。
[0082] S302:根据轻量节点共识选取表确定与高度信息对应的目标轻量节点集;
[0083] 其中,该轻量节点共识选取表中预先记录有每个高度信息与每个轻量节点集之间的对应关系,每个轻量节点集中记录有第一预设数量的轻量节点的身份信息。仍以上述的101为例,该轻量节点共识选取表将记录与101对应的一些轻量节点的身份信息,构成该目标轻量节点集。
[0084] 根据高度信息设置好的轻量节点共识选取表被预先内置在区块链网络中的每一个区块链节点中,以使每个轻量节点可在新接收到的待共识区块时,根据该轻量节点共识选取表判断出自身是否为用于对新接收到的待共识区块进行共识操作的轻量节点。该对应关系可以采用多种方式建立,例如按照固定的组别划分、根据运行一次随机算法的结果记录得到等等方式,具体的,按照组别划分还可以进一步细分为根据轻量节点的名称、公钥、哈希值等等,可根据实际情况的不同灵活选择。
[0085] 在S301的基础上,本步骤旨在根据获取到的高度信息确定自身是否为负责对该待共识区块进行共识操作的轻量节点。换句话说,本实施例并不会每次让全部的轻量节点都参与进对该待共识区块的共识过程,而是选取部分轻量节点,以此来缩短共识所需的时间。需要说明的是,为了保证采用部分轻量节点也不影响共识结果,在选取作为每次新接收到的待共识区块的轻量节点时,应基于非时变量作为选取因子,例如可以预先将所有轻量节点划分为多个组,按照轮询的方式选取一个组的轻量节点作为本次接收到的待共识区块的轻量节点。但是不能将各轻量节点负载情况、网络情况等不稳定因素作为选取规则。
[0086] S303:判断目标轻量节点集中是否包含有自身的身份信息,若是,执行S305,否则执行S304;
[0087] S304:丢弃待共识区块;
[0088] 本步骤建立在S303的判断结果为自身的身份信息未包含在目标轻量节点集中的基础上,由于自身并不是负责对该待共识区块进行共识处理的轻量节点,因此不需要对该待共识区块进行任何操作,丢弃即可。
[0089] S305:提取待共识区块的区块头信息,并验证区块头信息的有效性;
[0090] 本步骤建立在S303的判断结果为自身的身份信息包含在目标轻量节点集中的基础上,说明自身负责对该待共识区块进行共识处理,因此将按照如实施例一进行的验证方式依次执行,相同部分不再赘述。
[0091] S306:当区块头信息通过有效性验证后,对待共识区块进行签名,并广播得到的签名后区块。
[0092] 进一步的,按照本实施例提供的方式执行后,由于签名后区块仍会进行广播,还会使得当前的轻量节点接收到其它轻量节点广播的签名后区块,针对未出现在现有技术的情况,本申请还提供如下方式:
[0093] 接收其它轻量节点广播的签名后区块;
[0094] 验证签名后区块的有效性;
[0095] 当签名后区块通过有效性验证后,将签名后区块的区块头信息作为区块链上的最新区块的区块头信息进行落盘保存。
[0096] 由于轻量节点的存储容量有限,因此此处仅控制轻量节点保存区块头信息,而不保存将会占用较大存储空间的区块内容。当然,具体存储什么样的内容对共识无影响,可以根据实际情况灵活调整。
[0097] 区别于实施例一,本实施例通过选取部分轻量节点参与每个待共识区块的共识过程,得以降低了共识整体所需耗时,提升了区块链的性能。
[0098] 还需要说明的是,由于采用每次选用部分轻量节点参与相应待共识区块的共识过程,还会因为不同轻量节点在各自共识时的耗时不同,导致区块链出现分叉现象。此处所说的分叉现象是由于原应作为不同高度的待共识区块的不同目标轻量节点集并未衔接好,使得各自将自己所进行共识的待共识区块放在了区块链的同一高度。本申请通过如下方式解决这一问题:
[0099] 当因预设原因导致区块链出现分叉的两条子链时,全量节点通过第二预设数量的待共识区块确定目标子链,并丢弃非目标子链的另一条子链;其中,预设原因指上一个待共识区块的共识过程未完成,共识过程未完成包括共识超时或未收集到超过预设比例的目标轻量节点的签名。
[0100] 其中,在本申请中,全量节点除与轻量节点对待共识区块进行执行的验证操作,还对内容信息进行验证。除此还负责接收签名后区块,并根据收集到的签名后区块确定被轻量节点投票认可的数量,以确定该待共识区块能够作为一个真正的区块入链。出现分叉现象,往往是因为负责处理上一个待共识区块的全量节点在预设的超时时长内没能完成出块,或者没能收集够超过预设比例(例如占本轮进行共识的轻量节点总数的2/3,因为是部分选取,所以略大于50%)的签名,为避免出现分叉现象,应控制出现这些情况的全量节点出空块,以防止因不出块导致的分叉现象。
[0101] 具体的,该第二预设数量可以根据情况自行设备,例如4,之所以设置为4,可参见如下对连续出现分叉的概率计算公式:
[0102] 每一个高度分叉的概率P为:
[0103]
[0104] 式中:
[0105] n:可参与共识的总节点数;f1:拜占庭节点数, m:参加每个高度投票的轻量节点数,
[0106] 因此,分叉持续X个块的概率为:
[0107] y=Px
[0108] 可以看出,分叉连续多个块的概率随着块的增加成指数降低,当总共有1000个轻量节点,每轮从中选择50个实际进行共识,那么当作恶节点小于230个时,4个区块后,仍存在分叉现象的概率小于0.000005(该概率已经相当低)。进一步的,还可以通过增加每轮实际进行共识的轻量节点的数量,或者选择更多的区块来确认。
[0109] 因为情况复杂,无法一一列举进行阐述,本领域技术人员应能意识到根据本申请提供的基本方法原理结合实际情况可以存在很多的例子,在不付出足够的创造性劳动下,应均在本申请的保护范围内。
[0110] 实施例四
[0111] 下面请参见图4,图4为本申请实施例所提供的一种待共识区块的处理系统的结构框图,该系统可以包括:
[0112] 待共识区块接收单元100,用于接收待共识区块;
[0113] 区块头信息提取及验证单元200,用于提取所述待共识区块的区块头信息,并验证所述区块头信息的有效性;
[0114] 签名投票及广播单元300,用于当所述区块头信息通过有效性验证后,对所述待共识区块进行签名,并广播得到的签名后区块。
[0115] 其中,区块头信息提取及验证单元200可以包括:
[0116] 签名提取子单元,用于提取区块头信息中包含的出块者签名、父区块hash值;
[0117] 出块者签名及父区块hash值判断子单元,用于判断出块者签名是否为合法签名,以及判断父区块hash值是否与已记录的最新区块的hash值一致;
[0118] 验证通过子单元,用于当出块者签名为合法签名,且父区块hash值与已记录的最新区块的hash值一致时,判定区块头信息通过了有效性验证;
[0119] 验证未通过子单元,用于当出块者签名为非法签名或父区块hash值与已记录的最新区块的hash值不一致时,判定区块头信息未通过有效性验证。
[0120] 可选的,该待共识区块的处理系统还可以包括:
[0121] 共识操作进行判断单元,用于判断自身是否需要对待共识区块进行共识;
[0122] 丢弃单元,用于当判断自身不需要对待共识区块进行共识时,丢弃待共识区块。
[0123] 其中,该共识操作进行判断单元可以包括:
[0124] 高度信息确定子单元,用于根据自身记录的最新区块确定待共识区块在作为下一个区块时的高度信息;
[0125] 目标节点集确定子单元,用于根据轻量节点共识选取表确定与高度信息对应的目标轻量节点集;其中,轻量节点共识选取表中预先记录有每个高度信息与每个轻量节点集之间的对应关系,每个轻量节点集中记录有第一预设数量的轻量节点的身份信息;
[0126] 身份信息包含判断子单元,用于判断目标轻量节点集中是否包含有自身的身份信息;
[0127] 第一判定子单元,用于当目标轻量节点集中包含有自身的身份信息时,确定自身需要对所述待共识区块进行共识;
[0128] 第二判定子单元,用于当目标轻量节点集中未包含有自身的身份信息时,确定自身不需要对所述待共识区块进行共识。
[0129] 进一步的,该待共识区块的处理系统还可以包括:
[0130] 签名后区块接收单元,用于接收其它轻量节点广播的签名后区块;
[0131] 签名后区块验证单元,用于验证签名后区块的有效性;
[0132] 落盘保存单元,用于当签名后区块通过有效性验证后,将签名后区块的区块头信息作为区块链上的最新区块的区块头信息进行落盘保存。
[0133] 进一步的,该待共识区块的处理系统还可以包括:
[0134] 全量节点分叉处理单元,用于当因预设原因导致区块链出现分叉的两条子链时,全量节点通过第二预设数量的待共识区块确定目标子链,并丢弃非目标子链的另一条子链;其中,预设原因指上一个待共识区块的共识过程未完成,共识过程未完成包括共识超时或未收集到超过预设比例的目标轻量节点的签名。
[0135] 本实施例作为与上述方法实施例对应的装置实施例存在,具有上述方法实施例的全部有益效果,在此不再赘述。
[0136] 进一步的,本申请还提供了一种区块链系统,包括多个全量节点和多个轻量节点,每个轻量节点均存储有历史区块的区块头,每个全量节点均存储有历史区块的全部内容,[0137] 每个轻量节点,用于接收待共识区块;提取待共识区块的区块头信息,并验证区块头信息的有效性;当区块头信息通过有效性验证后,对待共识区块进行签名,并广播得到的签名后区块;
[0138] 每个全量节点,用于接收待共识区块;提取待共识区块的区块头信息,并验证区块头信息的有效性;提取待共识区块的区块内容,并验证区块内容的有效性;当区块头信息和区块内容均通过有效性验证后,对待共识区块进行签名,并广播得到的签名后区块。
[0139] 可以看出,在一个同时由全量节点和轻量节点构成的区块链系统中,将本申请所提供的方案应用在轻量节点,让每个轻量节点基于区块头中包含的少量信息进行验证的方式与全量节点一并参与进共识过程。而全量节点由于运算能力的领先,其仍保持对区块中所有内容(数据量较少的头信息和数据量较多的内容信息)均进行验证的方式。
[0140] 在上文中已经通过一些实施例对如何控制轻量节点实现实际参与进共识过程进行了详细的描述,本申请还提供一种与该方法对应的实体硬件装置,此部分内容原理与方案部分相对应,实现原理的部分此处不再赘述,以下将对该实体硬件装置的硬件组成进行描述,请参见图5,图5为本申请实施例提供的一种区块链轻量节点设备的结构示意图:
[0141] 该区块链轻量节点设备400包括存储器410、处理器420以及总线430,存储器410上存储有可在处理器420上运行的待共识区块处理程序,该待共识区块处理程序通过总线430被传输至处理器420,并在被处理器420执行时可实现如上述实施例所描述的待共识区块处理方法中的各步骤。
[0142] 其中,存储器410至少包括一种类型的可读存储介质,可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、磁性存储器、磁盘、光盘等。存储器410在一些实施例中可以是区块链轻量节点设备400的内部存储单元,例如该区块链轻量节点设备400的硬盘。存储器410在另一些实施例中也可以是该区块链轻量节点设备400的外部存储设备,例如该区块链轻量节点设备400上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,存储器410还可以同时由内部存储单元和外部存储设备同时组成。进一步的,存储器410不仅可以用于存储安装于该区块链轻量节点设备400中的各种应用软件和各类数据,还可以用于暂时地存储已经输出或者将要输出的数据。
[0143] 处理器420在一些实施例中可以是中央处理器(Central Processing Unit,CPU)、控制器微控制器微处理器或其他数据处理芯片,用于运行存储器410中存储的程序代码或处理数据,例如待共识区块处理程序等。
[0144] 总线430可以是外设部件互连标准(peripheral component interconnect,简称PCI)总线或扩展工业标准结构(extended industry standard architecture,简称EISA)总线等。该总线可以分为地址总线数据总线、控制总线等。为便于表示,图5中仅用一条双向中空指示线表示,但并不表示仅有一根总线或一种类型的总线。
[0145] 在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0146] 作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0147] 另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0148] 集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例中所给出的方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0149] 需要说明的是,上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。并且本文中的术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。
[0150] 以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
高效检索全球专利

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

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

申请试用

分析报告

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

申请试用

QQ群二维码
意见反馈