区块链更新方法、装置、存储介质及电子设备与流程

文档序号:22431771发布日期:2020-10-02 10:15阅读:123来源:国知局
区块链更新方法、装置、存储介质及电子设备与流程

本申请涉及计算机技术领域,尤其涉及一种区块链更新方法、装置、存储介质及电子设备。



背景技术:

自上个世纪末人类进入信息时代以来,互联网渐渐成为人们生活不可或缺的一部分,但与此同时,互联网用户之间的信用问题确阻碍了人们将更多社会活动接入网络。

目前,由于区块链技术是一种基于完全去中心信任机构的系统架构,没有第三方中间机构参与实现共识达成,故其使得在非信任环境下的去中心安全交易成为了可能。在区块链网络中,当网络节点抢到某一交易信息的记账权时,该网络节点可以将该交易信息记录到区块中,并将该区块广播到该区块链网络中,如果两个不同的网络节点都抢到了该交易信息的记账权,则该两个网络节点可以将同一个交易信息记录到不同的区块中(比如区块a和区块b),并将该不同的区块广播到该区块链网络中各自发展,造成链分叉现象,由于每条区块链分支的起始节点并不同,也即两条不同的分叉链所携带的信息并不完全相同,从而难以保证区块链记录的唯一性,交易安全性低,因此,如何快速结束区块链的分叉现象是一个急需解决的问题。



技术实现要素:

本申请实施例提供一种区块链更新方法、装置、存储介质及电子设备,能加快结束区块链网络的分叉状态,提高网络交易安全性。

本申请实施例提供了一种区块链更新方法,包括:

检测同一网络节点在对第一区块的挖矿过程中,是否还接收到至少一个第二区块,所述第二区块与所述第一区块处于同一高度;

若是,则获取所述第一区块和第二区块的哈希值;

根据所述哈希值从所述第一区块和第二区块中确定目标区块;

根据所述目标区块对所述网络节点所在的区块链进行更新。

本申请实施例还提供了一种区块链更新装置,包括:

检测模块,用于检测同一网络节点在对第一区块的挖矿过程中,是否还接收到至少一个第二区块,所述第二区块与所述第一区块处于同一高度;

获取模块,用于若是,则获取所述第一区块和第二区块的哈希值;

确定模块,用于根据所述哈希值从所述第一区块和第二区块中确定目标区块;

更新模块,用于根据所述目标区块对所述网络节点所在的区块链进行更新。

本申请实施例还提供了一种存储介质,所述存储介质中存储有多条指令,所述指令适于由处理器加载以执行上述任一项区块链更新方法。

本申请实施例还提供了一种电子设备,包括处理器和存储器,所述处理器与所述存储器电性连接,所述存储器用于存储指令和数据,所述处理器用于执行上述任一项所述的区块链更新方法中的步骤。

本申请提供的区块链更新方法、装置、存储介质及电子设备,通过检测同一网络节点在对第一区块的挖矿过程中,是否还接收到至少一个第二区块,该第二区块与该第一区块处于同一高度,若是,则获取该第一区块和第二区块的哈希值,接着根据该哈希值从该第一区块和第二区块中确定目标区块,并根据该目标区块对该网络节点所在的区块链进行更新,从而能抑制区块链分叉向更长方向的发展,加快结束区块链的分叉现象,进而减少每笔交易所需的确认次数,提高交易速度和安全性。

附图说明

下面结合附图,通过对本申请的具体实施方式详细描述,将使本申请的技术方案及其它有益效果显而易见。

图1为本申请实施例提供的区块链更新方法的流程示意图。

图2为本申请实施例提供的区块链网络的示意图。

图3为本申请实施例提供的区块链更新方法的另一流程示意图。

图4为本申请实施例提供的区块链更新装置的结构示意图。

图5为本申请实施例提供的区块链更新装置的另一结构示意图。

图6为本申请实施例提供的电子设备的结构示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

本申请实施例提供一种区块链更新方法、装置、存储介质及电子设备。

一种区块链更新方法,包括:检测同一网络节点在对第一区块的挖矿过程中,是否还接收到至少一个第二区块,该第二区块与该第一区块处于同一高度;若是,则获取该第一区块和第二区块的哈希值;根据该哈希值从该第一区块和第二区块中确定目标区块;根据该目标区块对该网络节点所在的区块链进行更新。

如图1和图2所示,图1是本申请实施例提供的区块链更新方法的流程示意图,具体流程可以如下:

