一种区块链系统的节点共识方法及装置与流程

文档序号:31471874发布日期:2022-09-09 23:27阅读:81来源:国知局
一种区块链系统的节点共识方法及装置与流程

1.本发明涉及区块链技术领域,尤其涉及一种区块链系统的节点共识方法及装置。


背景技术:

2.区块链是由多个相连的区块组成。每一个区块中保存了一定的信息,每一个区块按照各自产生的时间顺序连接成链条。区块链被保存在区块链系统中的所有服务器中,只要整个系统中有一台服务器可以工作,整条区块链就是安全的。这些服务器在区块链系统中被称为节点,它们为整个区块链系统提供存储空间和算力支持。当区块链增加一个新区块时,需要通过共识机制确定记账节点,记账节点为创建新区块的服务器,共识机制是所有节点之间怎么达成共识,去认定一个记录的有效性,这既是认定的手段,也是防止篡改的手段。区块链的共识机制具备“少数服从多数”以及“人人平等”的特点,其中“少数服从多数”并不完全指节点个数,也可以是计算能力、股权数或者其他的计算机可以比较的特征量。“人人平等”是当节点满足条件时,所有节点都有权优先提出共识结果,直接被其他节点认同后并最后有可能成为最终共识结果。
3.目前的共识机制主要有工作量证明机制、权益证明机制、股份授权证明机制、pool验证池和实用拜占庭。其中,可靠性最高的共识机制是工作量证明机制,工作量机制的共识方法是区块链系统中的所有节点通过计算随机哈希散列的数值解争夺记账权,哪个节点能够最快解出正确的数值解就确定哪个节点为记账节点,可以创建新区块。
4.但是,由于工作量证明机制在确定记账节点的过程中,区块链系统中的所有节点需要进行大量的计算去争夺记账权,因此会造成大量的计算机算力的资源浪费,并且会引起计算机产生挖矿行为,更进一步导致资源的浪费,同时也会造成达成节点共识所需要的周期较长。


技术实现要素:

