背书节点确定方法、联盟链网络的账本更新方法及装置与流程
未命名
09-24
阅读:40
评论:0
1.本公开涉及区块链技术领域,可以用于金融领域,具体是一种背书节点确定方法、联盟链网络的账本更新方法、背书节点确定装置、联盟链网络的账本更新装置、电子设备、计算机可读存储介质及计算机程序产品。
背景技术:
2.hyperledger fabric是一个提供分布式账本解决方案的平台,目标是实现一个通用的权限区块链的底层基础框架,为了适用于不同的场合,采用模块化架构提供可切换和可扩展的组件,包括共识算法、加密安全、数字资产、智能合约和身份鉴权等服务。
3.在hyperledger fabric中,一个交易从被发起到最终写入账本中分别要经过模拟背书、排序、验证和提交四个阶段。在模拟阶段,客户端产生交易,并发给多个背书节点,每一个背书节点进行模拟背书操作之后,都向客户端返回一个读写集合以及自己的签名。然而,现有技术中,背书策略不够高效,导致系统无法自动均衡背书节点的运算压力。
技术实现要素:
4.针对现有技术中的问题,本技术提供一种背书节点确定方法、联盟链网络的账本更新方法及装置,能够均衡背书节点的运算压力,提高运算效率。
5.为解决上述技术问题,本技术提供以下技术方案:
6.第一方面,本技术提供一种背书节点确定方法,应用于联盟链网络,该方法包括:
7.获取待背书提案和联盟链网络,在线节点;
8.确定所述待背书提案的生成时间和背书数量;
9.对所述待背书提案和所述生成时间进行拼接处理,得到待背书提案属性对;
10.根据所述待背书提案属
11.性对以及所述背书数量,从所述在线节点中确定背书节点,其中,所述背书节点的数量与所述背书数量一致。
12.第二方面,本技术提供一种联盟链网络的账本更新方法,该方法包括:
13.获取交易提案;
14.根据前述第一方面的背书节点确定方法,确定与所述交易提案对应的背书节点;
15.基于所述背书节点,对所述交易提案进行模拟交易,得到模拟执行结果和签名背书;
16.根据所述模拟执行结果和签名背书,确定排序节点;
17.根据所述排序节点,对所述模拟执行结果和签名背书进行排序打包,得到区块文件;
18.确定联盟链网络中的领导节点和其他节点;
19.将所述区块文件广播至所述领导节点,更新所述领导节点的账本文件;
20.将所述区块文件由所述领导节点广播至所述其他节点,更新所述其他节点的账本
文件。
21.第三方面,本技术提供一种背书节点确定装置,应用于联盟链网络,该装置包括:
22.第一获取模块,被配置为获取待背书提案和联盟链网络的在线节点;
23.第一确定模块,被配置为确定所述待背书提案的生成时间和背书数量;
24.拼接模块,被配置为对所述待背书提案和所述生成时间进行拼接处理,得到待背书提案属性对;
25.第二确定模块,被配置为根据所述待背书提案属性对以及所述背书数量,从所述在线节点中确定背书节点,其中,所述背书节点的数量与所述背书数量一致。
26.第四方面,本技术提供一种联盟链网络的账本更新装置,该装置包括:
27.第二获取模块,被配置为获取交易提案;
28.第三确定模块,被配置为根据前述第三方面的背书节点确定装置,确定与所述交易提案对应的背书节点;
29.模拟交易模块,被配置为基于所述背书节点,对所述交易提案进行模拟交易,得到模拟执行结果和签名背书;
30.排序节点确定模块,被配置为根据所述模拟执行结果和签名背书,确定排序节点;
31.排序打包模块,被配置为根据所述排序节点,对所述模拟执行结果和签名背书进行排序打包,得到区块文件;
32.第四确定模块,被配置为确定联盟链网络中的领导节点和其他节点;
33.第一更新模块,被配置为将所述区块文件广播至所述领导节点,更新所述领导节点的账本文件;
34.第二更新模块,被配置为将所述区块文件由所述领导节点广播至所述其他节点,更新所述其他节点的账本文件。
35.第五方面,本技术提供一种电子设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现所述背书节点确定方法的步骤或联盟链网络的账本更新方法的步骤。
36.第六方面,本技术提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现所述背书节点确定方法的步骤或联盟链网络的账本更新方法的步骤。
37.第七方面,本技术提供一种计算机程序产品,包括计算机程序/指令,该计算机程序/指令被处理器执行时实现所述背书节点确定方法的步骤或联盟链网络的账本更新方法的步骤。
38.应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
39.针对现有技术中的问题,本技术提供的背书节点确定方法、联盟链网络的账本更新方法及装置,通过从在线节点中动态确定背书节点,能够使每个在线节点都有成为背书节点的机会,缓解了节点的运算压力,实现背书节点的负载均衡,提高背书节点处理交易的速度;此外,当节点掉线时,自动排除掉线节点,大幅减少单点故障对系统造成的影响,有效提高hyperledger fabric系统的性能。
附图说明
40.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。其中:
41.图1是本技术的一个实施例可以应用于其中的示例性系统架构图;
42.图2是根据本技术的背书节点确定方法的一个实施例的流程图;
43.图3是根据本技术的背书节点确定方法的又一个实施例的流程图;
44.图4是根据本技术实施例的基于哈希环确定背书节点的示意图;
45.图5是根据本技术的联盟链网络的账本更新方法的一个实施例的流程图;
46.图6是根据本技术的背书节点确定装置的一个实施例的结构示意图;
47.图7是根据本技术的联盟链网络的账本更新装置的一个实施例的结构示意图;
48.图8是用来实现本技术实施例的背书节点确定方法或联盟链网络的账本更新方法的电子设备的框图。
具体实施方式
49.以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
50.图1示出了可以应用本公开的背书节点确定方法的实施例的示例性系统架构100。如图1所示,系统架构100可以包括终端101、网络102和服务器103。网络102用以在终端101和服务器103之间提供通信链路的介质。网络102可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
51.终端101可以通过网络102与服务器103交互,终端101中能够供用户提交智能合约、待背书提案或交易提案等;服务器103可以从终端101获取待背书提案以及在线节点,并确定待背书提案的生成时间和背书数量;进一步对待背书提案和生成时间进行拼接处理,得到待背书提案属性对,最终结合背书数量,从在线节点中确定背书节点。同时,在确定背书节点后,还可以利用背书节点对交易提案进行背书,得到模拟执行结果,最终实现联盟链网络中的账本更新交易。
52.需要说明的是,服务器103可以是硬件,也可以是软件。当服务器103为硬件时,可以实现成多个服务器组成的分布式服务器集群,也可以实现成单个服务器。当服务器103为软件时,可以实现成多个软件或软件模块(例如用来提供分布式服务),也可以实现成单个软件或软件模块。在此不做具体限定。
53.应该理解,图1中的终端、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端、网络和服务器。
54.需要说明的是,本公开实施例所提供的背书节点确定方法一般由服务器103执行,相应地,用于背书节点确定的装置一般设置于服务器103中。
55.图2示出了本公开一个实施例提供的背书节点确定方法的示意性流程图200,应用
于联盟链网络,如图2所示,该方法包括以下步骤:
56.步骤201、获取待背书提案和联盟链网络的在线节点;
57.步骤202、确定待背书提案的生成时间和背书数量;
58.步骤203、对待背书提案和生成时间进行拼接处理,得到待背书提案属性对;
59.步骤204、根据待背书提案属性对以及背书数量,从在线节点中确定背书节点,其中,背书节点的数量与背书数量一致。
60.本实施例提供的背书节点确定方法,通过从在线节点中动态确定背书节点,能够使每个在线节点都有成为背书节点的机会,从而缓解了节点的运算压力,实现背书节点的负载均衡,提高背书节点处理交易的速度,有效提高hyperledger fabric系统的性能。
61.下面对图2的每个步骤进行详细阐述。
62.步骤201、获取待背书提案和联盟链网络的在线节点。
63.本步骤旨在由背书节点确定方法的执行主体(例如图1所示的服务器103)从终端101处获取待背书提案和联盟链网络的在线节点。
64.在本实施例中,待背书提案即用户在终端101的智能合约提交阶段,生成的交易提案。其中,交易提案在区块链中是指一种用于确保交易在区块链上的确认和执行的机制。当一个用户发出一笔交易时,这笔交易将通过网络广播到所有节点上。如果所有节点都确认该交易是有效的,那么这笔交易将被打包到一个区块中,并且该区块将通过竞争式共识算法被成功创建和确认,其中,待背书提案为现有技术,本技术在此不再赘述。
65.另外,应当理解,在联盟链网络或区块链网络中,存在若干组织或机构,每个组织或机构控制一个或多个节点,共同记录交易数据,在线节点即未出现故障,处于激活正常工作状态的节点,包括排序节点、peer节点等。例如,在线节点包括peer0,peer1,...,peeri等i个节点。
66.步骤202、确定待背书提案的生成时间和背书数量。
67.在通过步骤201获取到待背书提案和在线节点后,本步骤旨在由背书节点确定方法的执行主体(例如图1所示的服务器103)确定待背书提案的生成时间和背书数量。
68.在本实施例中,待背书提案的生成时间即生成待背书提案时的时间,一般用时间戳timestamp表示。在区块链中,timestamp通常用于记录交易和区块被创建的时间。由于区块链的去中心化特性,每个节点之间的时间可能会存在差异,因此时间戳可以帮助保证交易和区块的顺序和一致性,在保证交易和区块的可信度和可靠性方面起着重要的作用。
69.在本实施例中,在区块链上进行交易时,为了保证交易的安全性和准确性,会采用背书策略。背书策略是指需要一定数量的节点对交易进行背书并进行验证,验证通过后才能确认和执行交易,即需要指定背书节点的数量,其一般由交易的发起方在提交智能合约时指定。发起方可以根据交易的安全性和可信度要求来确定所需要的背书节点数量(背书数量)。当达到指定的背书数量时,交易就能够得到确认和执行,从而提高交易的安全性和可靠性。
70.步骤203、对待背书提案和生成时间进行拼接处理,得到待背书提案属性对。
71.本步骤旨在由背书节点确定方法的执行主体(例如图1所示的服务器103)对待背书提案和生成时间进行拼接处理,得到待背书提案属性对
72.现有技术中存在一种通过重放进行攻击的手段,攻击者不断发送内容相同的请
求。这些请求由于具有相同的key值,会发送到相同的背书节点。由于联盟链网络中单个节点的性能有限,这将使得对应节点的运算能力被迅速饱和并超时,从而被移除出节点列表,接着同样的请求将被发送到下一个节点,于是所有节点像倒下的多米诺骨牌一般被移出网络,通过简单手段就能瘫痪整个网络。
73.基于此,本实施例中,在每个待背书提案的生成时间不同的基础上,对待背书提案和生成时间进行拼接处理,得到的待背书提案属性对具有唯一性,能够将极短时间内发出的大量相同请求,相对平均地分配到不同的背书节点中,使得网络面对大流量请求时稳定性更优,克服现有技术中的共计重放问题。
74.步骤204、根据待背书提案属性对以及背书数量,从在线节点中确定背书节点,其中,背书节点的数量与背书数量一致。
75.本步骤旨在由背书节点确定方法的执行主体(例如图1所示的服务器103)根据根据待背书提案属性对以及背书数量,从在线节点中确定背书节点。
76.在本实施例中,例如,背书数量为2,在线节点的数量为10,即从10个在线节点中,确定2个背书节点,在待背书提案属性对具有唯一性,即每个交易提案对应的交易提案属性对不同以及背书数量不同的基础上,其对应的背书节点也不同。
77.需要说明的是,上述背书数量是示例性的,本领域技术人员能够根据不同的待背书提案设置不同的背书数量;在线节点的数量是示例性的,本领域技术人员能够根据实际情况确定相应的在线节点,本技术对此不做限定。
78.本实施例提供的背书节点确定方法,能够在在线节点中动态确定背书节点,能够使每个在线节点都有成为背书节点的机会,从而缓解节点的运算压力,实现背书节点的负载均衡,提高背书节点处理交易的速度;同时,通过对待背书提案和生成时间进行拼接处理,能够克服攻击重放问题,有效提高hyperledger fabric系统的性能。
79.进一步参考图3,其示出了背书节点确定方法的又一个实施例流程300。该背书节点确定方法的流程300包括以下步骤:
80.步骤301、获取待背书提案和联盟链网络的在线节点。
81.在本实施例中,对步骤301的描述参考步骤201,本技术在此不再赘述。
82.步骤302、确定待背书提案的生成时间和背书数量。
83.在本实施例中,对步骤302的描述参考步骤202,本技术在此不再赘述。
84.步骤303、对待背书提案和生成时间进行拼接处理,得到待背书提案属性对。
85.在本实施例中,对步骤303的描述参考步骤203,本技术在此不再赘述。
86.步骤304、确定在线节点的第一哈希值。
87.在本实施例中,基于哈希函数,能够确定在线节点的第一哈希值。其中,哈希函数能够将任意大小的数据转换为固定大小的哈希值来实现数据的压缩和转换。
88.在本实施例的一些可选方式中,确定在线节点的第一哈希值的步骤具体包括:
89.步骤3041、确定在线节点的ip地址。
90.在本实施例中,例如,在线节点包括peer0,peer1,...,peeri等i个节点,其对应的ip地址分别为p0,p1,...,pi,具体的,p0可以为(“202.168.14.241”)。
91.步骤3042、根据ip地址,确定在线节点的第一哈希值。
92.在本实施例中,基于哈希函数,确定在线节点的第一哈希值,其中,以哈希环的地
址空间范围为[0,2
32-1]为例,基于哈希函数的第一哈希值计算公式如下:
[0093]
hash(ip)=(ip)mod(2
32-1)
[0094]
其中,ip表示各个节点的ip地址,作为hash函数的输入;mod为取模函数,其运算方式为:(ip)mod(2
32-1)=(ip)%(2
32-1)
[0095]
需要说明的是,上述哈希环的地址空间范围是示例性的,其可以根据实际需求进行相应设置。
[0096]
步骤305、根据第一哈希值,确定在线节点在预设哈希环上的第一标记位置。
[0097]
在本实施例中,在获取到第一哈希值后,能够将第一哈希值映射到哈希环上。以图4为例,哈希环的地址空间范围是[0,2
32-1],把区间首尾相连,形成一个顺时针增长的哈希环,将所有peer的ip地址p0,p1,...,pi依次作为hash函数的输入进行哈希,把结果n0,n1,...,ni分别标记在环上。例如,参考图4,hash(p0)所在的标记位置为n0,相应的,n1为hash(p1)的标记位置,n2为hash(p2)的标记位置,n3为hash(p3)的标记位置,其余第一哈希值的标记方式相同,本技术不再详述。
[0098]
步骤306、确定待背书提案属性对的第二哈希值。
[0099]
在本实施例中,基于哈希函数,能够确定待背书提案属性对的第二哈希值。其中,哈希函数能够将任意大小的数据转换为固定大小的哈希值来实现数据的压缩和转换。
[0100]
在本实施例的一些可选方式中,确定待背书提案属性对的第二哈希值的步骤包括:
[0101]
步骤3061、确定待背书提案属性对的key值和时间戳timestamp。
[0102]
在本实施例中,key值即为链码打包后的待背书提案,其中,key值和时间戳timestamp可通过服务器向终端获取,时间戳即待背书提案的生成时间。
[0103]
步骤3062、根据key值和时间戳timestamp,确定待背书提案属性对的第二哈希值。
[0104]
在本实施例中,基于哈希函数,确定待背书提案属性对的第二哈希值,其中,以哈希环的地址空间范围为[0,2
32-1]为例,基于哈希函数的第二哈希值计算公式如下:
[0105]
hash(key+timestamp)=(key+timestamp)mod(2
32-1)
[0106]
其中,key为链码打包后的待背书提案,timestamp为待背书提案的生成时间,作为hash函数的输入;mod为取模函数,其运算方式为:(x)mod(y):取模函数,运算为(x)mod(y)=x%y。实际应用中,可以通过byte(key)的方式确定待背书提案对应的二进制数值,以及通过byte(timestamp)确定时间戳对应的二进制数值,并将得到的二进制数值作为hash函数的输入。
[0107]
步骤307、根据第二哈希值,确定待背书提案属性对在预设哈希环上的第二标记位置。
[0108]
在本实施例中,在获取到第二哈希值后,能够将第二哈希值映射到哈希环上。以图4为例,哈希环的地址空间范围是[0,2
32-1],把区间首尾相连,形成一个顺时针增长的哈希环,例如,hash(key)所在的第二标记位置为m0,不同的待背书提案属性对对应的第二哈希值不同,相应的第二标记位置必然不同,标记方式即按照第二哈希值在哈希环上的映射关系进行标注。
[0109]
步骤308、根据第一标记位置、第二标记位置以及背书数量,从在线节点中确定背书节点。
[0110]
在本实施例中,在确定了第一标记位置、第二标记位置以及背书数量后,能够从在线节点中确定背书节点。仍以图4为例进行说明,在线节点的数量为4个,设置背书数量为3,即需要从4个在线节点中,确定3个背书节点。例如,可以通过第一标记位置与第二标记位置的位置关系进行选取,可按照逆时针或顺时针顺序寻找距离第二标记位置较近的第一标记位置,即可从在线节点中确定背书节点。另外,还可以通过确定在线节点的权重,按照权重顺序,选取靠前的在线节点作为背书节点。
[0111]
在本实施例的一些可选方式中,步骤308进一步包括:
[0112]
步骤3081、以第二标记位置为起点,沿预设哈希环,在第一标记位置中顺时针查找前n个第一标记位置。
[0113]
在本实施例中,仍以图4为例进行说明,以第二标记位置为起点,例如m0,沿预设哈希环,在第一标记位置(n0、n1、n2、n3)中顺时针查找前n个第一标记位置,例如n=3时,由于哈希环是沿顺时针方向增长的,由此,前3个第一标记位置即n1、n2、n3。
[0114]
步骤3082、将前n个第一标记位置对应的在线节点作为背书节点,其中,n为背书数量,n为大于0的自然数。
[0115]
在本实施例中,仍以前述示例进行说明,已经确定前3个第一标记位置为n1、n2、n3,进一步根据第一标记位置与在线节点的映射关系,能够确定第一标记位置实际对应的在线节点,例如n1、n2、n3分别对应的在线节点为peer0、peer1和peer3,并将peer0、peer1和peer3作为背书节点。需要说明的是,n为背书数量,即生成交易提案时指定的需要的背书节点的数量。
[0116]
步骤309、响应于确定任一背书节点为离线状态,重新确定背书节点,直至背书节点均为在线状态。
[0117]
在本实施例中,在确定背书节点后,将待背书提案属性对使用ca认证的背书节点公钥签名发送给相应背书节点进行背书,需要说明的是,相比于现有技术中,直接将待背书提案发送给背书节点的方式,本实施例加入时间戳(即生成时间)的目的在于,能够有效避免使用一致性哈希环算法和超时移除的处理方式时,网络被重放进行攻击的问题,其能够将交易均匀分配给每个背书节点,提高背书节点处理交易的速度。
[0118]
实际应用中,当背书节点突发故障无法提供服务时,终端提示发送背书节点失败,则服务器确定该背书节点丢失,该背书节点从在线状态变为离线状态,此时,为了保证整个联盟链网络的正常使用,可以基于步骤301-步骤308重新确定背书节点,直至所需的背书节点均为在线或未丢失状态。也就是说,当节点掉线时,能够自动排除掉线节点,从而大幅减少单点故障对系统造成的影响,保证联盟链网络的正常使用。
[0119]
本实施例提供的背书节点确定方法,相比于随机选取背书节点,而缺乏稳定性和一致性的方式,本实施例通过从在线节点顺时针查找距离最近的节点作为背书节点,提供了一种具有更强一致性、更高稳定性、负载情况更均衡的背书策略,其使每个在线节点都有成为背书节点的机会,缓解了节点的运算压力,实现背书节点的负载均衡,提高背书节点处理交易的速度和效率,减少算力浪费,资源得到最大化利用;此外,当节点掉线时,自动排除掉线节点,大幅减少单点故障对系统造成的影响,有效提高hyperledger fabric系统的性能。
[0120]
图5示出了本公开一个实施例提供的联盟链网络的账本更新方法的示意性流程图
500,其一般由服务器103执行,相应地,用于联盟链网络的账本更新装置一般设置于服务器103中。如图5所示,该方法包括以下步骤:
[0121]
步骤501、获取交易提案;
[0122]
步骤502、根据前述实施例的背书节点确定方法,确定与交易提案对应的背书节点;
[0123]
步骤503、基于背书节点,对交易提案进行模拟交易,得到模拟执行结果和签名背书;
[0124]
步骤504、根据模拟执行结果和签名背书,确定排序节点;
[0125]
步骤505、根据排序节点,对模拟执行结果和签名背书进行排序打包,得到区块文件;
[0126]
步骤506、确定联盟链网络中的领导节点和其他节点;
[0127]
步骤507、将区块文件广播至领导节点,更新领导节点的账本文件;
[0128]
步骤508、将区块文件由领导节点广播至其他节点,更新其他节点的账本文件。
[0129]
本实施例提供的联盟链网络的账本更新方法,通过动态指定背书节点,能够实现背书节点的负载均衡,提高背书节点处理交易的速度和效率,并应用在联盟链网络的账本更新中,能够优化hyperledger fabric的交易流程,提高系统交易速度。
[0130]
下面对图5的每个步骤进行详细阐述。
[0131]
步骤501、获取交易提案。
[0132]
在本实施例中,用户在终端构造并提交交易提案请求。在这个阶段,终端会把交易请求调用的智能合约名称、参数等数据发送到服务器中区块链的一些被人工指定的背书节点上,否则会根据默认配置发送给通道中所有节点/大多数节点。
[0133]
步骤502、根据前述实施例的背书节点确定方法,确定与交易提案对应的背书节点
[0134]
区别于现有技术中人工指定背书节点导致操作上需要使用者了解背书相关知识,有一定的使用门槛,本实施例能够根据前述实施例的背书节点确定方法,确定与交易提案对应的背书节点,能够减少人工指定的手工步骤,降低使用门槛,大幅提高系统易用性。
[0135]
步骤503、基于背书节点,对交易提案进行模拟交易,得到模拟执行结果和签名背书。
[0136]
在本实施例中,执行模拟交易并对结果进行签名。具体的:背书节点解析收到的数据,并且执行相应的智能合约,使用节点上的证书对执行结果签名,然后将交易结果的读写集、交易的唯一哈希值返回给终端。
[0137]
步骤504、根据模拟执行结果和签名背书,确定排序节点。
[0138]
在本实施例中,根据模拟执行结果和签名背书构建交易请求并提交至排序服务节点。排序节点收到交易请求后,会对交易背书结果的读写集、证书等情况进行核验,只有读写集和证书符合要求、各节点背书结果一致的时候才会准备将交易排序分发到整个网络。
[0139]
步骤505、根据排序节点,对模拟执行结果和签名背书进行排序打包,得到区块文件。
[0140]
在本实施例中,排序节点会根据指定的算法(如raft算法、kafka等),将交易按顺序生成账本文件,每收集到一定数量或一定大小的交易、或者隔了一段时间以后都会截断一个账本文件,形成“区块文件”,后面的交易将放到新的区块中。
[0141]
步骤506、确定联盟链网络中的领导节点和其他节点。
[0142]
在本实施例中,联盟链网络中的领导节点个其他节点为现有技术,本技术在此不再赘述。
[0143]
步骤507、将区块文件广播至领导节点,更新领导节点的账本文件。
[0144]
在本实施例中,排序节点会将区块文件广播至组织中的人工指定的领导节点存入文档数据库并更新状态数据库,以更新领导节点的账本文件。
[0145]
步骤508、将区块文件由领导节点广播至其他节点,更新其他节点的账本文件。
[0146]
在本实施例中,领导节点同步广播给其他节点,例如,领导节点将这些区块文件同步分发给组织中的其他节点,存入文档数据库并更新状态数据库,以更新其他节点的账本文件。
[0147]
本实施例提供的联盟链网络的账本更新方法,通过前述实施例的动态指定背书节点,能够实现背书节点的负载均衡,提高背书节点处理交易的速度和效率,并应用在联盟链网络的账本更新中,能够优化hyperledger fabric的交易流程,提高系统交易速度。
[0148]
进一步参考图6,作为对上述各图所示的背书节点确定方法的实现,本公开提供了一种背书节点确定装置600的一个实施例,应用于联盟链网络,该装置与图2所示的方法实施例相对应,该装置具体可以应用于服务器中。
[0149]
如图6所示,该背书节点确定装置600包括:
[0150]
第一获取模块601,被配置为获取待背书提案和联盟链网络在线节点;
[0151]
第一确定模块602,被配置为确定待背书提案的生成时间和背书数量;
[0152]
拼接模块603,被配置为对待背书提案和生成时间进行拼接处理,得到待背书提案属性对;
[0153]
第二确定模块604,被配置为根据待背书提案属性对以及背书数量,从在线节点中确定背书节点,其中,背书节点的数量与背书数量一致。
[0154]
在本实施例的一些可选方式中,第二确定模块进一步包括:
[0155]
第一哈希值确定单元,被配置为确定在线节点的第一哈希值;
[0156]
第一标记单元,被配置为根据第一哈希值,确定在线节点在预设哈希环上的第一标记位置;
[0157]
第二哈希值确定单元,被配置为确定待背书提案属性对的第二哈希值;
[0158]
第二标记单元,被配置为根据第二哈希值,确定待背书提案属性对在预设哈希环上的第二标记位置;
[0159]
背书节点确定单元,被配置为根据第一标记位置、第二标记位置以及背书数量,从在线节点中确定背书节点。
[0160]
在本实施例的一些可选方式中,第一哈希值确定单元进一步被配置为:确定在线节点的ip地址;根据ip地址,确定在线节点的第一哈希值;第二哈希值确定单元进一步被配置为:确定待背书提案属性对的key值和时间戳timestamp;根据key值和时间戳timestamp,确定待背书提案属性对的第二哈希值。
[0161]
在本实施例的一些可选方式中,背书节点确定单元进一步被配置为:
[0162]
以第二标记位置为起点,沿预设哈希环,在第一标记位置中顺时针查找前n个第一标记位置;
[0163]
将前n个第一标记位置对应的在线节点作为背书节点,其中,n为背书数量,n为大于0的自然数。
[0164]
在本实施例的一些可选方式中,预设哈希环的地址空间范围为[0,2
32-1]。
[0165]
在本实施例的一些可选方式中,还包括:更新模块,被配置为:响应于确定任一背书节点为离线状态,重新确定背书节点,直至背书节点均为在线状态。
[0166]
进一步参考图7,作为对上述各图所示的联盟链网络的账本更新方法的实现,本公开提供了一种联盟链网络的账本更新装置700的一个实施例,该装置与图5所示的方法实施例相对应,该装置具体可以应用于服务器中。
[0167]
如图7所示,该联盟链网络的账本更新装置700包括:
[0168]
第二获取模块701,被配置为获取交易提案;
[0169]
第三确定模块702,被配置为前述的背书节点确定装置,确定与交易提案对应的背书节点;
[0170]
模拟交易模块703,被配置为基于背书节点,对交易提案进行模拟交易,得到模拟执行结果和签名背书;
[0171]
排序节点确定模块704,被配置为根据模拟执行结果和签名背书,确定排序节点;
[0172]
排序打包模块705,被配置为根据排序节点,对模拟执行结果和签名背书进行排序打包,得到区块文件;
[0173]
第四确定模块706,被配置为确定联盟链网络中的领导节点和其他节点;
[0174]
第一更新模块707,被配置为将区块文件广播至领导节点,更新领导节点的账本文件;
[0175]
第二更新模块708,被配置为将区块文件由领导节点广播至其他节点,更新其他节点的账本文件。
[0176]
本公开的技术方案中,所涉及的数据的获取,存储、使用和处理等,均符合相关法律法规的规定,且不违背公序良俗。
[0177]
根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
[0178]
一种电子设备,包括:至少一个处理器;以及与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行前述实施例的背书节点确定方法或联盟链网络的账本更新方法。
[0179]
一种存储有计算机指令的非瞬时计算机可读存储介质,其中,计算机指令用于使计算机执行前述实施例的背书节点确定方法或联盟链网络的账本更新方法。
[0180]
一种计算机程序产品,包括计算机程序,计算机程序在被处理器执行时实现前述实施例的背书节点确定方法或联盟链网络的账本更新方法。
[0181]
图8示出了可以用来实施本公开的实施例的示例电子设备800的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限
制本文中描述的和/或者要求的本公开的实现。
[0182]
如图8所示,设备800包括计算单元801,其可以根据存储在只读存储器(rom)802中的计算机程序或者从存储单元808加载到随机访问存储器(ram)803中的计算机程序,来执行各种适当的动作和处理。在ram 803中,还可存储设备800操作所需的各种程序和数据。计算单元801、rom 802以及ram 803通过总线804彼此相连。输入/输出(i/o)接口805也连接至总线804。
[0183]
设备800中的多个部件连接至i/o接口805,包括:输入单元806,例如键盘、鼠标等;输出单元807,例如各种类型的显示器、扬声器等;存储单元808,例如磁盘、光盘等;以及通信单元809,例如网卡、调制解调器、无线通信收发机等。通信单元809允许设备800通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
[0184]
计算单元801可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元801的一些示例包括但不限于中央处理单元(cpu)、图形处理单元(gpu)、各种专用的人工智能(ai)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(dsp)、以及任何适当的处理器、控制器、微控制器等。计算单元801执行上文所描述的各个方法和处理,例如背书节点确定方法或联盟链网络的账本更新方法。
[0185]
例如,在一些实施例中,背书节点确定方法或联盟链网络的账本更新方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元808。在一些实施例中,计算机程序的部分或者全部可以经由rom 802和/或通信单元809而被载入和/或安装到设备800上。当计算机程序加载到ram 803并由计算单元801执行时,可以执行上文描述的背书节点确定方法或联盟链网络的账本更新方法的一个或多个步骤。备选地,在其他实施例中,计算单元801可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行背书节点确定方法或联盟链网络的账本更新方法。
[0186]
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、芯片上系统的系统(soc)、负载可编程逻辑设备(cpld)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
[0187]
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
[0188]
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合
适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或快闪存储器)、光纤、便捷式紧凑盘只读存储器(cd-rom)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
[0189]
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,crt(阴极射线管)或者lcd(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
[0190]
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(lan)、广域网(wan)和互联网。
[0191]
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,也可以为分布式系统的服务器,或者是结合了区块链的服务器。
[0192]
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
[0193]
上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。
技术特征:
1.一种背书节点确定方法,应用于联盟链网络,其特征在于,包括:获取待背书提案和联盟链网络的在线节点;确定所述待背书提案的生成时间和背书数量;对所述待背书提案和所述生成时间进行拼接处理,得到待背书提案属性对;根据所述待背书提案属性对以及所述背书数量,从所述在线节点中确定背书节点,其中,所述背书节点的数量与所述背书数量一致。2.根据权利要求1所述的方法,其特征在于,所述根据所述待背书提案属性对以及所述背书数量,从所述在线节点中确定背书节点,包括:确定所述在线节点的第一哈希值;根据所述第一哈希值,确定所述在线节点在预设哈希环上的第一标记位置;确定所述待背书提案属性对的第二哈希值;根据所述第二哈希值,确定所述待背书提案属性对在预设哈希环上的第二标记位置;根据所述第一标记位置、第二标记位置以及背书数量,从所述在线节点中确定背书节点。3.根据权利要求2所述的方法,其特征在于,所述确定所述在线节点的第一哈希值,包括:确定所述在线节点的ip地址;根据所述ip地址,确定所述在线节点的第一哈希值;所述确定所述待背书提案属性对的第二哈希值,包括:确定所述待背书提案属性对的key值和时间戳timestamp;根据所述key值和时间戳timestamp,确定所述待背书提案属性对的第二哈希值。4.根据权利要求2所述的方法,其特征在于,所述根据所述第一标记位置、第二标记位置以及背书数量,从所述在线节点中确定背书节点,包括:以所述第二标记位置为起点,沿所述预设哈希环,在所述第一标记位置中顺时针查找前n个第一标记位置;将所述前n个第一标记位置对应的在线节点作为背书节点,其中,n为所述背书数量,n为大于0的自然数。5.根据权利要求4所述的方法,其特征在于,所述预设哈希环的地址空间范围为[0,2
32-1]。6.根据权利要求1-5任一项所述的方法,其特征在于,还包括:响应于确定任一背书节点为离线状态,重新确定背书节点,直至所述背书节点均为在线状态。7.一种联盟链网络的账本更新方法,其特征在于,包括:获取交易提案;根据权利要求1-6任一项所述的背书节点确定方法,确定与所述交易提案对应的背书节点;基于所述背书节点,对所述交易提案进行模拟交易,得到模拟执行结果和签名背书;根据所述模拟执行结果和签名背书,确定排序节点;根据所述排序节点,对所述模拟执行结果和签名背书进行排序打包,得到区块文件;确定联盟链网络中的领导节点和其他节点;
将所述区块文件广播至所述领导节点,更新所述领导节点的账本文件;将所述区块文件由所述领导节点广播至所述其他节点,更新所述其他节点的账本文件。8.一种背书节点确定装置,应用于联盟链网络,其特征在于,包括:第一获取模块,被配置为获取待背书提案和联盟链网络的在线节点;第一确定模块,被配置为确定所述待背书提案的生成时间和背书数量;拼接模块,被配置为对所述待背书提案和所述生成时间进行拼接处理,得到待背书提案属性对;第二确定模块,被配置为根据所述待背书提案属性对以及所述背书数量,从所述在线节点中确定背书节点,其中,所述背书节点的数量与所述背书数量一致。9.一种联盟链网络的账本更新装置,其特征在于,包括:第二获取模块,被配置为获取交易提案;第三确定模块,被配置为根据权利要求8所述的背书节点确定装置,确定与所述交易提案对应的背书节点;模拟交易模块,被配置为基于所述背书节点,对所述交易提案进行模拟交易,得到模拟执行结果和签名背书;排序节点确定模块,被配置为根据所述模拟执行结果和签名背书,确定排序节点;排序打包模块,被配置为根据所述排序节点,对所述模拟执行结果和签名背书进行排序打包,得到区块文件;第四确定模块,被配置为确定联盟链网络中的领导节点和其他节点;第一更新模块,被配置为将所述区块文件广播至所述领导节点,更新所述领导节点的账本文件;第二更新模块,被配置为将所述区块文件由所述领导节点广播至所述其他节点,更新所述其他节点的账本文件。10.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1至6任一项所述的背书节点确定方法的步骤或权利要求7所述的联盟链网络的账本更新方法的步骤。11.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至6任一项所述的背书节点确定方法的步骤或权利要求7所述的联盟链网络的账本更新方法的步骤。12.一种计算机程序产品,包括计算机程序/指令,其特征在于,该计算机程序/指令被处理器执行时实现权利要求1至6任一项所述的背书节点确定方法的步骤或权利要求7所述的联盟链网络的账本更新方法的步骤。
技术总结
本公开提供了一种背书节点确定方法、联盟链网络的账本更新方法及装置,涉及区块链技术领域,也可用于金融领域。具体实现方案为:获取待背书提案和联盟链网络的在线节点;确定待背书提案的生成时间和背书数量;对待背书提案和生成时间进行拼接处理,得到待背书提案属性对;根据待背书提案属性对以及背书数量,从在线节点中确定背书节点,其中,背书节点的数量与背书数量一致。本申请通过从在线节点中动态确定背书节点,能够使每个在线节点都有成为背书节点的机会,缓解了节点的运算压力,实现背书节点的负载均衡,提高背书节点处理交易的速度。度。度。
技术研发人员:陈宜珩 苏恒 曾钊创 彭顺求
受保护的技术使用者:中国工商银行股份有限公司
技术研发日:2023.04.27
技术公布日:2023/9/22
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
航空商城 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/