s101.检测同一网络节点在对第一区块的挖矿过程中,是否还接收到至少一个第二区块,该第二区块与该第一区块处于同一高度,若是,则执行下述步骤s102,若否,则可以继续检测。

本实施例中,区块链网络由无数个网络节点组成,每个网络节点相当于一个客户端,节点直接与节点连接,不存在中心服务器,具体网络结构可参见图2。区块就像数据库的记录,网络节点每次写入数据,就是创建一个区块,区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构,每个区块均包含区块头和区块体这两个部分,其中区块头用于记录当前区块的元信息,比如版本号、生成时间、上一个区块的哈希值(hash)、区块体的哈希值、难度系数、以及区块编号等,区块体用于记录实际数据。所谓hash值就是计算机可以对任意内容,计算出一个长度相同的特征值。区块链的hash值长度是256位,这就是说,不管原始内容是什么,最后都会计算出一个256位的二进制数字,而且可以保证,只要原始内容不同,对应的hash值一定是不同的。

该挖矿过程是指新区块的构建过程,也即以某个区块为母区块进行区块构建,并对构建区块进行哈希值计算的过程,一旦某个区块计算出的哈希值符合条件,则认为生成了新区块,挖矿过程结束。区块高度是指对应区块在区块链中的位置,通常指该区块距离创世区块的区块数,处于同一高度是指两个区块在区块链中处于同一位置。该第一区块和第二区块均为其他网络节点产生的新区块,由于区块链分叉现象的存在,当存在多条分支时,若每个分支上均产生一个新区块,则其他网络节点可能会接收到多个新区块,通常,对于最先接收到的新区块,网络节点会直接放入主链尾部进行新区块的创建(也即挖矿操作),一旦在挖矿过程中,该网络节点还接收到其他新区块,则需要进一步判断需不需要对当前挖矿区块进行替换。

进一步地,上述步骤s101具体可以包括:

检测同一网络节点在对第一区块的挖矿过程中,是否还接收到至少一个待写入区块;

若是,则获取该待写入区块与该第一区块的区块高度;

当该待写入区块与该第一区块的区块高度相同时,将该待写入区块作为第二区块。

本实施例中,需要先确定后接收到的新区块与先接收到的新区块是否处于同一高度,具体可以从区块头包含的区块编号来确定区块高度,当处于同一高度时,说明工作量积累相同(也即存在第二区块),此时,需要进一步结合哈希值来确定需不需要替换,当处于不同高度时,由于区块高度越高,说明工作量累积越多,故根据最长链原则,应该将工作量高的新区块放入主链中,工作量低的新区块放入备选链中,也即,当第一区块的区块高度高于第二区块时,由于先接收到的第一区块本身就放置在主链尾部,故可以继续对该区块进行挖矿,后接收到的第二区块可以确定为过时区块进行丢弃,而当第一区块的区块高度小于第二区块时,可以利用第二区块替换该第一区块之后继续进行挖矿操作,而被替换掉的第一区块可以放入备选链中,一旦备选链优先于主链产生了新区块,则主链和备选链将会发生角色互换,以保证任意时刻主链均为区块链的最佳延长方向。

s102、获取该第一区块和第二区块的哈希值。

本实施例中,该哈希值可以从第一区块和第二区块的区块头中获取,每个区块的哈希值唯一,不同区块之间具有不同哈希值。

需要说明的是,节点对于接收到的每个新区块,在进行挖矿操作之前,都会对该新区块进行初步检查,包括孤块检查、时间戳检查、难度值校验等等,只有在初步检查符合要求时,才会进行下一步操作,也即,请参见图3,在执行上述步骤s102之前,该区块链更新方法还可以包括以下步骤:

s105.获取该第二区块的区块信息,该区块信息包括时间戳、难度值和父区块;

s106.根据该区块信息判断该第二区块是否满足预设条件;若满足预设条件,则执行该步骤s102;若不满足预设条件,则放弃该第二区块。

本实施例中,该预设条件可以包括:该时间戳在当前检查时间之后、该难度值在预设范围内、且该父区块为区块链中已知区块,只有满足这些条件,才可以认为该第二区块符合初步检查要求,具有写入区块链的价值,否则可以直接舍弃该第二区块。

s103、根据该哈希值从该第一区块和第二区块中确定目标区块。

例如,上述步骤s103具体可以包括:

将该第一区块和第二区块对应的哈希值进行比较;