5.鉴于上述问题,本发明提供一种区块链系统的节点共识方法及装置,主要目的是为了实现不需要通过大量算力实现节点共识。
6.为解决上述技术问题,本发明提出以下方案:第一方面,本发明提供一种区块链系统的节点共识方法,所述方法包括:根据目标节点的目标信息和当前区块链最后一个区块的目标信息通过预设散列函数计算得到所述目标节点对应的目标散列值,其中,所述目标节点的数量不少于2个;将所述目标节点和所述目标节点对应的所述目标散列值组成二元组;将多个所述二元组按照散列值升序排列组成第一数组;根据所述当前区块链最后一个区块的目标信息通过所述预设散列函数计算得到对比散列值;基于所述对比散列值遍历所述第一数组中所述二元组的所述目标散列值,判断是否存在大于所述对比散列值的第一目标散列值和不大于所述对比散列值的第二目标散列
值,且所述第一目标散列值和所述第二目标散列值分别位于的二元组相邻;若存在,则确定所述第一目标散列值对应的所述目标节点为共识记账节点。
7.优选地,在根据所述当前区块链最后一个区块的目标信息通过所述预设散列函数计算得到对比散列值之后,所述方法包括:获取预设截取位数;依次将所述第一数组中的所述目标散列值从最低位开始向最高位截取所述预设截取位数,形成所述预设截取位数目标散列值;将根据所述预设截取位数目标散列值与所述预设截取位数目标散列值对应的所述目标节点组成的新二元组组成第二数组;将所述第二数组的所述新二元组按照散列值升序排列,得到第三数组;将所述对比散列值从最低位开始向最高位截取所述预设截取位数,形成所述预设截取位数对比散列值;基于所述预设截取位数对比散列值遍历所述第三数组中所述新二元组的所述预设截取位数目标散列值,判断是否存在大于所述预设截取位数对比散列值的第一预设截取位数目标散列值和不大于所述预设截取位数对比散列值的第二预设截取位数目标散列值,且所述第一预设截取位数目标散列值和所述第二预设截取位数目标散列值分别位于的新二元组相邻;若存在,则确定所述第一预设截取位数目标散列值对应的所述目标节点为共识记账节点。
8.优选地,所述获取预设截取位数,包括:获取所述当前区块链系统的节点总数;基于所述节点总数通过预设计算规则计算得到所述预设截取位数,其中,所述预设计算规则为:j=k/2,2j《 n 《=2k,k为所述预设截取位数,n为所述节点总数。
9.优选地,所述基于所述节点总数通过预设计算规则计算得到所述预设截取位数,包括:判断所述预设截取位数是否小于预设阈值;若是,则确定所述预设截取位数等于所述预设阈值。
10.优选地,所述将根据所述预设截取位数目标散列值与所述预设截取位数目标散列值对应的所述目标节点组成的新二元组组成第二数组,包括:依次获取所述预设截取位数目标散列值与所述预设截取位数目标散列值对应的所述目标节点;基于所述预设截取位数目标散列值判断所述第二数组中是否存在相同的所述预设截取位数目标散列值;若不存在,则将由所述预设截取位数目标散列值与所述预设截取位数目标散列值对应的所述目标节点组成的新二元组依次加入所述第二数组中。
11.优选地,在所述确定所述第一目标散列值对应的所述目标节点为共识记账节点之后,所述方法还包括:所述共识记账节点创建目标区块并同步至所述当前区块链网络;所述当前区块链网络的其他节点接收所述目标区块,且根据预设验证规则判断所
述目标区块对应的所述共识记账节点是否通过验证;若验证通过,则反馈验证通过信息;基于获取所述验证通过信息的数量确定所述当前区块链网络中对所述共识记账节点验证通过的其他节点数量;判断所述当前区块链网络中对所述共识记账节点验证通过的其他节点数量占所述当前区块链网络中所有节点数量的比例是否大于预置阈值;若是,则所述当前区块链网络的其他节点同步添加所述目标区块至对应的本地区块链末端。
12.优选地,所述当前区块链网络的其他节点接收所述目标区块,且根据预设验证规则判断所述目标区块对应的所述共识记账节点是否通过验证,包括:所述当前区块链网络的其他节点接收到所述目标区块,且判断所述目标区块对应的所述共识记账节点与所述其他节点本地计算出的本次应记账节点是否相同;若相同,则验证通过,且反馈验证通过信息。
13.第二方面, 本发明提供一种区块链系统的节点共识装置,所述装置包括:第一计算单元,用于根据目标节点的目标信息和当前区块链最后一个区块的目标信息通过预设散列函数计算得到所述目标节点对应的目标散列值,其中,所述目标节点的数量不少于2个;第一组成单元,用于将所述目标节点和所述目标节点对应的所述目标散列值组成二元组;还用于将多个所述二元组按照散列值升序排列组成第一数组;第二计算单元,用于根据所述当前区块链最后一个区块的目标信息通过所述预设散列函数计算得到对比散列值;判断单元,用于基于所述对比散列值遍历所述第一数组中所述二元组的所述目标散列值,判断是否存在大于所述对比散列值的第一目标散列值和不大于所述对比散列值的第二目标散列值,且所述第一目标散列值和所述第二目标散列值分别位于的二元组相邻;确定单元,用于若所述第一数组中存在大于所述对比散列值的第一目标散列值和不大于所述对比散列值的第二目标散列值,且所述第一目标散列值和所述第二目标散列值分别位于的二元组相邻,则确定所述第一目标散列值对应的所述目标节点为共识记账节点。
14.优选地,所述装置还包括:获取单元,用于获取预设截取位数;第一截取单元,用于依次将所述第一数组中的所述目标散列值从最低位开始向最高位截取所述预设截取位数,形成所述预设截取位数目标散列值;第二组成单元,用于将根据所述预设截取位数目标散列值与所述预设截取位数目标散列值对应的所述目标节点组成的新二元组组成第二数组;还用于将所述第二数组的所述新二元组按照散列值升序排列,得到第三数组;第二截取单元,用于将所述对比散列值从最低位开始向最高位截取所述预设截取位数,形成所述预设截取位数对比散列值;所述判断单元,还用于基于所述预设截取位数对比散列值遍历所述第三数组中所述新二元组的所述预设截取位数目标散列值,判断是否存在大于所述预设截取位数对比散
列值的第一预设截取位数目标散列值和不大于所述预设截取位数对比散列值的第二预设截取位数目标散列值,且所述第一预设截取位数目标散列值和所述第二预设截取位数目标散列值分别位于的新二元组相邻;所述确定单元,还用于若所述第三数组中存在大于所述预设截取位数对比散列值的第一预设截取位数目标散列值和不大于所述预设截取位数对比散列值的第二预设截取位数目标散列值,且所述第一预设截取位数目标散列值和所述第二预设截取位数目标散列值分别位于的新二元组相邻,则确定所述第一预设截取位数目标散列值对应的所述目标节点为共识记账节点。
15.优选地,所述获取单元,包括:获取模块,用于获取所述当前区块链系统的节点总数;计算模块,用于基于所述节点总数通过预设计算规则计算得到所述预设截取位数,其中,所述预设计算规则为:j=k/2,2j《 n 《=2k,k为所述预设截取位数,n为所述节点总数。
16.优选地,所述计算模块,包括:判断子模块,用于判断所述预设截取位数是否小于预设阈值;确定子模块,用于若所述预设截取位数小于预设阈值,则确定所述预设截取位数等于所述预设阈值。
17.优选地,所述第二组成单元,包括:获取模块,用于依次获取所述预设截取位数目标散列值与所述预设截取位数目标散列值对应的所述目标节点;判断模块,用于基于所述预设截取位数目标散列值判断所述第二数组中是否存在相同的所述预设截取位数目标散列值;添加模块,用于若所述第二数组中不存在相同的所述预设截取位数目标散列值,则将由所述预设截取位数目标散列值与所述预设截取位数目标散列值对应的所述目标节点组成的新二元组依次加入所述第二数组中。
18.优选地,所述装置还包括:创建单元,用于所述共识记账节点创建目标区块并同步至所述当前区块链网络;第一验证单元,用于所述当前区块链网络的其他节点接收所述目标区块,且根据预设验证规则判断所述目标区块对应的所述共识记账节点是否通过验证;还用于若验证通过,则反馈验证通过信息;第三计算单元,用于基于获取所述验证通过信息的数量确定所述当前区块链网络中对所述共识记账节点验证通过的其他节点数量;第二验证单元,用于判断所述当前区块链网络中对所述共识记账节点验证通过的其他节点数量占所述当前区块链网络中所有节点数量的比例是否大于预置阈值;还用于若所述当前区块链网络中对所述共识记账节点验证通过的其他节点数量占所述当前区块链网络中所有节点数量的比例大于预置阈值,则所述当前区块链网络的其他节点同步添加所述目标区块至对应的本地区块链末端。
19.优选地,所述第一验证单元,包括:判断模块,用于所述当前区块链网络的其他节点接收到所述目标区块,且判断所
述目标区块对应的所述共识记账节点与所述其他节点本地计算出的本次应记账节点是否相同;验证模块,用于若所述目标区块对应的所述共识记账节点与所述其他节点本地计算出的本次应记账节点相同,则验证通过,且反馈验证通过信息。
20.为了实现上述目的,根据本发明的第三方面,提供了一种存储介质,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行上述第一方面所述区块链系统的节点共识方法。
21.为了实现上述目的,根据本发明的第四方面,提供了一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序时实现如第一方面所述用于区块链系统的节点共识装置的全部或部分步骤。
22.借由上述技术方案,本发明提供的区块链系统的节点共识方法及装置,是由于工作量证明机制在确定记账节点的过程中,区块链系统中的所有节点需要进行大量的计算去争夺记账权,因此会造成大量的计算机算力的资源浪费,并且会引起计算机产生挖矿行为,更进一步导致资源的浪费,同时也会造成达成节点共识所需要的周期较长。为此,本发明通过根据目标节点的目标信息和当前区块链最后一个区块的目标信息通过预设散列函数计算得到所述目标节点对应的目标散列值,其中,所述目标节点的数量不少于2个;再将所述目标节点和所述目标节点对应的所述目标散列值组成二元组;再将多个所述二元组按照散列值升序排列组成第一数组;再根据所述当前区块链最后一个区块的目标信息通过所述预设散列函数计算得到对比散列值;再基于所述对比散列值遍历所述第一数组中所述二元组的所述目标散列值,判断是否存在大于所述对比散列值的第一目标散列值和不大于所述对比散列值的第二目标散列值,且所述第一目标散列值和所述第二目标散列值分别位于的二元组相邻;若存在,则确定所述第一目标散列值对应的所述目标节点为共识记账节点。本发明可以实现以区块链系统中的数据存储结构区块链为基础,利用安全散列函数的速度快、微小改变结果不可区分性,创新性地仅在算法层面就实现了节点间的共识。由于不需要通过大量的算力去证明节点的工作量,节约了能源,缩短了节点共识周期。
23.上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
24.通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:图1示出了本发明实施例提供的一种区块链系统的节点共识方法流程图;图2示出了本发明实施例提供的另一种区块链系统的节点共识方法流程图;图3示出了本发明实施例提供的一种区块链系统的节点共识装置的组成框图;图4示出了本发明实施例提供的另一种区块链系统的节点共识装置的组成框图。
具体实施方式
25.下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
26.区块链由多个相连的区块组成,多个相连的区块构成了区块链。第一个最早被构建的区块称之为为创世区块。每一个区块中保存了一定的信息,它们按照各自产生的时间顺序连接成链条。这个链条被保存在所有的服务器中,只要整个系统中有一台服务器可以工作,整条区块链就是安全的。这些服务器在区块链系统中被称为节点,它们为整个区块链系统提供存储空间和算力支持。
27.共识机制就是所有节点之间怎么达成共识,去认定一个记录的有效性,这既是认定的手段,也是防止篡改的手段。区块链的共识机制具备“少数服从多数”以及“人人平等”的特点,其中“少数服从多数”并不完全指节点个数,也可以是计算能力、股权数或者其他的计算机可以比较的特征量。“人人平等”是当节点满足条件时,所有节点都有权优先提出共识结果,直接被其他节点认同后并最后有可能成为最终共识结果。
28.当前的共识机制主要可分位5类:工作量证明机制(pow)、权益证明机制(pos)、股份授权证明机制(dpos)、pool验证池和实用拜占庭(pbft)。工作量证明机制(pow)中节点通过计算随机哈希散列的数值解争夺记账权,求得正确的数值解以生成区块的能力是节点算力的具体表现,由于工作量证明机制在比特币网络中的应用已经吸引了全球计算机大部分的算力,其他想尝试使用该机制的区块链应用很难获得同样规模的算力来维持自身的安全。同时,基于工作量证明机制的挖矿行为还造成了大量的资源浪费,达成共识所需要的周期也较长,因此该机制并不适合商业应用。权益证明机制(pos)根据每个节点拥有代币的比例和时间,依据算法等比例地降低节点的挖矿难度,从而加快了寻找随机数的速度。这种共识机制可以缩短达成共识所需的时间,但本质上仍然需要网络中的节点进行挖矿运算。因此,pos机制并没有从根本上解决pow机制难以应用于商业领域的问题。股份授权证明机制(dpos)通过全体节点投票选举出一定数量的节点代表,由他们来代理全体节点确认区块、维持系统有序运行,可以大大缩小参与验证和记账节点的数量,从而达到秒级的共识验证。然而,该共识机制仍然不能完美解决区块链在商业中的应用问题,因为该共识机制无法摆脱对于代币的依赖,而在很多商业应用中并不需要代币的存在。pool验证池基于传统的分布式一致性技术建立,并辅之以数据验证机制,pool验证池不需要依赖代币就可以工作,在成熟的分布式一致性算法(pasox、raft)基础之上,可以实现秒级共识验证,更适合有多方参与的多中心商业模式。但该共识机制能够实现的分布式程度远远不如pow机制。实用拜占庭(pbft)是一种状态机副本复制算法,即服务作为状态机进行建模,状态机在分布式系统的不同节点进行副本复制。每个状态机的副本都保存了服务的状态,同时也实现了服务的操作。额外的副本除了降低性能之外并不能提高可靠性。其中,工作量证明机制(pow)由于参加的节点数量庞大,因此,可靠性最高,但是,由于工作量证明机制在节点共识达成的过程中需要数量庞大的节点通过大量算力进行争夺记账权,因此会造成大量的计算机算力的资源浪费,并且会引起计算机产生挖矿行为,更进一步导致资源的浪费,同时也会造成达成节点共识所需要的周期较长。针对此问题,发明人想到以区块链系统中的数据存储结构区
块链为基础,利用安全散列函数的速度快、微小改变结果不可区分性,创新性地仅在算法层面就实现了节点间的共识。由于不需要通过大量的算力去证明节点的工作量,节约了能源,缩短了节点共识周期。
29.为此,本发明实施例提供了一种区块链系统的节点共识方法,通过该方法实现区块链系统的节点共识,其具体执行步骤如图1所示,包括:101、当前区块链系统的目标节点根据目标节点的目标信息和当前区块链最后一个区块的目标信息通过预设散列函数计算得到目标节点对应的目标散列值。
30.其中,所述目标节点的数量不少于2个。本发明包含区块链系统及运行在区块链系统中的节点(即为服务器)和散列函数,区块链系统为本领域技术人员所熟知的技术,在此不再赘述。所述目标节点是当前区块链系统中的服务器;所述目标节点的目标信息可以为节点的公钥信息、节点的身份id信息等,本步骤不做具体限定;所述当前区块链最后一个区块的目标信息可以为区块的id信息、区块的时间戳信息等,本步骤不做具体限定;由所述目标节点的目标信息和所述当前区块链最后一个区块的目标信息合并形成一个合并目标信息,所述合并目标信息作为所述预设散列函数的输入值;所述预设散列函数是用于将任一个输入值计算得出固定长度的散列值,并且当输入值发生微小的改变时,也会导致输出的散列值发生改变。所述预设散列函数包括sha2