选出哈希值最小的该第一区块或第二区块作为目标区块。

本实施例中,哈希值越小,可以认为该区块价值越大,越应该作为主链的延长方向。譬如,假设第一区块的哈希值为a1,第二区块的哈希值为a2,若a1大于a2,则确定的目标区块为第二区块,若a1小于a2,则确定的目标区块为第一区块。

s104、根据该目标区块对该网络节点所在的区块链进行更新。

例如,该区块链包括主链和备选链,此时,上述步骤s104具体可以包括:

将该目标区块加入主链中,将剩余的该第一区块或第二区块加入备选链中,之后向剩余网络节点广播该目标区块。

本实施例中,当目标区块为后接收到的第二区块时,需要将已加入主链尾部的第一区块替换掉,以该第二区块为母块重新在主链中进行新区块构建操作,而被替换的第一区块可以放在备选链中,从而能抑制备选链向更长方向发展,加快其分叉状态结束速度。

比如,对于节点c,若其先接收到节点a广播的新区块a,则其会在主链尾部写入区块a,并尝试以a为母块进行哈希值运算,以构建新区块,一旦在运算过程中还接收到节点b广播的同一区块高度的新区块b,则节点c会比较判断a和b的哈希值大小,若a的哈希值大于b,则主链可以继续哈希值计算,而b会加入备选链尾部,若a的哈希值小于b,则会将a删掉,在主链尾部加入b,以b为母块构建新区块,而a会加入备选链尾部。

需要说明的是,区块链中的主链一般只有一条,而该第二区块数量通常和备选链数量一致,均和区块链分叉次数有关,对于多条备选链,可以设定一个优先级,优先级越高,出块速度越快,此时,对于剩余的多个区块,哈希值越小,其对应加入的备选链优先级可以越低,以更快结束备选链的分叉状态。

由上述可知,本实施例提供的区块链更新方法,通过检测同一网络节点在对第一区块的挖矿过程中,是否还接收到至少一个第二区块,该第二区块与该第一区块处于同一高度,若是,则获取该第一区块和第二区块的哈希值,接着根据该哈希值从该第一区块和第二区块中确定目标区块,并根据该目标区块对该网络节点所在的区块链进行更新,从而能抑制区块链分叉向更长方向的发展,加快结束区块链的分叉现象,进而减少每笔交易所需的确认次数,提高交易速度和安全性。

根据上述实施例所描述的方法,本实施例将从区块链更新装置的角度进一步进行描述,该区块链更新装置具体可以作为独立的实体来实现,也可以集成在电子设备,比如终端或服务器中来实现。

请参阅图4,图4具体描述了本申请实施例提供的区块链更新装置,该区块链更新装置可以包括:检测模块10、获取模块20、确定模块30和更新模块40,其中:

(1)检测模块10

检测模块10,用于检测同一网络节点在对第一区块的挖矿过程中,是否还接收到至少一个第二区块,该第二区块与该第一区块处于同一高度。

本实施例中,区块链网络由无数个网络节点组成,每个网络节点相当于一个客户端,节点直接与节点连接,不存在中心服务器,具体网络结构可参见图2。区块就像数据库的记录,网络节点每次写入数据,就是创建一个区块,区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构,每个区块均包含区块头和区块体这两个部分,其中区块头用于记录当前区块的元信息,比如版本号、生成时间、上一个区块的哈希值(hash)、区块体的哈希值、难度系数、以及区块编号等,区块体用于记录实际数据。所谓hash值就是计算机可以对任意内容,计算出一个长度相同的特征值。区块链的hash值长度是256位,这就是说,不管原始内容是什么,最后都会计算出一个256位的二进制数字,而且可以保证,只要原始内容不同,对应的hash值一定是不同的。

该挖矿过程是指新区块的构建过程,也即以某个区块为母区块进行区块构建,并对构建区块进行哈希值计算的过程,一旦某个区块计算出的哈希值符合条件,则认为生成了新区块,挖矿过程结束。区块高度是指对应区块在区块链中的位置,通常指该区块距离创世区块的区块数,处于同一高度是指两个区块在区块链中处于同一位置。该第一区块和第二区块均为其他网络节点产生的新区块,由于区块链分叉现象的存在,当存在多条分支时,若每个分支上均产生一个新区块,则其他网络节点可能会接收到多个新区块,通常,对于最先接收到的新区块,网络节点会直接放入主链尾部进行新区块的创建(也即挖矿操作),一旦在挖矿过程中,该网络节点还接收到其他新区块,则需要进一步判断需不需要对当前挖矿区块进行替换。