256、keccak-256等,在此不再赘述;sha2

256和keccak-256可将输入值生成256个二进制位的散列值,此类算法均为本领域技术人员熟悉的算法,在此不再赘述。
31.举例说明:使用预设散列函数f将处于当前区块链网络中的全部数量为n的节点的公钥匙信息及当前区块链最后一个区块m中储存的数据信息合并成后的合并信息作为输入值使用预设散列函数进行计算得到散列值;所述预设散列函数f为sha2

256算法,得出的输出值是256个二进制位的散列值。
32.102、将目标节点和目标节点对应的目标散列值组成二元组。
33.根据步骤101可知,当前区块链系统中存在多个目标节点,利用所述散列函数以及每个目标节点的目标信息和当前区块链最后一个区块的目标信息可以得到每个目标节点对应的目标散列值,然后,将每一个目标节点和其对应的目标散列值组成二元组,为后续组成数组做前期准备。
34.举例说明:将目标节点记为p,散列值记为q,则f(p,m)=q;将p和q记为一个二元组(p,q)。
35.当前次共识过程中采用每个目标节点的目标信息和当前区块链最后一个区块的目标信息作为散列函数的输入值可以得到每个目标节点对应的散列值,并且每个目标节点对应的散列值不同,原因是虽然当前区块链最后一个区块的目标信息是相同的,但是每个目标节点本身的目标信息不同决定的;因此,采用本步骤的方法可以在当前次共识过程中通过每个目标节点的散列值不同而进行区分;而采用本步骤方法还可以区分当前次共识和下一次共识,理由是同一个目标节点虽然本身节点的目标信息相同,但是由于当前区块链是随着系统交易及时间推移而变化的,即当前区块链最后一个区块的目标信息在当前次共识和下一次共识过程中是不同的,因此,通过上述散列函数的方法计算得出的每个目标节点对应的散列值在前次共识和下一次共识过程中是不同的,因此,本步骤在散列函数的输
入值中引入“当前区块链最后一个区块的目标信息”会保证每次共识前计算目标节点的散列值是变化的。
36.103、将多个二元组按照散列值升序排列组成第一数组。
37.根据步骤102可得由当前区块链系统中每个目标节点以及每个目标节点对应的目标散列值组成的多个二元组,将所述多个二元组按照散列值升序排列组成第一数组。
38.举例说明:将目标节点记为p,散列值记为q,则f(p,m)=q;将p和q记为一个二元组(p,q),将n个目标节点的二元组按照散列值q的升序排列保存到数组a里,即:a=[(p1,q1), (p2,q2), (p3,q3),

,(pn,qn)]。
[0039]
104、根据当前区块链最后一个区块的目标信息通过预设散列函数计算得到对比散列值。
[0040]
所述预设散列函数与步骤101中的所述预设散列函数相同,唯一不同的是输入值不同,本步骤的输入值仅为“当前区块链最后一个区块的目标信息”,不包括目标节点的目标信息。例如“f(m)=h”,其中,f为所述预设散列函数m为“当前区块链最后一个区块的目标信息”,h为对比散列值;所述对比散列值用于定位共识记账节点的位置,具体在下述步骤详细阐述。
[0041]
105、基于对比散列值遍历第一数组中二元组的目标散列值,判断是否存在大于对比散列值的第一目标散列值和不大于对比散列值的第二目标散列值,且第一目标散列值和第二目标散列值分别位于的二元组相邻。
[0042]
举例说明:以步骤103和104的例子进行说明,将目标节点记为p,散列值记为q,则f(p,m)=q;将p和q记为一个二元组(p,q),将n个目标节点的二元组按照散列值q的升序排列保存到数组a里,即:a=[(p1,q1), (p2,q2), (p3,q3),

,(pn,qn)]。f(m)=h,其中,f为所述预设散列函数m为“当前区块链最后一个区块的目标信息”,h为对比散列值;在数组a中寻找两个二元组(p
i-1
,r
i-1
), (pi,ri)使得 r
i-1 《= h 《 ri,那么节点pi即为本次选出的共识记账节点。其中,所述第一目标散列值为ri,第二目标散列值为r
i-1

[0043]
106、若存在,则确定第一目标散列值对应的目标节点为共识记账节点。
[0044]
以步骤105的例子说明,若在数组a中寻找到两个二元组(p
i-1
,r
i-1
), (pi,ri)使得 r
i-1 《= h 《 ri,其中,所述第一目标散列值为ri,那么所述第一目标散列值为ri对应的目标节点pi即为本次选出的共识记账节点。
[0045]
基于上述图1实施例的实现方式可以看出,本发明提供一种区块链系统的节点共识方法,是由于工作量证明机制在确定记账节点的过程中,区块链系统中的所有节点需要进行大量的计算去争夺记账权,因此会造成大量的计算机算力的资源浪费,并且会引起计算机产生挖矿行为,更进一步导致资源的浪费,同时也会造成达成节点共识所需要的周期较长。为此,本发明通过根据目标节点的目标信息和当前区块链最后一个区块的目标信息通过预设散列函数计算得到所述目标节点对应的目标散列值,其中,所述目标节点的数量不少于2个;再将所述目标节点和所述目标节点对应的所述目标散列值组成二元组;再将多个所述二元组按照散列值升序排列组成第一数组;再根据所述当前区块链最后一个区块的目标信息通过所述预设散列函数计算得到对比散列值;再基于所述对比散列值遍历所述第
一数组中所述二元组的所述目标散列值,判断是否存在大于所述对比散列值的第一目标散列值和不大于所述对比散列值的第二目标散列值,且所述第一目标散列值和所述第二目标散列值分别位于的二元组相邻;若存在,则确定所述第一目标散列值对应的所述目标节点为共识记账节点。本发明可以实现以区块链系统中的数据存储结构区块链为基础,利用安全散列函数的速度快、微小改变结果不可区分性,创新性地仅在算法层面就实现了节点间的共识。由于不需要通过大量的算力去证明节点的工作量,节约了能源,缩短了节点共识周期。
[0046]
进一步的,作为对图1所示实施例的细化及扩展,本发明实施例还提供了另一种区块链系统的节点共识方法,如图2所示,其具体步骤如下:201、当前区块链系统的目标节点根据目标节点的目标信息和当前区块链最后一个区块的目标信息通过预设散列函数计算得到目标节点对应的目标散列值。
[0047]
其中,所述目标节点的数量不少于2个;本步骤结合上述方法中101步骤的描述,在此相同的内容不赘述。
[0048]
202、将目标节点和目标节点对应的目标散列值组成二元组。
[0049]
本步骤结合上述方法中102步骤的描述,在此相同的内容不赘述。
[0050]
203、将多个二元组按照散列值升序排列组成第一数组。
[0051]
本步骤结合上述方法中103步骤的描述,在此相同的内容不赘述。
[0052]
对于上述步骤201、202和203的内容进行统一举例说明:所述预设散列函数使用sha2