进一步地,该检测模块10具体用于:

检测同一网络节点在对第一区块的挖矿过程中,是否还接收到至少一个待写入区块;

若是,则获取该待写入区块与该第一区块的区块高度;

当该待写入区块与该第一区块的区块高度相同时,将该待写入区块作为第二区块。

本实施例中,需要先确定后接收到的新区块与先接收到的新区块是否处于同一高度,具体可以从区块头包含的区块编号来确定区块高度,当处于同一高度时,说明工作量积累相同(也即存在第二区块),此时,需要进一步结合哈希值来确定需不需要替换,当处于不同高度时,由于区块高度越高,说明工作量累积越多,故根据最长链原则,应该将工作量高的新区块放入主链中,工作量低的新区块放入备选链中,也即,当第一区块的区块高度高于第二区块时,由于先接收到的第一区块本身就放置在主链尾部,故可以继续对该区块进行挖矿,后接收到的第二区块可以确定为过时区块进行丢弃,而当第一区块的区块高度小于第二区块时,可以利用第二区块替换该第一区块之后继续进行挖矿操作,而被替换掉的第一区块可以放入备选链中,一旦备选链优先于主链产生了新区块,则主链和备选链将会发生角色互换,以保证任意时刻主链均为区块链的最佳延长方向。

(2)获取模块20

获取模块20,用于若是,则获取该第一区块和第二区块的哈希值。

本实施例中,该哈希值可以从第一区块和第二区块的区块头中获取,每个区块的哈希值唯一,不同区块之间具有不同哈希值。

需要说明的是,节点对于接收到的每个新区块,在进行挖矿操作之前,都会对该新区块进行初步检查,包括孤块检查、时间戳检查、难度值校验等等,只有在初步检查符合要求时,才会进行下一步操作,也即,请参见图5,该区块链更新装置还包括判断模块50,用于:

在该获取模块20获取该第一区块和第二区块的哈希值之前,获取该第二区块的区块信息,该区块信息包括时间戳、难度值和父区块;

根据该区块信息判断该第二区块是否满足预设条件;

若满足预设条件,则触发该获取模块20执行获取该第一区块和第二区块的哈希值的操作;

若不满足预设条件,则放弃该第二区块。

本实施例中,该预设条件可以包括:该时间戳在当前检查时间之后、该难度值在预设范围内、且该父区块为区块链中已知区块,只有满足这些条件,才可以认为该第二区块符合初步检查要求,具有写入区块链的价值,否则可以直接舍弃该第二区块。

(3)确定模块30

确定模块30,用于根据该哈希值从该第一区块和第二区块中确定目标区块。

进一步地,该确定模块30具体用于:

将该第一区块和第二区块对应的哈希值进行比较;

选出哈希值最小的该第一区块或第二区块作为目标区块。

本实施例中,哈希值越小,可以认为该区块价值越大,越应该作为主链的延长方向。譬如,假设第一区块的哈希值为a1,第二区块的哈希值为a2,若a1大于a2,则确定的目标区块为第二区块,若a1小于a2,则确定的目标区块为第一区块。

(4)更新模块40

更新模块40,用于根据该目标区块对该网络节点所在的区块链进行更新。

例如,该区块链包括主链和备选链,该更新模块40具体用于:

将该目标区块加入主链中,将剩余的该该第一区块或第二区块加入备选链中,之后向剩余网络节点广播该目标区块。

本实施例中,当目标区块为后接收到的第二区块时,需要将已加入主链尾部的第一区块替换掉,以该第二区块为母块重新在主链中进行新区块构建操作,而被替换的第一区块可以放在备选链中,从而能抑制备选链向更长方向发展,加快其分叉状态结束速度。

比如,对于节点c,若其先接收到节点a广播的新区块a,则其会在主链尾部写入区块a,并尝试以a为母块进行哈希值运算,以构建新区块,一旦在运算过程中还接收到节点b广播的新区块b,则节点c会比较判断a和b的哈希值大小,若a的哈希值大于b,则主链可以继续哈希值计算,而b会加入备选链尾部,若a的哈希值小于b,则会将a删掉,在主链尾部加入b,以b为母块构建新区块,而a会加入备选链尾部。

需要说明的是,区块链中的主链一般只有一条,而该第二区块数量通常和备选链数量一致,均和区块链分叉次数有关,对于多条备选链,可以设定一个优先级,优先级越高,出块速度越快,此时,对于剩余的多个区块,可以将哈希值越小,其对应加入的备选链优先级可以越低,以更快结束备选链的分叉状态。

具体实施时,以上各个单元可以作为独立的实体来实现,也可以进行任意组合,作为同一或若干个实体来实现,以上各个单元的具体实施可参见前面的方法实施例,在此不再赘述。

由上述可知,本实施例提供的区块链更新装置,通过检测模块10检测同一网络节点在接收到第一区块后,预设时间内是否还接收到至少一个第二区块,该第二区块与该第一区块处于同一高度,若是,则获取模块20获取该第一区块和第二区块的哈希值,接着确定模块30根据该哈希值从该第一区块和第二区块中确定目标区块,更新模块40根据该目标区块对该网络节点所在的区块链进行更新,从而能抑制区块链分叉向更长方向的发展,加快结束区块链的分叉现象,进而减少每笔交易所需的确认次数,提高交易速度和安全性。

相应的,本发明实施例还提供一种电子设备,该电子设备可以是服务器或终端,如图6所示,其示出了本发明实施例所涉及的电子设备的结构示意图,具体来讲:

该电子设备可以包括一个或者一个以上处理核心的处理器401、一个或一个以上计算机可读存储介质的存储器402、电源403、输入单元404、以及显示单元405等部件。本领域技术人员可以理解,图6中示出的电子设备结构并不构成对电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:

处理器401是该电子设备的控制中心,利用各种接口和线路连接整个电子设备的各个部分,通过运行或执行存储在存储器402内的软件程序和/或模块,以及调用存储在存储器402内的数据,执行电子设备的各种功能和处理数据,从而对电子设备进行整体监控。可选的,处理器401可包括一个或多个处理核心;优选的,处理器401可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器401中。

存储器402可用于存储软件程序以及模块,处理器401通过运行存储在存储器402的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器402可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据电子设备的使用所创建的数据等。此外,存储器402可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器402还可以包括存储器控制器,以提供处理器401对存储器402的访问。

电子设备还包括给各个部件供电的电源403(比如电池),优选的,电源403可以通过电源管理系统与处理器401逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源403还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。

该电子设备还可包括输入单元404,该输入单元404可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。具体地,在一个具体的实施例中,输入单元404可包括触敏表面以及其他输入设备。触敏表面,也称为触摸显示屏或者触控板,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触敏表面上或在触敏表面附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触敏表面可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器401,并能接收处理器401发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触敏表面。除了触敏表面,输入单元404还可以包括其他输入设备。具体地,其他输入设备可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。

该电子设备还可包括显示单元405,该显示单元405可用于显示由用户输入的信息或提供给用户的信息以及电子设备的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。显示单元405可包括显示面板,可选的,可以采用液晶显示器(lcd,liquidcrystaldisplay)、有机发光二极管(oled,organiclight-emittingdiode)等形式来配置显示面板。进一步的,触敏表面可覆盖显示面板,当触敏表面检测到在其上或附近的触摸操作后,传送给处理器401以确定触摸事件的类型,随后处理器401根据触摸事件的类型在显示面板上提供相应的视觉输出。虽然在图6中,触敏表面与显示面板是作为两个独立的部件来实现输入和输入功能,但是在某些实施例中,可以将触敏表面与显示面板集成而实现输入和输出功能。

尽管未示出,电子设备还可以包括摄像头、蓝牙模块等,在此不再赘述。具体在本实施例中,电子设备中的处理器401会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器402中,并由处理器401来运行存储在存储器402中的应用程序,从而实现各种功能,如下:

检测同一网络节点在接收到第一区块后,预设时间内是否还接收到至少一个第二区块,该第二区块与该第一区块处于同一高度;

若是,则获取该第一区块和第二区块的哈希值;

根据该哈希值从该第一区块和第二区块中确定目标区块;

根据该目标区块对该网络节点所在的区块链进行更新。

该电子设备可以实现本发明实施例所提供的任一种区块链更新装置所能实现的有效效果,详见前面的实施例,在此不再赘述。

本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(rom,readonlymemory)、随机存取记忆体(ram,randomaccessmemory)、磁盘或光盘等。

以上对本发明实施例所提供的一种区块链更新方法、装置、存储介质和电子设备进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

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