256,也可以使用其他的散列算法,如:keccak-256。通过本发明所述共识机制争夺记账权的过程如下,假定当前处于区块链网络中的全部节点有5个,分别为:节点1,节点2,节点3,节点4,节点5,每个节点均有一个节点id,该节点id在该区块链网络中唯一标识了某一节点。区块链中的每个区块也设置有一个区块id,该区块id在区块链中唯一标识了某个区块。
[0053]
节点1使用sha2

256算法依次计算当前区块链系统中的每一个节点(节点1,节点2,节点3,节点4,节点5)的散列值。计算散列值时,散列函数的输入参数为:节点id+末尾区块的id,比如计算节点2的散列值时,使用的输入参数为节点2的id+末尾区块的id。计算出的散列值的长度为256个二进制位。节点1对每一个节点(节点1,节点2,节点3,节点4,节点5)依次计算完成散列值后,将计算结果保存在数组a中,其中数组a的每一个元素为一个二元组(节点,散列值),本例中,即:a=[(节点1, 节点1散列值),(节点2, 节点2散列值),(节点3, 节点3散列值) , (节点4, 节点4散列值),(节点5, 节点5散列值)]。节点2,节点3,

,均进行此计算。在计算完成后,每个节点均计算得出数组a。假如计算出的散列值二进制如下:节点1散列值:10001010010101010011010

1101010节点2散列值:01001010101001010011010

1010100节点3散列值:10010101001001010100111

0010110节点4散列值:10101010101000100010101

0111101节点5散列值:10100101010100101010010

1110111则a=[(节点1, 10001010010101010011010

1101010),
(节点2, 01001010101001010011010

1010100),(节点3, 10010101001001010100111

0010110),(节点4, 10101010101000100010101

0111101),(节点5, 10100101010100101010010

1110111)]。
[0054]
204、根据当前区块链最后一个区块的目标信息通过预设散列函数计算得到对比散列值。
[0055]
本步骤结合上述方法中104步骤的描述,在此相同的内容不赘述。
[0056]
举例说明:以步骤201、202和203的例子进行说明:节点1使用sha2

256算法计算当前区块链最后一个区块的散列值(在本步骤中将此计算得到的散列值称为对比散列值)。计算所述对比散列值时,所述散列函数的输入参数为:末尾区块的id,计算出的散列值的长度为256个二进制位。节点2,节点3,

,均进行此计算。在计算完成后,每个节点均计算得出相同的所述对比散列值,假如计算出的对比散列值二进制如下:对比散列值:10001010010101010011010

1101010。
[0057]
进一步的,本发明在根据所述当前区块链最后一个区块的目标信息通过所述预设散列函数计算得到对比散列值之后,所述方法包括:获取预设截取位数;其中,所述获取预设截取位数,还包括:获取所述当前区块链系统的节点总数;基于所述节点总数通过预设计算规则计算得到所述预设截取位数,其中,所述预设计算规则为:j=k/2,2j《 n 《=2k,k为所述预设截取位数,n为所述节点总数;其中,所述基于所述节点总数通过预设计算规则计算得到所述预设截取位数,还包括:判断所述预设截取位数是否小于预设阈值;若是,则确定所述预设截取位数等于所述预设阈值;依次将所述第一数组中的所述目标散列值从最低位开始向最高位截取所述预设截取位数,形成所述预设截取位数目标散列值;将根据所述预设截取位数目标散列值与所述预设截取位数目标散列值对应的所述目标节点组成的新二元组组成第二数组;将所述第二数组的所述新二元组按照散列值升序排列,得到第三数组;将所述对比散列值从最低位开始向最高位截取所述预设截取位数,形成所述预设截取位数对比散列值;基于所述预设截取位数对比散列值遍历所述第三数组中所述新二元组的所述预设截取位数目标散列值,判断是否存在大于所述预设截取位数对比散列值的第一预设截取位数目标散列值和不大于所述预设截取位数对比散列值的第二预设截取位数目标散列值,且所述第一预设截取位数目标散列值和所述第二预设截取位数目标散列值分别位于的新二元组相邻;若存在,则确定所述第一预设截取位数目标散列值对应的所述目标节点为共识记账节点。以步骤201、202和203的例子进行说明:第一步骤:由于区块链系统网络中节点数量为5,需要计算截取位数k使得满足公式:j=k/2,2j《 5 《=2k,通过计算,得出满足的k为3,这时候因为k小于4,为了保证节点数量较少的时候
结果的准确性,我们规定当k值小于4时,设置k为4,所以本例中最终计算出截取位数k=4,其中,4为所述预设阈值;第二步骤:每个节点针对步骤203得出的数组a为:a=[ (节点1, 10001010010101010011010

1101010),(节点2, 01001010101001010011010

1010100),(节点3, 10010101001001010100111

0010110),(节点4, 10101010101000100010101

0111101),(节点5, 10100101010100101010010

1110111)];对所述数组a中的每个散列值从最低位开始往最高位截取4(上述第一步骤计算出来的截取位数为4)位,即所述预设截取位数目标散列值为4,生成新的二元组数组b为:b=[ (节点1, 1010),(节点2, 0100),(节点3, 0110),(节点4, 1101),(节点5, 0111)]。其中,所述节点1的预设截取位数目标散列值“1010”对应的十进制数值为为10;所述节点2的预设截取位数目标散列值“0100
”ꢀ
对应的十进制数值为4;所述节点3的预设截取位数目标散列值“0110
”ꢀ
对应的十进制数值为6;所述节点4的预设截取位数目标散列值“1101
”ꢀ
对应的十进制数值为13;所述节点5的预设截取位数目标散列值“0111
”ꢀ
对应的十进制数值为7。例如,所述节点1的预设截取位数目标散列值“1010”是二进制表示,将其转化成十进制是23+21=10;将二进制数值转化成十进制数值的方法是现有技术,在此不进行赘述。
[0058]
第三步骤:每个节点将数组b按照其元素二元组的散列值转换得到的对应的十进制数值从小到大(4、6、7、10、13)进行升序排列,得到了新的数组c为:c=[ (节点2, 0100), (节点3, 0110),(节点5, 0111),(节点1, 1010),(节点4, 1101)];第四步骤:每个节点读取区块链中的最后一个区块的id,使用201所述预设散列函数计算出对比散列值,其中输入参数为该id;第一种情况:假设计算出的对比散列值为:10100101010100101010010

1111110,然后从最低位开始往最高位截取4(上述第一步骤计算出来的截取位数为4)位,形成一个4位的二进制1110。由于数组c中的每一个散列值也是4位,那么遍历数组c,假设数组每个元素的序号使用i表示,使得:序号为i-1的散列值《= 1110 《序号为i节点散列值,在本例中,并不存满足的i,所以我们使用数组c的第1个元素做为记账节点,即:节点2。
[0059]
第二种情况:假如对最后一个区块的id计算出的散列值为:10100101010100101010010

1110101,然后从最低位开始往最高位截取4(上述第一步骤计算出来的截取位数为4)位,形成一个4位的二进制0101。由于数组c中的每一个散列值也是4位,那么遍历数组c,假设数组每个元素的序号使用i表示,使得:序号为i-1的散列值《= 0101《序号为i节点散列值,在本例中,我们可以计算出i=2,即数组c的第2个元素为记账节点,即:节点3。
[0060]
第三种情况:假如对最后一个区块的id计算出的散列值为:10100101010100101010010

1110111,然后从最低位开始往最高位截取4(步骤2计算出来的截取位数为4)位,形成一个4位的二进制0111。由于数组c中的每一个散列值也是4位,那么遍历数组c,假设数组每个元素的序号使用i表示,使得:序号为i-1的散列值《= 0111《序号为i节点散列值,在本例中,我们可以计算出i=4,即数组c的第4个元素为记账节点,即:节点1。
[0061]
进一步的,所述将根据所述预设截取位数目标散列值与所述预设截取位数目标散列值对应的所述目标节点组成的新二元组组成第二数组,包括:依次获取所述预设截取位数目标散列值与所述预设截取位数目标散列值对应的所述目标节点;基于所述预设截取位数目标散列值判断所述第二数组中是否存在相同的所述预设截取位数目标散列值;若不存在,则将由所述预设截取位数目标散列值与所述预设截取位数目标散列值对应的所述目标节点组成的新二元组依次加入所述第二数组中;若存在,则将由所述预设截取位数目标散列值与所述预设截取位数目标散列值对应的所述目标节点组成的新二元组舍弃。
[0062]
举例说明:每个节点得出的数组a为:a=[ (节点1, 10001010010101010011010

1101010),(节点2, 01001010101001010011010

1010100),(节点3, 10010101001001010100111

0010100),(节点4, 10101010101000100010101

0111101),(节点5, 10100101010100101010010

1110111)];对所述数组a中的每个散列值从最低位开始往最高位截取4(上述第一步骤计算出来的截取位数为4)位,即所述预设截取位数目标散列值为4,得到新的二元组分别为(节点1, 1010),(节点2, 0100),(节点3, 0100),(节点4, 1101),(节点5, 0111),其中,所述节点2和节点3对应的散列值均为“0100”,则舍掉所述节点3对应的新二元组(节点3, 0100),生成新的二元组数组b为:b=[ (节点1, 1010),(节点2, 0100), (节点4, 1101),(节点5, 0111)]。
[0063]
205、基于对比散列值遍历第一数组中二元组的目标散列值,判断是否存在大于对比散列值的第一目标散列值和不大于对比散列值的第二目标散列值,且第一目标散列值和第二目标散列值分别位于的二元组相邻。
[0064]
本步骤结合上述方法中105步骤的描述,在此相同的内容不赘述。
[0065]
206、若存在,则确定第一目标散列值对应的目标节点为共识记账节点。
[0066]
本步骤结合上述方法中106步骤的描述,在此相同的内容不赘述。
[0067]
针对步骤205和206的进一步的技术方案在204步骤的扩展技术方案和举例说明中进行了结合阐述,在此不进行赘述。
[0068]
207、共识记账节点创建目标区块并同步至当前区块链网络。
[0069]
其中,所述共识记账节点为经过步骤201至206的共识方法得出的具有记账权的节点,所述共识记账节点创建一个目标区块,以步骤204的例子进行说明:第四步骤计算出的共识记账节点(包括3种情况下,分别是节点2或者节点3或者节点1)开始创建目标区块并同步至当前区块链网络。
[0070]
208、当前区块链网络的其他节点接收目标区块,且根据预设验证规则判断目标区块对应的共识记账节点是否通过验证。
[0071]
其中,所述预设验证规则为判断所述目标区块对应的所述共识记账节点与所述其他节点本地计算出的本次应记账节点是否相同;若相同,则验证通过,且反馈验证通过信息。
[0072]
具体步骤为:所述当前区块链网络的其他节点接收到所述目标区块,且判断所述目标区块对应的所述共识记账节点与所述其他节点本地计算出的本次应记账节点是否相同;若相同,则验证通过,且反馈验证通过信息。
[0073]
209、若验证通过,则反馈验证通过信息。
[0074]
针对步骤208和209的技术方案统一举例说明:假定当前处于区块链网络中的全部节点有5个,分别为:节点1,节点2,节点3,节点4,节点5,所述共识记账节点为节点2;所述共识记账节点是节点2;节点1、节点3和节点4本地计算出的本次应记账节点是节点2,节点5本地计算出的本次应记账节点是节点1,所述节点2创建目标区块j,所述节点2将目标区块j同步至当前区块链网络,节点1、节点3、节点4和节点5接收到所述目标区块j,其中,节点1、节点3和节点4分别判断所述目标区块j对应的节点2的id与其计算出的本次应记账节点(节点2)id相同,因此,节点1、节点3和节点4验证通过,且反馈验证通过信息给当前区块链系统,所述当前区块链系统的所述节点均获取到反馈的所述验证通过信息;节点5判断所述目标区块j对应的节点2的id与其计算出的本次应记账节点(节点1)id不相同,则丢弃所述目标区块j。
[0075]
210、基于获取验证通过信息的数量确定当前区块链网络中对共识记账节点验证通过的其他节点数量。
[0076]
以步骤209中的例子进行说明:节点1、节点3和节点4验证通过,且反馈验证通过信息给当前区块链系统,则所述当前区块链系统的所有节点(及节点1、节点2、节点3、节点4和节点5)均获取到节点1、节点3和节点4反馈的验证通过信息,即所有节点获取验证通过信息的数量均为3,则确定当前区块链网络中对共识记账节点2验证通过的其他节点数量为3。
[0077]
211、判断当前区块链网络中对共识记账节点验证通过的其他节点数量占当前区块链网络中所有节点数量的比例是否大于预置阈值。
[0078]
212、若是,则当前区块链网络的其他节点同步添加目标区块至对应的本地区块链末端。
[0079]
以步骤210中的例子对步骤211和212进行举例说明:当前区块链网络中对共识记账节点2验证通过的其他节点数量为3,当前区块链网络中所有节点(节点1,节点2,节点3,节点4,节点5)数量为5,那么,当前区块链网络中对共识记账节点验证通过的其他节点数量占当前区块链网络中所有节点数量的比例为3/5=60%;所述预置阈值为51%,判断当前区块链网络中对共识记账节点验证通过的其他节点数
量占当前区块链网络中所有节点数量的比例(60%)大于所述预置阈值(51%),则当前区块链网络的其他节点(节点1,节点3,节点4,节点5)同步添加目标区块j至对应的本地区块链末端(即最后一个区块m的末端)。
[0080]
进一步的,本发明的节点共识执行步骤(即201至212),每隔预设周期执行该流程,所述预设周期可以设置为300秒,即系统每300秒会产生一个区块,所述预设周期可以随着区块链系统的应用场景进行变化,当交易频繁的时候可以设置更小的时间周期,交易量松散的时候,可以设置更大的时间周期。本步骤不做具体限定。
[0081]
基于上述图2的实现方式可以看出,本发明提供一种区块链系统的节点共识方法,本发明所述共识方法及系统流程为:竞争选出记账节点-创建区块-验证区块-同步区块,并且采用截取位数将通过预设散列函数计算得到的散列值进行截取,再对截取后的散列值进行排序,通过采用截取位数截取后的对比散列值进行共识记账节点的定位,本发明可以实现区块链系统中的数据存储结构区块链为基础,利用安全散列函数的速度快、微小改变结果不可区分性,创新性地仅在算法层面就实现了节点间的共识;由于不需要通过大量的算力去证明节点的工作量,节约了能源;不需要代币、股份证明及节点间的副本复制极大提高了扩展性;解决了现有共识机制消耗资源大、共识周期长、依赖代币、扩展性差的问题,对加速区块链系统的落地应用有着非常重要的意义。
[0082]
进一步的,作为对上述图1所示方法的实现,本发明实施例还提供了一种区块链系统的节点共识装置,用于对上述图1所示的方法进行实现。该装置实施例与前述方法实施例对应,为便于阅读,本装置实施例不再对前述方法实施例中的细节内容进行逐一赘述,但应当明确,本实施例中的装置能够对应实现前述方法实施例中的全部内容。如图3所示,该装置包括:第一计算单元31,用于根据目标节点的目标信息和当前区块链最后一个区块的目标信息通过预设散列函数计算得到所述目标节点对应的目标散列值,其中,所述目标节点的数量不少于2个;第一组成单元32,用于将从所述第一计算单元31得到的所述目标节点和所述目标节点对应的所述目标散列值组成二元组;还用于将多个所述二元组按照散列值升序排列组成第一数组;第二计算单元33,用于根据所述当前区块链最后一个区块的目标信息通过所述预设散列函数计算得到对比散列值;判断单元34,用于基于从所述第二计算单元33得到的所述对比散列值遍历所述从所述第一组成单元32得到的第一数组中所述二元组的所述目标散列值,判断是否存在大于所述对比散列值的第一目标散列值和不大于所述对比散列值的第二目标散列值,且所述第一目标散列值和所述第二目标散列值分别位于的二元组相邻;确定单元35,用于从所述判断单元34得到的若所述第一数组中存在大于所述对比散列值的第一目标散列值和不大于所述对比散列值的第二目标散列值,且所述第一目标散列值和所述第二目标散列值分别位于的二元组相邻,则确定所述第一目标散列值对应的所述目标节点为共识记账节点。
[0083]
进一步的,作为对上述图2所示方法的实现,本发明实施例还提供了另一种区块链系统的节点共识装置,用于对上述图2所示的方法进行实现。该装置实施例与前述方法实施
例对应,为便于阅读,本装置实施例不再对前述方法实施例中的细节内容进行逐一赘述,但应当明确,本实施例中的装置能够对应实现前述方法实施例中的全部内容。如图4所示,该装置包括:第一计算单元31,用于根据目标节点的目标信息和当前区块链最后一个区块的目标信息通过预设散列函数计算得到所述目标节点对应的目标散列值,其中,所述目标节点的数量不少于2个;第一组成单元32,用于将从所述第一计算单元31得到的所述目标节点和所述目标节点对应的所述目标散列值组成二元组;还用于将多个所述二元组按照散列值升序排列组成第一数组;第二计算单元33,用于根据所述当前区块链最后一个区块的目标信息通过所述预设散列函数计算得到对比散列值;判断单元34,用于基于从所述第二计算单元33得到的所述对比散列值遍历从所述第一组成单元32得到的所述第一数组中所述二元组的所述目标散列值,判断是否存在大于所述对比散列值的第一目标散列值和不大于所述对比散列值的第二目标散列值,且所述第一目标散列值和所述第二目标散列值分别位于的二元组相邻;确定单元35,用于从所述判断单元34得到的若所述第一数组中存在大于所述对比散列值的第一目标散列值和不大于所述对比散列值的第二目标散列值,且所述第一目标散列值和所述第二目标散列值分别位于的二元组相邻,则确定所述第一目标散列值对应的所述目标节点为共识记账节点;获取单元36,用于获取预设截取位数;第一截取单元37,用于依次将从所述第一组成单元32得到的所述第一数组中的所述目标散列值从最低位开始向最高位截取从所述获取单元36得到的所述预设截取位数,形成所述预设截取位数目标散列值;第二组成单元38,用于将从所述第一截取单元37得到的根据所述预设截取位数目标散列值与所述预设截取位数目标散列值对应的所述目标节点组成的新二元组组成第二数组;还用于将所述第二数组的所述新二元组按照散列值升序排列,得到第三数组;第二截取单元39,用于将从所述第二计算单元33得到的所述对比散列值从最低位开始向最高位截取从所述获取单元36得到的所述预设截取位数,形成所述预设截取位数对比散列值;所述判断单元34,还用于基于从所述第二截取单元39得到的所述预设截取位数对比散列值遍历从所述第二组成单元38得到的所述第三数组中所述新二元组的所述预设截取位数目标散列值,判断是否存在大于所述预设截取位数对比散列值的第一预设截取位数目标散列值和不大于所述预设截取位数对比散列值的第二预设截取位数目标散列值,且所述第一预设截取位数目标散列值和所述第二预设截取位数目标散列值分别位于的新二元组相邻;所述确定单元35,还用于从所述判断单元34得到的若所述第三数组中存在大于所述预设截取位数对比散列值的第一预设截取位数目标散列值和不大于所述预设截取位数对比散列值的第二预设截取位数目标散列值,且所述第一预设截取位数目标散列值和所述第二预设截取位数目标散列值分别位于的新二元组相邻,则确定所述第一预设截取位数目
标散列值对应的所述目标节点为共识记账节点;创建单元40,用于从所述确定单元35得到的所述共识记账节点创建目标区块并同步至所述当前区块链网络;第一验证单元41,用于所述当前区块链网络的其他节点接收从所述创建单元40得到的所述目标区块,且根据预设验证规则判断所述目标区块对应的所述共识记账节点是否通过验证;还用于若验证通过,则反馈验证通过信息;第三计算单元42,用于基于从所述第一验证单元41得到的获取所述验证通过信息的数量确定所述当前区块链网络中对所述共识记账节点验证通过的其他节点数量;第二验证单元43,用于判断从所述第三计算单元42得到的所述当前区块链网络中对所述共识记账节点验证通过的其他节点数量占所述当前区块链网络中所有节点数量的比例是否大于预置阈值;还用于若所述当前区块链网络中对所述共识记账节点验证通过的其他节点数量占所述当前区块链网络中所有节点数量的比例大于预置阈值,则所述当前区块链网络的其他节点同步添加所述目标区块至对应的本地区块链末端。
[0084]
进一步的,所述获取单元36,包括:获取模块361,用于获取所述当前区块链系统的节点总数;计算模块362,用于基于从所述获取模块361得到的所述节点总数通过预设计算规则计算得到所述预设截取位数,其中,所述预设计算规则为:j=k/2,2j《 n 《=2k,k为所述预设截取位数,n为所述节点总数。
[0085]
进一步的,所述计算模块362,包括:判断子模块3621,用于判断所述预设截取位数是否小于预设阈值;确定子模块3622,用于从所述判断子模块3621得到的若所述预设截取位数小于预设阈值,则确定所述预设截取位数等于所述预设阈值。
[0086]
进一步的,所述第二组成单元38,包括:获取模块381,用于依次获取所述预设截取位数目标散列值与所述预设截取位数目标散列值对应的所述目标节点;判断模块382,用于基于从所述获取模块381得到的所述预设截取位数目标散列值判断所述第二数组中是否存在相同的所述预设截取位数目标散列值;添加模块383,用于从所述判断模块382得到的若所述第二数组中不存在相同的所述预设截取位数目标散列值,则将由所述预设截取位数目标散列值与所述预设截取位数目标散列值对应的所述目标节点组成的新二元组依次加入所述第二数组中。
[0087]
进一步的,所述第一验证单元41,包括:判断模块411,用于所述当前区块链网络的其他节点接收到所述目标区块,且判断所述目标区块对应的所述共识记账节点与所述其他节点本地计算出的本次应记账节点是否相同;验证模块412,用于从所述判断模块411得到的若所述目标区块对应的所述共识记账节点与所述其他节点本地计算出的本次应记账节点相同,则验证通过,且反馈验证通过信息。
[0088]
进一步的,本发明实施例还提供一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行上述图1-2中所述的区块链系统的节点共识方法。
[0089]
进一步的,本发明实施例还提供一种存储介质,所述存储介质用于存储计算机程序,其中,所述计算机程序运行时控制所述存储介质所在设备执行上述图1-2中所述的区块链系统的节点共识方法。
[0090]
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
[0091]
可以理解的是,上述方法及装置中的相关特征可以相互参考。另外,上述实施例中的“第一”、“第二”等是用于区分各实施例,而并不代表各实施例的优劣。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。此外,存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flash ram),存储器包括至少一个存储芯片。
[0092]
本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
[0093]
本技术是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0094]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0095]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0096]
在一个典型的配置中,计算设备包括一个或多个处理器 (cpu)、输入/输出接口、网络接口和内存。
[0097]
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flash ram)。存储器是计算机可读介质的示例。
[0098]
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存 (pram)、静态随机存取存储器 (sram)、动态随机存取存储器 (dram)、其他类型的随机存取存储器 (ram)、只读存储器 (rom)、电可擦除可编程只读存储器 (eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器 (cd-rom)、数字多功能光盘 (dvd) 或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体 (transitory media),如调制的数据信号和载波。
[0099]
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
[0100]
本领域技术人员应明白,本技术的实施例可提供为方法、系统或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
[0101]
以上仅为本技术的实施例而已,并不用于限制本技术。对于本领域技术人员来说,本技术可以有各种更改和变化。凡在本技术的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本技术的权利要求范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1