CN117036038B - 一种基于联盟链的交易处理方法、装置、设备及存储介质 - Google Patents
一种基于联盟链的交易处理方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN117036038B CN117036038B CN202311304571.XA CN202311304571A CN117036038B CN 117036038 B CN117036038 B CN 117036038B CN 202311304571 A CN202311304571 A CN 202311304571A CN 117036038 B CN117036038 B CN 117036038B
- Authority
- CN
- China
- Prior art keywords
- transaction
- node
- index
- consensus
- proxy
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000003672 processing method Methods 0.000 title abstract description 20
- 238000000034 method Methods 0.000 claims abstract description 107
- 230000004044 response Effects 0.000 claims description 76
- 238000012545 processing Methods 0.000 claims description 61
- 230000002159 abnormal effect Effects 0.000 claims description 39
- 238000004590 computer program Methods 0.000 claims description 16
- 230000007704 transition Effects 0.000 claims description 14
- 238000012216 screening Methods 0.000 claims description 13
- 230000008569 process Effects 0.000 description 50
- 238000010586 diagram Methods 0.000 description 35
- 238000004891 communication Methods 0.000 description 10
- 238000012795 verification Methods 0.000 description 10
- 230000005856 abnormality Effects 0.000 description 8
- 238000004422 calculation algorithm Methods 0.000 description 8
- 230000007246 mechanism Effects 0.000 description 6
- 230000000644 propagated effect Effects 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 238000004806 packaging method and process Methods 0.000 description 5
- 230000009286 beneficial effect Effects 0.000 description 4
- 238000001514 detection method Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000003993 interaction Effects 0.000 description 3
- 239000000725 suspension Substances 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 238000012797 qualification Methods 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3827—Use of message hashing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
- H04L67/1042—Peer-to-peer [P2P] networks using topology management mechanisms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
- H04L67/1059—Inter-group management mechanisms, e.g. splitting, merging or interconnection of groups
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
- H04L67/1074—Peer-to-peer [P2P] networks for supporting data block transmission mechanisms
- H04L67/1078—Resource delivery mechanisms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Finance (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Strategic Management (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Development Economics (AREA)
- Technology Law (AREA)
- Computer Security & Cryptography (AREA)
- Marketing (AREA)
- Economics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例公开了一种基于联盟链的交易处理方法、装置、设备及存储介质,该方法包括:获取业务对象发送的业务交易,为所述业务交易配置交易索引序号,基于所述交易索引序号对所述第一代理节点所维护的第一交易全局索引进行索引更新,得到第一交易全局更新索引;将所述业务交易和所述第一交易全局更新索引添加至第一心跳信息;将所述第一心跳信息广播至所述分组i中的第一共识节点;将所述第一心跳信息发送至位于所述分组j中的第二代理节点,以使所述第二代理节点基于所述第一心跳信息生成第二心跳信息时,将所述第二心跳信息广播至所述分组j中的第二共识节点。采用本发明实施例,可提高区块链中交易广播效率。
Description
技术领域
本发明涉及区块链技术领域,尤其涉及一种基于联盟链的交易处理方法、装置、设备及存储介质。
背景技术
现有的区块链中的交易传播模式是一种用于在整个联盟链上的任意两个节点之间进行交易广播的方式,这意味着当联盟链里边的某个节点(例如,节点A)接收到某笔业务交易后,会无差别的将这笔业务交易发送给在整个联盟链中的其他节点(例如,节点B、节点C和节点D)。那么,对于其他节点为节点B而言,在接收到这笔业务交易时,会将这笔业务交易广播给该联盟链中除自己之外的其他节点,即该节点B不仅会将这笔交易反向广播给节点A,也会将这笔交易同步广播给节点C和节点D。
基于此,发明人在实践中发现,对于联盟链上的N(例如,N=100)个节点所在的整个区块链网络而言,当该区块链网络中的任意一个节点基于该交易广播方式进行交易广播时,需要将自己当前所获取到的交易广播给该整个区块链网络中除自己以外的所有剩余节点(例如,这里可以是N-1=99个节点),以至于对于任意一个节点而言,会基于该交易广播方式进行N-1次交易广播,所以,在整个区块链网络中的这N个节点进行共识之前,为确保整个区块链网络中的每个节点均接收到这边交易,将会在整个区块链网络中会存在N( N-1)次交易广播。换言之,当采用现有的交易传播模式在整个区块链网络中进行全网性的交易广播时,不仅会导致某个节点收到大量重复交易,且会造成有限网络资源的资源浪费,以至于降低了整个区块链网络的交易广播效率。
发明内容
本申请实施例提供一种基于联盟链的交易处理方法、装置、设备及存储介质,可以在基于联盟链进行业务交易时,提升交易传播效率。
本申请实施例一方面提供了一种基于联盟链的交易处理方法,方法由交易骨干网络中的第一代理节点执行,交易骨干网络是由N个分组对应的N个代理节点所确定的;N为大于1的正整数;一个分组对应一个代理节点;N个分组是对联盟链中的共识节点进行节点分组后所确定的;N个分组包括分组i和分组j;第一代理节点为分组i中的代理节点;i和j均为小于或者等于N的正整数,且i不等于j;方法包括:
获取业务对象发送的业务交易,为业务交易配置交易索引序号,基于交易索引序号对第一代理节点所维护的第一交易全局索引进行索引更新,得到第一交易全局更新索引;
将业务交易和第一交易全局更新索引添加至第一心跳信息;
将第一心跳信息广播至分组i中的第一共识节点;第一共识节点为分组i中除第一代理节点之外的共识节点;
将第一心跳信息发送至位于分组j中的第二代理节点,以使第二代理节点在基于第一心跳信息生成第二心跳信息时,将第二心跳信息广播至分组j中的第二共识节点;第二共识节点为分组j中除第二代理节点之外的共识节点;第一心跳信息和第二心跳信息中均包含业务交易。
本申请实施例一方面提供了一种基于联盟链的交易处理方法,方法由交易骨干网络所关联的分组i中的第一共识节点执行,交易骨干网络是由N个分组对应的N个代理节点所确定的;N为大于1的正整数;一个分组对应一个代理节点;N个分组是对联盟链中的共识节点进行节点分组后所确定的;N个分组包括分组i和分组j;i和j均为小于或者等于N的正整数,且i不等于j;方法包括:
接收第一代理节点广播的第一心跳信息;第一代理节点为分组i中的代理节点;第一心跳信息是由业务对象发送的业务交易和第一交易全局更新索引所确定的;第一交易全局更新索引所是基于为业务交易配置交易索引序号,对第一代理节点所维护的第一交易全局索引进行索引更新之后得到的;第一代理节点还用于将第一心跳信息发送至位于分组j中的第二代理节点,以使第二代理节点在基于第一心跳信息生成第二心跳信息时,将第二心跳信息广播至分组j中的第二共识节点;第二共识节点为分组j中除第二代理节点之外的共识节点;第一心跳信息和第二心跳信息中均包含业务交易;
在交易投票时长内基于第一共识节点中的每个共识节点所得到的交易投票信息,确定的第一心跳信息对应的第一心跳响应信息,向第一代理节点返回针对业务交易的心跳响应信息。
本申请实施例一方面提供了一种基于联盟链的交易处理装置,装置运行在交易骨干网络中的第一代理节点上,交易骨干网络是由N个分组对应的N个代理节点所确定的;N为大于1的正整数;一个分组对应一个代理节点;N个分组是对联盟链中的共识节点进行节点分组后所确定的;N个分组包括分组i和分组j;第一代理节点为分组i中的代理节点;i和j均为小于或者等于N的正整数,且i不等于j;装置包括:
业务交易处理模块,用于获取由业务对象发送的业务交易,为业务交易配置交易索引序号,基于交易索引序号对第一代理节点所维护的第一交易全局索引进行索引更新,得到第一交易全局更新索引;
心跳信息配置模块,用于将业务交易和第一交易全局更新索引添加至第一心跳信息;
第一发送模块,用于将第一心跳信息广播至分组i中的第一共识节点;第一共识节点为分组i中除第一代理节点之外的共识节点;
第二发送模块,用于将第一心跳信息发送至位于分组j中的第二代理节点,以使第二代理节点基于第一心跳信息生成第二心跳信息时,将第二心跳信息广播至分组j中的第二共识节点;第二共识节点为分组j中除第二代理节点之外的共识节点;第一心跳信息和第二心跳信息中均包含业务交易。
其中,业务对象包括第一业务对象和第二业务对象;
业务交易处理模块包括:
交易获取单元,用于获取第一业务对象针对第一业务事件发送的第一交易,获取第二业务对象针对第二业务事件发送的第二交易;第一交易和第二交易均为业务对象所发送的业务交易中的交易;第二交易不同于第一交易;
交易索引序号配置单元,用于将为第一交易配置的交易索引序号作为第一交易索引序号,将为第二交易配置的交易索引序号作为第二交易索引序号;第一交易索引序号和第二交易索引序号均为交易索引序号中的序号;
第一交易全局索引获取单元,用于从第一代理节点的节点内存中获取第一代理节点针对分组i所维护的交易全局索引,将获取到的交易全局索引作为第一交易全局索引;
交易全局索引更新单元,用于基于第一交易索引序号和第二交易索引序号,对第一交易全局索引进行索引更新,得到第一交易全局更新索引。
其中,交易全局索引更新单元包括:
交易时间戳获取子单元,用于获取第一交易的交易获取时间戳和第二交易的交易获取时间戳;
交易索引序号确定子单元,用于在第一交易的交易获取时间戳早于第二交易的交易获取时间戳时,确定第一交易的第一交易索引序号小于第二交易的第二交易索引序号;
第一交易全局索引更新子单元,用于通过第一交易索引序号对第一交易全局索引进行第一索引更新,将索引更新后的第一交易全局索引确定为交易全局过渡索引;
第二交易全局索引更新子单元,用于通过第二交易索引序号对所交易全局过渡索引进行第二索引更新,将索引更新后交易全局过渡索引确定为第一交易全局更新索引。
其中,获取第一业务对象针对第一业务事件发送的第一交易;
交易获取单元包括:
第一交易确定子单元,用于接收第一业务对象通过第一业务终端发送的与第一业务事件相关联的第一业务事件信息,将接收到的第一业务事件信息中的交易作为第一交易。
其中,N个分组包括独立于分组i和分组j的分组k;分组k中的代理节点为部署在交易骨干网络中的第三代理节点;k为小于或者等于N的正整数,其中,k不等于i,且k不等于j;
交易获取单元还包括:
待处理交易全局索引获取子单元,用于接收位于第三代理节点针对第二业务事件发送的第三心跳信息,从第三心跳信息中获取由第三代理节点所维护的第二交易全局索引,将获取到的第二交易全局索引作为第一待处理交易全局索引;
第一索引对比子单元,用于将第一待处理交易全局索引与第一交易全局索引进行第一索引比对,得到第一索引对比结果;
第一交易获取请求子单元,用于若第一索引对比结果指示第一待处理交易全局索引的第二索引高度大于第一交易全局索引的第一索引高度,则确定第一索引高度和第二索引高度之间的第一索引高度差值,向第三代理节点发送针对第一索引高度差值的交易获取请求;
第二交易确定子单元,用于接收第三代理节点基于交易获取请求返回的与第一索引高度差值相匹配的第一差值交易,将接收到的第一差值交易作为第二交易。
其中,交易获取单元还包括:
索引高度差确定子单元,用于若第一索引对比结果指示第一待处理交易全局索引的第二索引高度小于第一交易全局索引的第一索引高度,则确定第一索引高度和第二索引高度之间的第二索引高度差值;
第一交易索引序号更新子单元,用于获取与第二索引高度差值相匹配的交易,将获取到的与第二索引高度差值相匹配的交易作为第二差值交易,将第二差值交易发送给第三代理节点,以使第三代理节点为第二差值交易配置用于对第二交易全局索引进行索引更新的交易索引序号。
其中,第一共识节点包括用于进行交易广播的M1个共识节点;M1为正整数;
装置还包括:
第一心跳响应信息接收模块,用于接收M1个共识节点返回的M1个心跳响应信息;一个共识节点用于返回一个心跳响应信息,且一个心跳响应信息是由一个共识节点在交易投票时长内所得到的交易投票信息所确定的;交易投票信息是针对接收到的第一心跳信息中的业务交易进行交易投票之后所得到的;
交易投票信息获取模块,用于从接收到的M1个心跳响应信息中,获取针对业务交易的交易投票信息;
交易投票信息统计模块,用于对获取到的交易投票信息进行信息统计,得到信息统计结果;
节点状态信息确定模块,用于若信息统计结果指示在M1个共识节点中存在达到1/2M1的共识节点均确定获取到第一心跳信息,则确定第一代理节点的节点状态为节点连接状态。
节点状态信息确定模块,还用于若信息统计结果指示在M1个共识节点中存在未达到1/2M1的共识节点均确定获取到第一心跳信息,则确定第一代理节点的节点状态为节点异常状态。
其中,当第一代理节点的节点状态为节点异常状态时,在M1个共识节点中查找与代理节点更新条件相匹配的第一目标共识节点,且将查找到的第一目标共识节点作为第一代理节点的代理更新节点;代理节点更新条件用于指示在M1个共识节点中确定具备交易连续属性和交易索引序号最大化的第一目标共识节点。
其中,第一共识节点包括用于进行交易广播的M1个共识节点;M1为正整数;
装置还包括:
心跳信息数量统计模块,用于接收第一共识节点中的每个共识节点返回的心跳信息,统计接收到的心跳信息的信息数量;
共识节点状态确定模块,用于若信息数量达到M1个,则确定M1个共识节点中的每个共识节点的节点状态均为节点连接状态;
共识节点状态确定模块,还用于若信息数量未达到M1个,则在M1个共识节点中将接收到心跳信息的共识节点作为连接正常共识节点,且将M1个共识节点中除连接正常共识节点之外的共识节点作为连接异常共识节点。
其中,第一代理节点为分组i中的第二目标共识节点;第二目标共识节点是基于与联盟链相关联的代理节点更新条件所确定的;代理节点更新条件用于指示在分组i所包含的所有共识节点中所确定的具备交易连续属性和交易索引序号最大化的第二目标共识节点;
装置还包括:
代理节点更新模块,用于在分组i所对应的历史代理节点的节点状态为节点异常状态时,将具备交易连续属性和交易索引序号最大化的第二目标共识节点作为历史代理节点的代理更新节点;历史代理节点的代理更新节点为第一代理节点。
本申请实施例一方面提供了一种基于联盟链的交易处理装置,装置运行交易骨干网络所关联的分组i中的第一共识节点上,交易骨干网络是由N个分组对应的N个代理节点所确定的;N为大于1的正整数;一个分组对应一个代理节点;N个分组是对联盟链中的共识节点进行节点分组后所确定的;N个分组包括分组i和分组j;i和j均为小于或者等于N的正整数,且i不等于j;装置包括:
心跳信息接收模块,用于接收第一代理节点广播的第一心跳信息;第一代理节点为分组i中的代理节点;第一心跳信息是由业务对象发送的业务交易和第一交易全局更新索引所确定的;第一交易全局更新索引所是基于为业务交易配置交易索引序号,对第一代理节点所维护的第一交易全局索引进行索引更新之后得到的;第一代理节点还用于将第一心跳信息发送至位于分组j中的第二代理节点,以使第二代理节点在基于第一心跳信息生成第二心跳信息时,将第二心跳信息广播至分组j中的第二共识节点;第二共识节点为分组j中除第二代理节点之外的共识节点;第一心跳信息和第二心跳信息中均包含业务交易;
心跳信息返回模块,用于在交易投票时长内基于第一共识节点中的每个共识节点所得到的交易投票信息,确定的第一心跳信息对应的第一心跳响应信息,向第一代理节点返回针对业务交易的心跳响应信息。
其中,第一共识节点包括用于进行交易广播的M1个共识节点;M1为正整数;
装置还包括:
第一目标共识节点查找模块,用于在第一代理节点的节点状态处于节点异常状态时,在M1个共识节点中查找与代理节点更新条件相匹配的第一目标共识节点;
第一代理节点替换模块,用于将查找到的第一目标共识节点,确定为在分组i中用于替换第一代理节点的代理更新节点。
其中,代理节点更新条件包括交易连续属性子条件和交易索引序号最大化子条件;
第一目标共识节点查找模块包括:
连续性交易查找单元,用于基于交易连续属性子条件所指示的交易连续属性,在M1个共识节点所获取到的交易广播数据集中,查找存在具有连续性交易索引序号的多笔交易的共识节点,得到第一交易查找结果;
第一候选共识节点确定单元,用于若第一交易查找结果指示在M1个共识节点中查找到存在具有连续性交易索引序号的多笔交易的共识节点,则将查找到的具有连续性交易索引序号的多笔交易的共识节点,作为第一候选共识节点;
索引序号最大化查找单元,用于基于交易索引序号最大化子条件所指示的交易索引序号最大化属性,在M1个共识节点所获取到的交易广播数据集中,查找存在具有交易索引序号最大化属性的交易的共识节点,得到第二交易查找结果;
第二候选共识节点确定单元,用于若第二交易查找结果指示在M1个共识节点中查找到存在具有交易索引序号最大化属性的交易的共识节点,则将查找到的具有交易索引序号最大化属性的交易的共识节点,作为第二候选共识节点;
第一目标共识节点确定单元,用于在第一候选共识节点、第二候选共识节点中,筛选满足交易连续属性和交易索引序号最大化属性的共识节点,基于筛选出的满足交易连续属性和交易索引序号最大化属性的共识节点,确定与代理节点更新条件相匹配的第一目标共识节点。
其中,代理节点更新条件包括节点投票子条件;
第一目标共识节点确定单元还包括:
第一节点筛选子单元,用于基于节点投票子条件在M1个共识节点中,筛选节点状态为节点连接状态的共识节点;
投票节点确定子单元,用于将筛选出的节点状态为节点连接状态的共识节点,作为与节点投票子条件相关联的投票节点;
第二节点筛选子单元,用于将筛选出的满足交易连续属性和交易索引序号最大化属性的共识节点作为第三候选共识节点;
投票处理子单元,用于在第三候选共识节点的节点数量为多个时,通过投票节点对第三候选共识节点进行投票处理,得到投票处理结果;
第一目标共识节点确定子单元,用于若投票处理结果指示第三候选共识节点中存在投票数量达到投票阈值的第三候选共识节点,则将投票数量达到投票阈值的第三候选共识节点,确定为与代理节点更新条件相匹配的第一目标共识节点;投票阈值是基于投票节点的节点数量所确定的。
第二目标共识节点确定子单元,用于将筛选出的满足交易连续属性和交易索引序号最大化属性的共识节点作为第三候选共识节点,在第三候选共识节点的节点数量为1个时,确定为与代理节点更新条件相匹配的第一目标共识节点。
装置还包括:
第二交易全局索引确定模块,用于在接收到第二代理节点广播的第二心跳信息时,将代理更新节点所维护的交易全局索引,作为第四交易全局索引;
第二索引对比模块,用于将第三交易全局索引和第四交易全局索引进行对比,得到第二索引对比结果;
第二交易获取请求模块,用于若第二索引对比结果指示第三交易全局索引的交易索引序号大于第四交易全局索引的交易索引序号,则在将第三交易全局索引和第四交易全局索引之间的索引高度差值作为第三索引高度差值时,向第二代理节点发送针对第三索引高度差值的交易获取请求;
第二交易索引序号更新模块,用于接收第二代理节点基于交易获取请求返回的与第三索引高度差值相匹配的第三差值交易,基于第四交易全局索引为第三差值交易配置差值交易索引序号,基于差值交易索引序号对代理更新节点所维护的第四交易全局索引进行索引更新。
装置还包括:
第三交易全局索引确定模块,用于获取代理更新节点的所维护的交易全局索引,作为第四交易全局索引,将第四交易全局索引添加至第四心跳信息,将第四心跳信息发送给第二代理节点;
第二心跳响应信息接收模块,用于接收第二代理节点返回的针对第四心跳信息的第二心跳响应信息;第二心跳响应信息携带第二代理节点所维护的第三交易全局索引;
第三索引对比模块,用于将第三交易全局索引和第四交易全局索引进行对比,得到第二索引对比结果;
第三交易获取请求模块,用于若第二索引对比结果指示第三交易全局索引的交易索引序号大于第四交易全局索引的交易索引序号,则在将第三交易全局索引和第四交易全局索引之间的索引高度差值作为第三索引高度差值时,向第二代理节点发送针对第三索引高度差值的交易获取请求;
第三交易索引序号更新模块,用于接收第二代理节点基于交易获取请求返回的与第三索引高度差值相匹配的第三差值交易,基于第四交易全局索引为第三差值交易配置差值交易索引序号,基于差值交易索引序号对代理更新节点所维护的第四交易全局索引进行索引更新。
本申请实施例一方面提供了一种计算机设备,包括存储器和处理器,存储器与处理器相连,存储器用于存储计算机程序,处理器用于调用计算机程序,以使得该计算机设备执行本申请实施例中上述一方面提供的方法。
本申请实施例一方面提供了一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序,计算机程序适于由处理器加载并执行,以使得具有处理器的计算机设备执行本申请实施例中上述一方面提供的方法。
根据本申请的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述一方面提供的方法。
本申请实施例可以在交易处理过程中,对联盟链所在的共识网络中的共识节点进行分组,以将这些共识节点划分到多个分组(例如,N个分组,这里的N为正整数)中,进而可以通过从这N个分组中所分别选取出的代理节点来协同构建得到一个用于提升交易传播效率的交易骨干网络。在该交易骨干网络中,对于任意一个分组中的代理节点(例如,分组i中的第一代理节点,i为小于N的正整数)而言,可以在获取到某笔交易(即业务交易)时,为该业务对象配置相应的交易索引序号,进而可以基于当前所配置的交易索引序号对其维护的第一交易全局索引进行索引更新,从而可以将索引更新后的第一交易全局索引作为第一交易全局更新索引。其中,可以理解的是,对于该分组i而言,第一代理节点为该分组i中的代理节点,为便于进行理解,本申请实施例可以将该分组i中除第一代理节点之外的共识节点统称为第一共识节点。同理,为便于进行区分,本申请实施例对于该交易骨干网络中的其他分组(例如,分组j,j为小于且不等于i的正整数)而言,可以将该分组j中的代理节点统称为第二代理节点,并将该分组j中除第二代理节点之外的共识节点统称为第二共识节点。应当理解,在本申请实施例中,对于各个分组中的不同代理节点(例如,第一代理节点和第二代理节点)而言,可以相互进行交易传播,但是,对于各个分组中的不同共识节点(例如,第一共识节点和第二共识节点)而言,则需要进行交易传播,而是通过自己所在分组中的代理节点来进行交易传播,这样,可以从根源上减少交易传播次数。比如,第一代理节点可以在将业务交易和第一交易全局更新索引添加至第一心跳信息之后,将第一心跳信息广播至分组i中的第一共识节点,还可以将携带业务交易和第一交易全局更新索引的第一心跳信息发送至分组j中的第二代理节点,以使第二代理节点基于第一心跳信息生成第二心跳信息,进而可以将第二心跳信息广播至分组j中的第二共识节点。由此可见,对于交易骨干网络中的任意一个代理节点(例如,分组i中的第一代理节点)而言,当该任意一个代理节点(例如,分组i中的第一代理节点)获取到某笔交易(即上述业务交易)之后,可以通过心跳信息的方式发送给自己所在分组(即分组i)中的共识节点(即分组i中的第一共识节点),还可以发送给其他分组中的代理节点(例如,分组j中的第二代理节点),这样,对于其他分组中的代理节点(例如,分组j中的第二代理节点)而言,可以通过自己当前所获取到的第一心跳信息来生成用于在自己所在分组中的进行交易广播的第二心跳信息,这意味着对于当前整个联盟链上的这些共识节点而言,并不会出现在不同分组中的共识节点(例如,第一共识节点和第二共识节点)之间进行交易传播的现象,这意味着通过本申请实施例所引入的交易骨干网络,可以有效地减少联盟链上的这些共识节点之间的交易传播范围和交易传播次数,进而可以从根源上提高交易传播效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种联盟链的系统结构示意图;
图2是本申请实施例提供的一种基于联盟链的交易处理场景交互示意图;
图3是本申请实施例提供的一种第一共识节点在分组i中进行交易广播的示意图;
图4是本申请实施例提供的一种基于联盟链的交易处理方法的示意图;
图5是本申请实施例提供的一种第一代理节点从第三代理节点获取第二交易的示意图;
图6是本申请实施例提供的一种第一代理节点将第二差值交易发送至第三代理节点的示意图;
图7是本申请实施例提供的种第一代理节点获取第一交易和第二交易后对交易全局索引进行索引更新的示意图;
图8是本申请实施例提供的一种检测第一代理节点的节点状态的示意图;
图9是本申请实施例提供的一种检测第一共识节点的节点状态的示意图;
图10是本申请实施例提供的一种联盟链中检测作恶节点的过程示意图;
图11是本申请实施例提供的又一种基于联盟链的交易处理方法的示意图;
图12是本申请实施例提供的再一种基于联盟链的交易处理方法的示意图;
图13是本申请实施例提供的一种基于代理节点更新条件更新第一代理节点的过程示意图;
图14是本申请实施例提供的一种基于联盟链的交易处理方法的时序图;
图15是本申请实施例提供的一种基于联盟链的交易处理装置的结构示意图;
图16是本申请实施例提供的又一种基于联盟链的交易处理装置的结构示意图;
图17是本申请实施例提供的一种计算机设备的结构示意图;
图18是本申请实施例提供的一种基于联盟链的交易处理系统的示意图。
具体实施方式
下面结合本发明实施例中的附图对本发明实施例进行描述。
请参见图1,图1是本发明实施例提供的一种联盟链的系统结构示意图。如图1所示的系统结构可以应用于区块链系统,该区块链系统可以是由多个节点通过网络通信的形式连接形成的分布式系统。其中,该区块链系统可以包含但不限于联盟链所对应的区块链系统。
其中,可以理解的是,区块链是一种分布式数据存储、点对点传输、共识机制以及加密算法等计算机技术的新型应用模式,主要用于对数据按时间顺序进行整理,并加密成账本,使其不可被篡改和伪造,同时可进行数据的验证、存储和更新。区块链本质上是一个去中心化的数据库,该数据库中的每个节点均维护一条区块链(例如,图1所示的联盟链10e)。
在本申请实施例中,在该区块链系统为联盟链所对应的区块链系统时,该联盟链可以为图1所示的联盟链10e。如图1所示,与该联盟链(例如,图1所示的联盟链10e)相关联的网络可以包含图1所示业务网络A12和共识网络A13。这里的业务网络A12独立于该共识网络A13。可以理解的是,本申请实施例可以将部署在业务网络A12、且无需负责全网共识的节点统称为业务节点,并可以将部署在共识网络A13、且需要负责全网共识的节点统称为共识节点。
其中,如图1所示,部署在的业务网络A12中的多个业务节点具体可以包括:业务节点110a、业务节点110b、业务节点110c、业务节点110d、业务节点110e、业务节点110f、业务节点110g、……、业务节点110n。如图1所示,该业务网络A12中的这些业务节点可以将相应的业务交易发送给共识网络A13中的共识节点,以使这些共识网络A13中的共识节点中的每个共识节点在获取到该业务交易之后,可以在将这边交易打包至某个区块,以便于后续在对该打包得到的区块进行区块共识之后,将该区块共识通过的这个区块上链至联盟链(即图1所示的联盟链10e)。
其中,如图1所示,部署在的共识网络A13中的多个共识节点具体可以包括:共识节点10a、共识节点10b、共识节点10c、共识节点10d、共识节点11a、共识节点11b、共识节点11c、共识节点11d、共识节点12a、共识节点12b、共识节点12c、共识节点12d、共识节点13a、共识节点13b、共识节点13c和共识节点13d。如图1所示,该共识网络A13中的这些共识节点(即共识节点10a、共识节点10b、共识节点10c、共识节点10d、共识节点11a、共识节点11b、共识节点11c、共识节点11d、共识节点12a、共识节点12b、共识节点12c、共识节点12d、共识节点13a、共识节点13b、共识节点13c和共识节点13d)均用于维护同一联盟链(即图1所示的联盟链10e)。应当理解,在本申请实施例中,该共识网络A13中的这些共识节点可以用于在交易广播阶段进行交易广播,并在交易打包阶段(即交易打包成区块阶段)由从这些共识节点中所选取的某个打包节点(例如,图1所示的共识节点10a)进行交易打包得到某个区块,以在区块广播阶段将这个区块在该共识网络A13中的这些共识节点之间进行区块广播,进而可以在该共识网络A13中的这些共识节点中的每个共识节点均获取到这个区块时,对这个区块进行区块共识。
其中,可以理解的是,为解决目前在交易广播阶段进行交易广播时,联盟链上的所有共识节点均会无差别接收到大量重复交易的现象,本申请实施例提出可以在该交易广播阶段,通过分组机制,将该联盟链所对应的共识网络(例如,图1所示的共识网络A13)中的共识节点进行分组,进而在通过分组得到N个分组之后,从该N个分组中的每个分组中分别选取出代理节点,从而可以通过从每个分组中所选取出的代理节点来构成一个用于提升交易传播效率的交易骨干网络,这意味着,本申请实施例可以在该交易广播阶段,通过用于构建组成该交易骨干网络的这些代理节点来进行交易传播。比如,本申请实施例所涉及的交易传播具体是指可以通过某个代理节点实现同一分组内的交易广播和不同分组之间的交易广播。
应当理解,本申请实施例在后续的交易打包阶段以及交易共识阶段,可以无需依赖该交易骨干网络来进行区块广播和共识投票,即后续可以在区块广播和共识投票过程中,在整个联盟链所在的共识网络中实现任意两个共识节点之间的区块广播。可选的,在一种或者多种可实现方式中,本申请实施例也可以在区块广播阶段,使用类似于该交易骨干网络的共识骨干网络来进行区块广播。其中,共识骨干网络的构建方式可以参见对交易骨干网络的构建方式的描述,这里将不再继续进行赘述。
如图1所示,本申请实施例可以通过分组机制将部署在联盟链所对应的共识网络(例如,图1所示的共识网络A13)中的共识节点进行分组,以将该共识网络A13中的这些共识节点(即共识节点10a、共识节点10b、共识节点10c、共识节点10d、共识节点11a、共识节点11b、共识节点11c、共识节点11d、共识节点12a、共识节点12b、共识节点12c、共识节点12d、共识节点13a、共识节点13b、共识节点13c和共识节点13d)划分至N个分组,这里的N为正整数,为便于理解,这里的N个分组可以包括图1所示的多个分组,且这里的多个分组具体可包含图1所示的分组A11、分组A22和分组A33以及分组A44,这里将不对该共识网络A13中分组的数量进行限定。
其中,可以理解的是,本申请实施例可以基于一定的节点划分机制来对该共识网络A13中的共识节点进行分组划分时,比如,本申请实施例可以将位于同一区域(例如,同一地理位置区域)中的共识节点划分至同一分组。比如,假设有地理位置区域A、地理位置区域B、地理位置区域C和地理位置区域D,则在基于地理位置区域进行节点划分时,可以将部署在地理位置区域A的共识节点(例如,共识节点10a、共识节点10b、共识节点10c、共识节点10d)划分为分组A11,同理的,将部署在地理位置区域B的共识节点(例如,共识节点11a、共识节点11b、共识节点11c、共识节点11d)划分为分组A22,将部署在地理位置区域C的共识节点(例如,共识节点12a、共识节点12b、共识节点12c、共识节点12d)划分为分组A33,将部署在地理位置区域D的共识节点(例如,共识节点13a、共识节点13b、共识节点13c和共识节点13d)划分为分组A44。
可选的,本申请实施例所涉及的节点划分机制还可以综合考虑每个分组中的共识节点的负载均衡,即本申请实施例在基于负载均衡进行节点划分时,可以对该共识网络A13中的这些共识节点的节点数量进行统计,比如,若该共识网络A13中的这些共识节点的节点数量由100个,则可以在将该共识网络A13中的这些共识节点划分到10个分组时,确保每个分组均可以有10个共识节点。可选的,本申请实施例为确保每个分组中的共识节点能够正常运行,还可以基于三大运营商网络来综合进行上述分组的划分,这样,当某个运营商网络出现问题时,还可以有其他运营商网络来正常维护对应分组中的共识节点之间的交易广播。基于此,本申请实施例在基于节点划分机制进行节点划分时,将不限定具体的节点划分方式。
其中,如图1所示的分组A11中部署有多个共识节点,这里的多个共识节点具体可以包含图1所示的共识节点10a、共识节点10b、共识节点10c、共识节点10d。其中,需要注意的是,这里将不对部署在该分组A11中的共识节点的数量进行限定。如图1所示,由部署在分组A11中的多个共识节点所维护的区块链可以为图1所示的联盟链10e。
同理,如图1所示的分组A22中部署有多个共识节点,这里的多个共识节点具体可以包含图1所示的共识节点11a、共识节点11b、共识节点11c、共识节点11d。其中,需要注意的是,这里将不对部署在该分组A22中的共识节点的数量进行限定。如图1所示,由部署在分组A22中的多个共识节点所维护的区块链可以为图1所示的联盟链10e。
以此类推,如图1所示的分组A33中部署有多个共识节点,这里的多个共识节点具体可以包含图1所示的共识节点12a、共识节点12b、共识节点12c、共识节点12d。其中,需要注意的是,这里将不对部署在该分组A33中的共识节点的数量进行限定。如图1所示,由部署在分组A33中的多个共识节点所维护的区块链可以为图1所示的联盟链10e。
同理,如图1所示的分组A44中部署有多个共识节点,这里的多个共识节点具体可以包含图1所示的共识节点13a、共识节点13b、共识节点13c、共识节点13d。其中,需要注意的是,这里将不对部署在该分组A44中的共识节点的数量进行限定。如图1所示,由部署在分组A44中的多个共识节点所维护的区块链可以为图1所示的联盟链10e。
可以理解的是,如图1所示的业务网络A12为与共识网络A13具有关联关系(例如,交易发送关系)的业务网络。其中,在如图1所示的业务网络A12中部署有多个业务节点,这里的多个业务节点具体可以包含图1所示的业务节点110a、业务节点110b、业务节点110c、业务节点110d、业务节点110e、业务节点110f、业务节点110g、…、业务节点110n。其中,需要注意的是,这里将不对部署在该业务网络A12中的业务节点的数量进行限定。
其中,部署在共识网络A13中的共识节点可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。部署在业务网络A12中的业务节点可以包括:智能手机、平板电脑、笔记本电脑、掌上电脑、移动互联网设备(mobile internet device,MID)、智能语音交互设备、智能家电(例如智能电视等)以及车载设备等集成有区块链客户端的电子设备。
进一步的,本申请实施例提出在共识网络A13中的分组A11、分组A22和分组A33以及分组A44中分别确定出代理节点,每个分组中确定的代理节点构成交易骨干网络,用于传播交易信息。其中,为便于对上述联盟链中的共识节点进行区分,可以将分组A11中的共识节点10b,作为该分组A11中的代理节点(即第一代理节点),将分组A22中的共识节点11a,作为分组A22中的代理节点,将分组A33中的共识节点12d,作为分组A33中的代理节点,将分组A44中的共识节点13c,作为分组A44中的代理节点,并将代理节点11a、代理节点12d以及代理节点13c统称为第二代理节点。
可选的,在一个或者多个可实现方式中,为便于对每个分组中的代理节点进行区分,本申请实施例还可以将分组A22中的共识节点11a称之为第二代理节点,并将分组A33中的共识节点12d称之为第三代理节点,以及将分组A44中的共识节点13c称之为第四代理节点。应当理解,本申请实施例将不对从每个分组中所选取出的代理节点的名称进行限定。比如,可以将分组A33中的共识节点12d称之为第四代理节点,以及将分组A44中的共识节点13c称之为第三代理节点。
应当理解,本申请实施例可以通过从每个分组中所选取出的代理节点(例如,图1所示的代理节点10b、代理节点11a、代理节点12d和代理节点13c),来构建得到用于提升交易传播效果的交易骨干网络(即图1所示的交易骨干网络A14)。相应的,将分组A11中除第一代理节点10b之外的共识节点叫做第一共识节点,同理的,将除分组A11之外的分组(例如,图1所示的分组A22、分组A33以及分组A44)中除第二代理节点(即代理节点11a、代理节点12d和代理节点13c)之外的共识节点叫做第二共识节点。
为便于理解,本申请实施例以N个分组中的任意两个分组(例如,分组i和分组j)为例,阐述在同一分组中进行交易广播和在不同分组之间进行交易广播的具体过程。进一步的,请参见图2,图2是本申请实施例提供的一种基于联盟链的交易处理场景交互示意图。其中,如图2所示的分组200a可以为N个分组中的分组i,该分组i具体可以为上述图1所对应实施例中的分组A11,另外,如图2所示的分组200b可以为N个分组中的分组j,这里的分组j具体可以为上述图1所对应实施例中的分组A22。
其中,如图2所示,当前划分至分组200a中的共识节点具体可以包含图2所示的共识节点20a、共识节点20b、共识节点20c和共识节点20d。为便于理解,本申请实施例可以将从分组200a中所选取的共识节点20a作为代理节点,并将从该分组200a中所确定的代理节点作为该分组200a中的第一代理节点,与此同时,本申请实施例可以在在该分组200a中将除当前所选取的代理节点(共识节点20a)之外的共识节点(即图2所示的共识节点20b、共识节点20c和共识节点20d)作为该分组200a中的第一共识节点。
以此类推,其中,如图2所示,当前划分至分组200b中的共识节点具体可以包含图2所示的共识节点21a、共识节点21b、共识节点21c和共识节点21d。为便于理解,本申请实施例可以将从分组200b中所选取的共识节点21a作为代理节点,并将从该分组200b中所确定的代理节点作为该分组200b中的第二代理节点,与此同时,本申请实施例可以在该分组200b中将除当前所选取的代理节点(共识节点21a)之外的共识节点(即图2所示的共识节点21b、共识节点21c和共识节点21d)作为该分组200b中的第二共识节点。
其中,如图2所示,执行步骤S1,用户A(即业务对象)可以通过图2所示的业务终端201a向分组200a中的共识节点20a(即第一代理节点)发送图2所示的交易TX1(即业务交易)。
其中,应当理解,图2所示的共识节点20a(即第一代理节点)在获取到该交易TX1(即业务交易)时,为确保交易广播的可靠性和安全性,本申请实施例可以在对该交易TX1(即业务交易)进行交易广播之前,获取该交易TX1(即业务交易)中所携带的交易签名信息,并可以在获取到的该用户A(即业务对象)的公钥时,通过该用户A(即业务对象)的公钥对该交易TX1(即业务交易)进行签名验证,进而可以在签名验证成功之后,执行图2所示的步骤S2,以将该交易TX1(即业务交易)进一步广播给位于同一分组(即图2所示的分组200a)中的第一共识节点,比如,如图2所示,共识节点20a(即第一代理节点)具体可以在签名验签成功之后,将该交易TX1(即业务交易)广播给图2所示的共识节点20b、共识节点20c和共识节点20d。
应当理解,为确保该联盟链所对应的共识网络中的每个共识节点均可以获取到该交易TX1(即业务交易),本申请实施例所涉及的共识节点20a(即第一代理节点)还可以在该交易广播阶段执行图2所示的步骤S3,以将交易TX1(即业务交易)广播至与该第一代理节点位于同一交易骨干网络中的其他代理节点。比如,如图2所示,共识节点20a(即第一代理节点)还可以将该交易TX1(即业务交易)广播至分组200b中的共识节点21a(即第二代理节点),进而可以通过共识节点21a(即第二代理节点)将交易TX1(即业务交易)广播至位于同一分组中的其他共识节点(即图2所示的第二共识节点)。
换言之,可以理解的是,如图2所示的共识节点21a(即第二代理节点)在获取到第一代理节点所广播来的交易TX1(即业务交易)之后,也可以在该交易广播阶段执行图2所示的步骤S4,以将交易TX1(即业务交易)进一步广播至位于同一分组(即图2所示的分组200b)中的第二共识节点,比如,如图2所示,共识节点21a(即第二代理节点)具体可以将该交易TX1(即业务交易)广播给图2所示的共识节点21b、共识节点21c和共识节点21d。
其中,可选的,可以理解的是,共识节点21a(即第二代理节点)在获取到第一代理节点所广播来的交易TX1之后,也可以使用整个联盟链所对应的共识网络中所公开的该用户A的公钥,对该交易TX1中所携带的交易签名信息进行签名验证,进而可以在签名验签成功之后,确定该交易TX1(即业务交易)确实是由用户A(即业务对象)所发起的交易的情况下,将交易TX1(即业务交易)进一步广播至位于同一分组(即图2所示的分组200b)中的第二共识节点(即图2所示的共识节点21b、共识节点21c和共识节点21d),这样可以避免非法用户在第一代理节点向第二代理节点发送该交易TX1(即业务交易)的过程中,对该交易TX1(即业务交易)的非法拦截和对该交易TX1中的交易参数的非法篡改,进而可以间接反映当前用于广播该交易TX1(业务交易)的第一代理节点为合法节点。
应当理解,这里的第二代理节点所起到的交易广播作用类似于上述第一代理节点,即该第二代理节点和第一代理节点均可以进一步将自己当前所获取到的这笔交易TX1(即业务交易),广播至位于同一交易骨干网络中的其他代理节点(例如,第三代理节点,第三代理节点所在的分组未在图2上示出,比如,这里的第三代理节点具体可以为上述图1所对应实施例中的分组A33中的代理节点)。其中,应当理解,第二代理节点和第三代理节点对该交易TX1(即业务交易)进行同一分组内的交易广播和不同分组内的交易广播的广播过程,可以一并参见上述对第一代理节点进行交易广播的具体过程的描述,这里将不再继续进行赘述。
进一步的,请参见图3,图3是本申请实施例提供的一种第一共识节点在分组i中进行交易广播的示意图,如图3所示的分组300a可以为上述图2所对应实施例中的分组200a,部署在该分组300a中的共识节点具体可以包括图3所示的共识节点30a、共识节点30b、共识节点30c和共识节点30d。为便于进行理解,本申请实施例可以将该分组300a中的共识节点30a作为上述第一代理节点,并将该分组300a中除共识节点30a之外的其他共识节点(例如,共识节点30b、共识节点30c和共识节点30d)作为上述第一共识节点。
其中,如图3所示,用户B(即业务对象)可以通过图3所示的业务终端301a向分组300a中的共识节点30a(即第一代理节点)发送交易TX2(即业务交易)。
其中,应当理解,图3所示的共识节点30a(即第一代理节点)在获取到该交易TX2(即业务交易)时,为确保交易广播的可靠性和安全性,本申请实施例可以在对该交易TX2(即业务交易)进行交易广播之前,获取该交易TX2(即业务交易)中所携带的交易签名信息,并可以在获取到的该用户B(即业务对象)的公钥时,通过该用户B(即业务对象)的公钥对该交易TX2(即业务交易)进行签名验证,进而可以在签名验证成功之后,将该交易TX2(即业务交易)进一步广播给位于同一分组(即图3所示的分组300a)中的第一共识节点,比如,如图3所示,共识节点30a(即第一代理节点)具体可以在签名验签成功之后,将该交易TX2(即业务交易)广播给图3所示的共识节点30b、共识节点30c和共识节点30d。
应当理解,为确保位于分组300a内所有的共识节点均可获取到该交易TX2(即业务交易),图3所示的第一共识节点(即共识节点30b、共识节点30c和共识节点30d)获取到该交易TX2时,会将该交易TX2(即业务交易)在该分组300a中进行广播。
比如,共识节点30b(即第一共识节点)在获取到该交易TX2(即业务交易)时,会将该交易TX2(即业务交易)广播给位于同一分组(即图3所示分组300a)内的其他共识节点(即图3所示共识节点30a、共识节点30c和共识节点30d)。同理,共识节点30c(即第一共识节点)在获取到该交易TX2(即业务交易)时会将该交易TX2(即业务交易)广播给位于同一分组(即图3所示分组300a)内的其他共识节点(即图3所示共识节点30a、共识节点30b和共识节点30d)。以此类推,共识节点30d(即第一共识节点)在获取到该交易TX2(即业务交易)时会将该交易TX2(即业务交易)广播给位于同一分组(即图3所示分组300a)内的其他共识节点(即图3所示共识节点30a、共识节点30b和共识节点30c)。
其中,可选的,可以理解的是,第一共识节点(即共识节点30b、共识节点30c和共识节点30d)在获取到第一代理节点所广播来的交易TX2(即业务交易)之后,也可以使用整个联盟链所对应的共识网络中所公开的该用户B的公钥,对该交易TX2(即业务交易)中所携带的交易签名信息进行签名验证,进而可以在签名验签成功之后,确定该交易TX2(即业务交易)确实是由用户B(即业务对象)所发起的交易的情况下,将交易TX2(即业务交易)进一步在分组300a中进行广播。
需要说明的是,本申请实施例中的计算机设备(例如,上述图2所示的业务终端201a)在构建得到用于发送给第一代理节点的业务交易(例如,上述图2所示的交易TX1)的过程中,若该交易TX1为与电子票据相关联的交易(例如,电子票据开具交易、电子票据转移交易),则可能涉及到在需要获取与该电子票据相关联的用户、企业、机构等业务对象的业务数据(例如,用户的开票信息、征信信息、退税信息等,企业的进出亏、企业资质等信息)时,可以显示提示界面或者弹窗,该提示界面或者弹窗用于提示用户当前正在搜集用户、企业、机构等业务对象的业务数据(例如,用户的开票信息、征信信息、退税信息等,企业的进出亏、企业资质等信息),仅仅在获取到用户对该提示界面或者弹窗发出确认操作后,开始执行数据获取的相关的步骤,否则结束。
可以理解的是,在本申请的具体实施方式中,业务对象在构建得到业务交易的过程中,若业务交易为与电子票据相关联的交易,则可能涉及将获取到的用户、企业、机构等业务对象的业务数据(例如,用户的开票信息、征信信息、退税信息等,企业的进出亏、企业资质等信息),作为该业务交易的交易参数,来构建得到该业务交易,当本申请以上实施例运用到具体产品或技术中时,需要获得用户、企业、机构等业务对象的许可或同意,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
其中,第一代理节点获取业务交易后,将业务交易广播至第一共识节点和交易骨干网络中的第二代理节点以及第二代理节点将业务交易广播至第二共识节点的具体过程,可以参见图4至图14所对应的实施例。
进一步的,请参见图4,图4是本申请实施例提供的一种基于联盟链的交易处理方法的示意图,如图4所示,方法可以由上述图1 所对应实施例中部署在分组A11中的第一代理节点10b执行,第一代理节点10b为处于分组A11中的共识节点。方法具体可以包括以下步骤S101- S104。
步骤S101,获取业务对象发送的业务交易,为业务交易配置交易索引序号,基于交易索引序号对第一代理节点所维护的第一交易全局索引进行索引更新,得到第一交易全局更新索引;
其中,本申请实施例中所涉及的业务对象可以包括第一业务对象和第二业务对象;
具体的,第一代理节点可以获取第一业务对象针对第一业务事件发送的第一交易,并获取第二业务对象针对第二业务事件发送的第二交易;第一交易和第二交易均为业务对象所发送的业务交易中的交易,并且第二交易不同于第一交易;进一步的,第一代理节点可以将为第一交易配置的交易索引序号作为第一交易索引序号,且可以将为第二交易配置的交易索引序号作为第二交易索引序号;其中,应当理解,第一交易索引序号和第二交易索引序号均为交易索引序号中的序号;进一步的,第一代理节点可以从第一代理节点的节点内存中获取第一代理节点针对分组i所维护的交易全局索引,并将获取到的交易全局索引作为第一交易全局索引;进一步的,第一代理节点可以基于第一交易索引序号和第二交易索引序号,对第一交易全局索引进行索引更新,得到第一交易全局更新索引。
应当理解,在本申请实施例中,对于每个分组中的代理节点而言,均可以用于维护一个交易全局索引,可以理解的是,本申请实施例所涉及的全局交易索引是代理节点根据由自己当前所获取到的这些交易的交易索引序号中的最大交易索引序号所确定的。这样,对于不同分组中的代理节点而言,可以通过各自所维护的交易全局索引来确定出各自所需要同步的索引高度差值所对应的差值交易。
其中,应当理解,以第一代理节点为例,可以对该第一代理节点所获取到的每笔业务交易配置相应的交易索引序号。应当理解,在本申请实施例中,可以将与业务终端相关联的代理节点称之为第一代理节点,此时,该第一代理节点可以用于接收业务终端所对应的业务对象提交的每笔业务交易。
其中,代理节点(即第一代理节点)对每笔业务交易的交易索引序号的配置方式具体可以为对获取到的每笔业务交易的交易索引序号进行递增处理(例如,进行加一处理)。
这样,第一代理节点在获取第一笔交易(比如,该第一笔交易具体可以为整个共识网络中的共识节点所获取到的首笔交易)时,可以对该第一笔交易进行交易编号,并可以将交易编码后所得到的编号(例如,1)称之为该第一笔交易的交易索引序号,即此时,该第一笔交易的交易索引序号可以为1。为便于理解,这里以代理节点(例如,第一代理节点)在T1时刻获取到的交易TX1作为第一笔交易为例,此时,该代理节点(例如,第一代理节点)为交易TX1(即第一笔交易)所配置的交易索引序号可以为1。
同理,代理节点(例如,第一代理节点)在T2时刻获取到另一笔交易时,可以对当前所获取到的另一笔交易的交易索引序号进行递增处理(比如,进行加一处理)。比如,代理节点(例如,第一代理节点)在T2时刻获取到另一笔交易为交易TX2(即第二笔交易)时,该代理节点(例如,第一代理节点)为交易TX2(即第二笔交易)所配置的交易索引序号可以为2;以此类推,对于代理节点(例如,第一代理节点)在TN时刻获取到交易TXN(即第N笔交易)而言,该代理节点(例如,第一代理节点)为交易TXN(即第N笔交易)所配置的交易索引序号可以为N。其中,应当理解,T1时刻小于T2时刻,T2时刻小于T3时刻,以此类推,T(N-1)时刻小于TN时刻。进一步的,本申请实施例中将不对交易索引序号的具体配置方式进行限定,比如,本申请实施例还可以以倍数递增的方式(例如,2倍数递增的方式)进行交易索引序号的配置。
其中,第一代理节点获取第一交易的具体实现方式可以为:第一代理节点可以接收第一业务对象通过第一业务终端发送的与第一业务事件相关联的第一业务事件信息,将接收到的第一业务事件信息中的交易作为第一交易。其中,这里的第一业务事件信息具体可以为上述针对上述电子票据相关联的事件信息(例如,即第一业务对象发起的开票事件信息或者票据转移事件信息等)。可选的,这里的第一业务事件信息具体还可以为针对某种虚拟资源进行资源转移的资源转移事件信息,这里将不对第一业务事件信息的具体事件信息内容进行具体限定。
另外,可以理解的是,若该第一代理节点为在该分组i中的历史代理节点处于节点异常状态(例如,节点掉线状态)时,在该分组i中的(M1+1)个共识节点中所最新选取的代理节点,则该第一代理节点可以在当前被选择成为该分组i中的代理节点时,接收业务终端(例如,第一业务对象所对应的第一业务终端)所发送来的第一交易,还可以接收该第一代理节点所在交易骨干网络中的其他代理节点(例如,分组j中的第二代理节点或者分组k中的第三代理节点)所发送来的交易。为便于理解,本申请实施例可以将分组k中的第三代理节点所发送(即跨分组传播)来的交易称之为第二交易。
应当理解,在该分组i中的代理节点由历史代理节点更新为该第一代理节点时,第一代理节点获取第二交易的具体实现方式可以为:第一代理节点可以接收第三代理节点针对第二业务事件发送的第三心跳信息,并可以从第三心跳信息中获取由第三代理节点所维护的第二交易全局索引,进而可以将获取到的第二交易全局索引作为第一待处理交易全局索引;进一步的,第一代理节点可以将第一待处理交易全局索引与第一交易全局索引进行第一索引比对,得到第一索引对比结果;进一步的,若第一索引对比结果指示第一待处理交易全局索引的第二索引高度大于第一交易全局索引的第一索引高度,则第一代理节点可以确定第一索引高度和第二索引高度之间的第一索引高度差值,并可以向第三代理节点发送针对第一索引高度差值的交易获取请求;进一步的,第一代理节点可以接收第三代理节点基于交易获取请求返回的与第一索引高度差值相匹配的第一差值交易,将接收到的第一差值交易作为第二交易。
其中,为便于理解,请参见图5,图5是本申请实施例中一种第一代理节点从第三代理节点获取第二交易的示意图。其中,为便于理解,本申请实施例可以将共识节点50a作为上述第一代理节点,且将共识节点50b作为上述第三代理节点。
具体的,如图5所示,获取共识节点50a(即第一代理节点)所维护的交易的交易索引序号,其中,交易索引序号为1,2,3,4,这里,将最大的交易索引序号4赋值给a1,得到共识节点50a(即第一代理节点)所维护的交易全局索引501a(即a1=4),进而得到交易全局索引501a(即a1=4)的索引高度H1,这里的索引高度H1=a1=4,将其作为第一索引高度(即H1=4);同理,获取共识节点50b(即第二代理节点)所收到的交易的交易索引序号,其中,交易索引序号为1,2,3,4,5,6,这里,将最大的交易索引序号6赋值给a2,得到共识节点50b(即第二代理节点)所维护的交易全局索引501b(即a2=6),进而得到交易全局索引501b(即a2=6)的索引高度H2,这里的索引高度H2=a2=6,将其作为第二索引高度(即H2=6)。其中,可以理解的是,这里的交易全局索引501a(即a1=4)为上述第一交易全局索引,且交易全局索引501b(即a2=6)为上述第二交易全局索引。
进一步的,共识节点50b(即第三代理节点)向共识节点50a(即第一代理节点)发送交易全局索引501b(即a2=6),共识节点50a(即第一代理节点)接收共识节点50b(即第三代理节点)所发送的交易全局索引501b(即a2=6),并将获取到的交易全局索引501b(即a2=6)作为第一待处理交易全局索引;进一步的,共识节点50a(即第一代理节点)将自己所维护的交易全局索引501a(即a1=4)与交易全局索引501b(即第一待处理交易全局索引,a2=6)进行第一次索引比对,得到第一索引对比结果。应当理解,交易全局索引501b(即a2=6)的索引高度(即第二索引高度,H2=6)大于交易全局索引501a(即a1=4)的索引高度(即第一索引高度,H1=4)。进一步的,共识节点50a(即第一代理节点)可以确定交易全局索引501a(即a1=4)的索引高度(即第一索引高度,H1=4)与交易全局索引501b(即a2=6)的索引高度(即第二索引高度,H2=6)之间的第一索引高度差值(即H0=H2-H1=2),并向共识节点50b(即第二代理节点)发送针对第一索引高度差值的交易获取请求。进一步的,共识节点50a(即第一代理节点)接收共识节点50b(即第三代理节点)基于交易获取请求返回的与第一索引高度差值相匹配的第一差值交易,如图5所示,即交易TX5和交易TX6,并将接收到的第一差值交易(即交易TX5和交易TX6)作为第二交易。
其中,可选的,若该第一代理节点为在该分组i中的历史代理节点处于节点异常状态(例如,节点掉线状态)时,在该分组i中的(M1+1)个共识节点中所最新选取的代理节点,则该第一代理节点可以在当前被选择成为该分组i中的代理节点时,除了向该第一代理节点所在交易骨干网络中的其他代理节点(例如,分组j中的第二代理节点或者分组k中的第三代理节点)发送业务终端(例如,第一业务对象所对应的第一业务终端)所发送来的第一交易,还可以向该第一代理节点所在交易骨干网络中的其他代理节点(例如,分组j中的第二代理节点或者分组k中的第三代理节点)发送第二差值交易。为便于理解,本申请实施例可以将向分组k中的第三代理节点所发送(即跨分组传播)的交易称之为第二差值交易。
具体的,应当理解,在该分组i中的代理节点由历史代理节点更新为该第一代理节点时,第一代理节点向第三代理节点发送第二差值交易的具体实现方式可以为:第一代理节点可以接收第三代理节点针对第二业务事件发送的第三心跳信息,并可以从第三心跳信息中获取由第三代理节点所维护的第二交易全局索引,进而可以将获取到的第二交易全局索引作为第一待处理交易全局索引;进一步的,第一代理节点可以将第一待处理交易全局索引与第一交易全局索引进行第一索引比对,得到第一索引对比结果;进一步的,若第一索引对比结果指示第一待处理交易全局索引的第二索引高度小于第一交易全局索引的第一索引高度,则第一代理节点可以确定第一索引高度和第二索引高度之间的第二索引高度差值;进一步的,第一代理节点可以获取与第二索引高度差值相匹配的交易,并且可以将获取到的与第二索引高度差值相匹配的交易作为第二差值交易,进而可以将第二差值交易发送给第三代理节点,以使第三代理节点为第二差值交易配置用于对第二交易全局索引进行索引更新的交易索引序号。
其中,为便于理解,请参见图6,图6是本申请实施例中一种第一代理节点将第二差值交易发送至第三代理节点的示意图。其中,为便于理解,本申请实施例可以将共识节点60a作为上述第一代理节点,且将共识节点60b作为上述第三代理节点。
具体的,如图6所示,这里获取共识节点60a(即第一代理节点)维护交易全局索引601a和共识节点60b(即第三代理节点)维护交易全局索引601b的过程可参见上述图5所对应实施例对获取共识节点50a所维护的交易全局索引的过程,这里将不再进行赘述。将交易全局索引601a作为第一交易全局索引,得到交易全局索引601a(即第一交易全局索引)的索引高度,将其作为第一索引高度(例如,如图6所示H3=4);同理,共识节点60b(即第三代理节点)维护交易全局索引601b,将交易全局索引601b作为第二交易全局索引,得到交易全局索引601b(即第二交易全局索引)的索引高度,将其作为第二索引高度(例如,如图6所示H4=2)。
进一步的,共识节点60b(即第三代理节点)向共识节点60a(即第一代理节点)发送交易全局索引601b(即第二交易全局索引),共识节点60a(即第一代理节点)接收共识节点60b(即第三代理节点)所发送的交易全局索引601b(即第二交易全局索引),并将获取到的交易全局索引601b(即第二交易全局索引)作为第一待处理交易全局索引;进一步的,共识节点60a(即第一代理节点)将自己所维护的交易全局索引601a(即第一交易全局索引)与交易全局索引601b(即第一待处理交易全局索引)进行第一索引比对,得到第一索引对比结果。应当理解,交易全局索引601b(即第一待处理交易全局索引)的索引高度(即第二索引高度,H4=2)小于交易全局索引601a(即第一交易全局索引)的索引高度(即第一索引高度,H3=4),进一步的,共识节点60a(即第一代理节点)确定交易全局索引601a(即第一交易全局索引)的索引高度(即第一索引高度,H3=4)与交易全局索引601b(即第一待处理交易全局索引)的索引高度(即第二索引高度,H4=2)之间的第二索引高度差值(即H5=H3-H4=2)。进一步的,共识节点60a(即第一代理节点)获取第二索引高度差值(即H5=H3-H4=2)相匹配的交易,并将获取到的第二索引高度差值(即H5=H3-H4=2)相匹配的交易作为第二差值交易,如图6所示,即交易TX3和交易TX4。进一步的,共识节点60a(即第一代理节点)将第二差值交易(交易TX3和交易TX4)发送给共识节点60b(即第三代理节点),进而以使共识节点60b(即第三代理节点)为第二差值交易(交易TX3和交易TX4)配置用于对第二交易全局索引进行索引更新的交易索引序号。
其中,应当理解,通过图5和图6所对应实施例可以确保整个联盟链所对应的代理节点(例如,上述第一代理节点)能够在分组i中的历史代理节点处于异常状态(例如,节点掉线)时,基于自己维护的交易全局索引与交易骨干网络中其余代理节点(例如,上述第三代理节点)维护的交易全局索引进行第一索引比对,从而根据第一索引比对结果,进而使交易骨干网络中的代理节点进行交易同步,以使得交易骨干网络中的代理节点均能维护自己接收的交易的完整性,以便于后续的交易广播。
另外,可以理解的是,第一代理节点可以获取第一交易的交易获取时间戳和第二交易的交易获取时间戳;进一步的,第一代理节点可以在第一交易的交易获取时间戳早于第二交易的交易获取时间戳时,确定第一交易的第一交易索引序号小于第二交易的第二交易索引序号;进一步的,第一代理节点可以通过第一交易索引序号对第一交易全局索引进行第一索引更新,并将索引更新后的第一交易全局索引确定为交易全局过渡索引;进一步的,第一代理节点可以通过第二交易索引序号对所交易全局过渡索引进行第二索引更新,并且将索引更新后交易全局过渡索引确定为第一交易全局更新索引。
进一步的,请参见图7,图7是本申请实施例提供的一种第一代理节点获取第一交易和第二交易后对交易全局索引进行索引更新的示意图。如图7所示,为便于理解,本申请实施例可以将共识节点70a作为上述第一代理节点,并将共识节点70b作为上述第三代理节点。用户A(即业务对象)通过业务终端700a向共识节点70a(即第一代理节点)发送交易TX4,将交易TX4作为第一交易;共识节点70b(即第二代理节点)向共识节点70a(即第一代理节点)发送第二交易,这里的第二交易可以为上述图5所对应实施例中所对应的交易TX5和交易TX6。
其中,共识节点70a(即第一代理节点)获取第一交易(即交易TX4)的获取时间戳可以为T3,将其作为第一获取时间戳;获取第二交易(即交易TX5和交易TX6)的获取时间戳可以为T4,将其作为第二获取时间戳。其中,共识节点70a(即第一代理节点)根据获取时间戳的早晚对交易索引序号进行配置,对获取时间戳早的优先配置交易索引序号。
进一步的,共识节点70a(即第一代理节点)对第一获取时间戳(即T3)和第二获取时间戳(即T4)进行比对,得到第一获取时间戳对比结果,第一获取时间戳对比结果指示第一获取时间戳(即T3)早于第二获取时间戳(即T4),进一步的,因此第一交易(即交易TX4)的第一交易索引序号小于第二交易(即交易TX5和交易TX6)的第二交易索引序号。进一步的,共识节点70a(即第一代理节点)对其所维护的交易全局索引701a进行第一索引更新。这里,共识节点70a(即第一代理节点)获取其所维护的交易全局索引701a的过程可参见上述图5所对应实施例对获取共识节点50a所维护的交易全局索引的过程,这里将不再进行赘述。具体的,共识节点70a(即第一代理节点)为第一交易(即交易TX4)配置交易索引序号,配置的交易索引序号为4,将其作为第一交易索引序号,进而得到交易全局索引701b,并且将其作为交易全局过渡索引;这里,共识节点70a(即第一代理节点)得到交易全局索引701b的过程可参见上述图5所对应实施例对获取共识节点50a所维护的交易全局索引的过程,这里将不再进行赘述。进一步的,共识节点70a(即第一代理节点)可以对其所维护的交易全局索引701b进行第二索引更新。具体的,共识节点70a(即第一代理节点)为第二交易(即交易TX5和交易TX6)配置交易索引序号。其中,可以理解的是,上述图5所对应实施例中,交易TX5的获取时间戳早于交易TX6的获取时间戳,进而为交易TX5配置交易索引序号,配置的交易索引序号为5,为交易TX6配置交易索引序号,配置的交易索引序号为6,将为交易TX5和交易TX6配置的交易索引序号作为第二交易索引序号(即交易索引序号5和6),进而得到交易全局索引701c,并且将其作为交易全局过渡索引,进一步的,共识节点70a(即第一代理节点)可以将交易全局索引701c作为第一交易全局更新索引。这里,共识节点70a(即第一代理节点)得到交易全局索引701c的过程可参见上述图5所对应实施例对获取共识节点50a所维护的交易全局索引的过程,这里将不再进行赘述。
步骤S102,将业务交易和第一交易全局更新索引添加至第一心跳信息;
其中,具体的,业务交易可以为上述图7所对应实施例中的交易(即交易TX4、交易TX5和交易TX6),第一交易全局更新索引可以为上述图7所对应实施例中的交易全局索引701c;应当理解,第一代理节点将业务交易和第一交易全局更新索引添加至第一心跳信息后,第一心跳信息中可携带如上述图7所对应实施例中的交易(交易TX1,交易TX2,交易TX3,交易TX4,交易TX5,交易TX6),还携带第一交易全局更新索引的交易哈希。进一步的,第一代理节点执行下述步骤S103-步骤S104。
步骤S103,将第一心跳信息广播至分组i中的第一共识节点;
其中,应当理解,这里的第一共识节点包括用于进行交易广播的M1个共识节点;且M1为正整数;
进一步的,第一代理节点在将第一心跳信息广播至分组i中的第一共识节点之后,第一代理节点可以接收上述M1个共识节点返回的M1个心跳响应信息;其中,一个共识节点用于返回一个心跳响应信息,并且一个心跳响应信息是由一个共识节点在交易投票时长内所得到的交易投票信息所确定的;其中,交易投票信息是针对接收到的第一心跳信息中的业务交易进行交易投票之后所得到的;进一步的,第一代理节点可以从接收到的M1个心跳响应信息中,获取针对业务交易的交易投票信息;进一步的,第一代理节点可以对获取到的交易投票信息进行信息统计,得到信息统计结果;其中,应当理解,若信息统计结果指示在M1个共识节点中存在达到1/2M1的共识节点均确定获取到第一心跳信息,可以确定第一代理节点的节点状态为节点连接状态;进一步的,应当理解,若信息统计结果指示在M1个共识节点中存在未达到1/2/>M1的共识节点均确定获取到第一心跳信息,则可以确定第一代理节点的节点状态为节点异常状态。
其中,这里的交易投票时长具体是指在第一代理节点发送第一心跳信息后,第一共识节点对第一代理节点发送的第一心跳信息中包含的业务交易进行接收并做投票交易投票处理的时长,其中这里的交易投票处理具体是指第一共识节点针对第一代理节点发送的第一心跳信息中的业务交易进行接收,进而得到交易投票信息。进一步的,第一共识节点针对交易投票信息确定心跳响应信息,并将心跳响应信息返回第一代理节点。
具体的,请参见图8,图8是本申请实施例中提供的一种检测第一代理节点的节点状态的示意图。如图8所示,包含共识节点80a、共识节点80b、共识节点80c和共识节点80d,这里可以将共识节点80d确定为上述第一代理节点,将共识节点80b、共识节点80c和共识节点80d确定为上述第一共识节点;其中,进一步的,这里取上述M1为3,将第一共识节点(即共识节点80b、共识节点80c和共识节点80d)作为用于进行交易广播的M1个共识节点。
具体的,如图8所示,共识节点80a(即第一代理节点)向第一共识节点(即共识节点80b、共识节点80c和共识节点80d)广播第一心跳信息,进一步的,第一代理节点(即共识节点80b、共识节点80c和共识节点80d)接收第一心跳信息,并且在交易投票时长内对第一心跳信息中的业务交易进行交易投票。具体的,如图8所示,共识节点80a(即第一代理节点)向第一共识节点(即共识节点80b、共识节点80c和共识节点80d)发送第一心跳信息。如图8所示,共识节点80a(即第一代理节点)向共识节点80b(即第一共识节点)发送第一心跳信息的过程出现异常,导致第一心跳信息未发送至共识节点80b(即第一共识节点),此时共识节点80b(即第一共识节点)接收不到第一心跳信息,进而无法生成心跳响应信息并返回给共识节点80a(即第一代理节点)。进一步的,如图8所示,共识节点80a(即第一代理节点)向共识节点80c(即第一共识节点)发送第一心跳信息的过程出现异常,导致第一心跳信息未发送至共识节点80c(即第一共识节点),此时共识节点80c(即第一共识节点)接收不到第一心跳信息,进而无法生成心跳响应信息并返回给共识节点80a(即第一代理节点)。进一步的,如图8所示,共识节点80a(即第一代理节点)向共识节点80d(即第一共识节点)发送第一心跳信息的过程正常,共识节点80d(即第一共识节点)基于接收到的第一心跳信息生成心跳响应信息,返回至共识节点80a(即第一代理节点)。
进一步的,共识节点80a(即第一代理节点)接收返回的心跳响应信息,并基于心跳响应信息中的交易投票信息进行信息统计,其中,交易投票统计信息801a中具体包含如图8所示。其中,应当理解,交易投票统计信息801a指示未收到共识节点80b和共识节点80c返回的第一节点未获取到第一心跳信息心跳响应信息,此时可以确定第一代理节点为连接异常状态。
其中,应当理解,导致如图8所示共识节点80a(即第一代理节点)为连接异常状态的情况可以为区块链网络出现异常,其中,若区块链网络异常出现在共识节点80a(即第一代理节点)获取到用户A发送的业务交易之前,则共识节点80a(即第一代理节点)无法获取到来自用户A发送的业务交易,进而无法进行第一心跳信息的配置。进一步的,若区块链网络异常出现在共识节点80a(即第一代理节点)获取到用户A发送的业务交易并且配置好第一心跳信息之后,此时共识节点80a(即第一代理节点)将无法向第一共识节点和交易骨干网络中的其他代理节点(例如,第二代理节点)广播第一心跳信息。进一步的,导致如图8所示共识节点80a(即第一代理节点)为连接异常状态的情况还可以为共识节点80a(即第一代理节点)自身网络接口存在异常,导致无法对用户A发送的业务交易进行获取,从而无法配置第一心跳信息,进而也无法向第一共识节点和交易骨干网络中的其他代理节点(例如,第二代理节点)广播第一心跳信息。进一步的,还可以为共识节点80a(即第一代理节点)因为自身系统问题而导致关机、掉线,以使得组内其他共识节点均接收不到发送的第一心跳信息。其中,应当理解,导致共识节点80a(即第一代理节点)为连接异常状态的情况可以有很多,这里将不对其进行所有情况的阐述。
其中,应当理解,上述图8所对应实施例中第一代理节点处于异常状态的情况为区块链网络出现异常,且区块链网络异常出现在共识节点80a(即第一代理节点)获取到用户A发送的业务交易并且配置好第一心跳信息之后。
其中,可选的,第一代理节点可以接收第一共识节点中的每个共识节点返回的心跳响应信息,进而统计接收到的心跳响应信息的信息数量;其中,若信息数量达到M1个,第一代理节点可以确定M1个共识节点中的每个共识节点的节点状态均为节点连接状态;反之,若信息数量未达到M1个,第一代理节点可以在M1个共识节点中将接收到心跳响应信息的共识节点作为连接正常共识节点,且将M1个共识节点中除连接正常共识节点之外的共识节点作为连接异常共识节点。
具体的,如图9所示,图9是本申请实施例提供的一种检测第一共识节点的节点状态的示意图,包含共识节点90a、共识节点90b、共识节点90c和共识节点90d,这里可以将共识节点90d确定为上述第一代理节点,将共识节点90b、共识节点90c和共识节点90d确定为上述第一共识节点;其中,进一步的,这里取上述M1为3,将第一共识节点(即共识节点90b、共识节点90c和共识节点90d)作为用于进行交易广播的M1个共识节点。第一代理节点90a可以为上述图8所对应实施例中的共识节点80a,这里的第一共识节点90b可以为上述图8所对应实施例中的共识节点80b,第一共识节点90c可以为上述图8所对应实施例中的共识节点80c,且第一共识节点90d可以为上述图8所对应实施例中的共识节点80d。
具体的,如图9所示,共识节点90a(即第一代理节点)向第一共识节点(即共识节点90b、共识节点90c和共识节点90d)广播第一心跳信息,进一步的,如图9所示,共识节点90b和共识节点90c未向共识节点90a(即第一共识节点)返回心跳响应信息,共识节点90d向共识节点90a(即第一代理节点)返回心跳信息。此时,共识节点90a接收返回的心跳响应信息,并统计接收到的心跳响应信息的信息数量。其中,应当理解,共识节点90a(即第一代理节点)收到的返回的心跳响应信息数量为1,共识节点90a(第一代理节点)确定共识节点90b、共识节点90c为连接异常共识节点,共识节点90d为连接正常共识节点。
其中,应当理解,导致第一共识节点处于连接异常状态的情况可以为运营商网络问题。比如,有A运营商和B运营商,A运营商的第一共识节点可以接收到第一代理节点发送的心跳信息,而B运营商的第一共识节点因为运营商网络问题接收不到第一代理节点发送的心跳信息。进一步的,还可以为第一共识节点自身网络接口存在异常,导致无法获取第一代理节点发送的第一心跳信息。其中,应当理解,导致第一共识节点为连接异常状态的情况可以有很多,这里将不对其进行所有情况的阐述。
另外,应当理解,交易骨干网络中其他代理节点(例如,分组i中的第二代理节点和分组k中的第三代理节点)的节点状态检测过程可参见上述图8所对应实施例中对第一代理节点的节点状态检测过程,这里将不再进行赘述。此外,共识网络中除分组i中的共识节点(例如,第二共识节点)的节点状态检测过程可参见上述图9所对应实施例中对第一共识节点的节点状态检测过程,这里也将不再进行赘述。此外,导致交易骨干网络中其他代理节点(例如,分组i中的第二代理节点和分组k中的第三代理节点)态和共识网络中除分组i中的共识节点(例如,第二共识节点)的节点状态处于异常的情况可参见上述对导致第一代理节点和第一共识节点的节点状态处于异常的可能情况的描述,这里也不再进行赘述。
在一种可选的实施例中,应当理解,第一代理节点将第一心跳信息广播至分组i中的第一共识节点时,由于作恶节点可能会非法篡改交易和交易索引,从而导致交易索引的交易哈希改变,因此第一代理节点能够根据心跳信息判断分组i中第一共识节点是否为合法节点;其中,第一心跳信息中可携带交易、第一交易全局更新索引,还可携带第一交易全局更新索引的交易哈希。
其中,交易哈希是区块链技术中的重要概念,是对每一笔交易进行哈希运算所得到的结果。其中,交易哈希的生成过程是由哈希算法完成的。交易数据会被输入到哈希函数中,经过计算后生成唯一的哈希值。不同的交易数据会生成不同的哈希值,但同理交易数据始终生成同一个哈希值。哈希算法又称散列算法,哈希算法是一个单向函数,其可以把任意长度的输入数据转化为固定长度的输出。可选的,常见的哈希算法例如信息-摘要算法5(Message-Digest Algorithm 5,MD5),安全哈希算法(Secure Hash Algorithm,SHA)256(SHA-256),SHA-512等。交易哈希的安全性对于区块链系统来说至关重要,交易哈希是保证区块链不可篡改的关键因素。
具体的,请参见图10,图10是本申请实施例提供的一种联盟链中检测作恶节点的过程示意图。如图10所示,第一代理节点100a可以为上述图9所对应实施例中的共识节点90a(即第一代理节点),这里的第一共识节点100b可以为上述图9所对应实施例中的共识节点90b(即第一共识节点),且这里的第一共识节点100c可以为上述图9所对应实施例中的共识节点90c(即第一共识节点)。
具体的,以第一共识节点100b为例,阐述检测第一共识节点100b是否为作恶节点的具体过程。如图10所示,第一代理节点100a将第一心跳信息发送给第一共识节点100b和第一共识节点100c,以使第一共识节点100b和第一共识节点100c对第一心跳信息进行接收,其中,如图10所示第一心跳信息中的第一交易全局更新索引的交易哈希为h1,将其作为交易哈希h1。
进一步的,第一共识节点100b获取第一心跳信息,包含对第一心跳信息中携带的交易、第一交易全局更新索引,还可携带第一交易全局更新索引的交易哈希(即交易哈希h1)进行获取,第一共识节点100b获取第一心跳信息后,对第一心跳信息中携带的交易和第一交易全局更新索引进行处理,得到交易哈希h2。进一步的,得到第一心跳广播信息,其中,可以理解的是,第一心跳广播信息中可包含第一共识节点100b处理后的交易、第一交易全局更新索引以及交易哈希h2,进一步的,第一共识节点100b将第一心跳广播信息广播至第一共识节点100c。其中,同理,第一共识节点100c获取第一心跳信息,包含对第一心跳信息中携带的交易、第一交易全局更新索引以及第一交易全局更新索引的交易哈希(即交易哈希h1)进行获取;进一步的,第一共识节点100c获取第一共识节点100b发送的第一心跳广播信息,包含对第一心跳信息中包含的第一共识节点100b处理后的交易、第一交易全局更新索引以及交易哈希h2进行获取。
进一步的,第一共识节点100c对获取到的交易哈希h1和交易哈希h2进行比对,若交易哈希h1与交易哈希h2一致,则确定第一共识节点100b为合法节点;反之,若交易哈希h1与交易哈希h2一致,则确定第一共识节点100b为作恶节点。
其中,应当理解,上述连接正常共识节点(如上述图9所对应实施例中的共识节点90d)在获取到第一心跳信息后,均会对第一心跳信息中携带的交易和交易索引进行处理,得到第一交易全局更新索引的交易哈希,因此,检测第一共识节点100b是否为作恶节点的具体过程可适用于同分组内的所有共识节点,这里将不再进行赘述。其中,应当理解,共识网络中可能时刻会有新的共识节点的加入,参与到整个共识网络完成共识过程。那么,可选的,当上述第一共识节点存在作恶节点时,各个分组中正常的共识节点数量会存在不相等的情况,为了使共识网络中分组中共识节点的数量恒定,可以将新加入共识网络的共识节点首先补充至存在作恶节点的分组,使作恶节点下线,上线新的共识节点以代替作恶节点,同时维护分组中第一共识节点数量的稳定以及正常状态,以便于后续进行交易处理时能够正常进行交易广播、投票和共识等。
步骤S104,将第一心跳信息发送至位于分组j中的第二代理节点,以使第二代理节点在基于第一心跳信息生成第二心跳信息时,将第二心跳信息广播至分组j中的第二共识节点。
其中,第一代理节点将第一心跳信息发送至分组j中的第二代理节点的具体过程,可以参见上述图2所对应实施例中共识节点20a(即第一共识节点)发送交易TX1(即业务交易)至共识节点21a(即第二代理节点)的具体过程的描述,这里将不再赘述。
其中,第二代理节点获取到第一心跳信息后,会对第一心跳信息中包含的交易进行获取,为该笔交易进行交易索引序号配置,更新其维护的交易全局索引,进而生成第二心跳信息,该过程可参见上述图7所对应实施例中共识节点70a(即第一代理节点)为第二交易配置交易索引序号并进行索引更新的具体过程,这里将不再赘述。
进一步的,第二代理节点生成第二心跳信息后,会将该第二心跳信息广播至同分组内的第二共识节点,此处第二代理节点将第二心跳信息发送至分组j中的第二共识节点的具体过程,可以参见上述图8所对应实施例中对第一代理节点将第一心跳信息广播至第一共识节点的具体过程的描述,这里也将不再赘述。
这样,第二共识节点能够收到第二代理节点发送的第二心跳信息,并进一步将第二心跳信息广播至分组j中的所有共识节点,此处第二共识节点将第二心跳信息在分组j进行两两广播的具体过程,可以参见上述图2所对应实施例中对第一共识节点将业务交易广播至分组200a的具体过程的描述,这里将不再赘述。
由此可见,本申请实施例提供了一种基于联盟链的全新的交易处理方法,该交易处理方法旨在强调,对联盟链所在的共识网络中的共识节点进行分组,以将这些共识节点划分到多个分组(例如,N个分组,这里的N为正整数)中,进而可以通过从这N个分组中所分别选取出的代理节点来协同构建得到一个用于提升交易传播效率的交易骨干网络。这样,在进行交易广播时,第一代理节点可以在获取到某笔交易(即业务交易)时,为该业务对象配置相应的交易索引序号,进而可以基于当前所配置的交易索引序号对其维护的第一交易全局索引进行索引更新,从而可以将索引更新后的第一交易全局索引作为第一交易全局更新索引。进一步的,第一代理节点可以在将业务交易和第一交易全局更新索引添加至第一心跳信息之后,将第一心跳信息广播至分组i中的第一共识节点,还可以将携带业务交易和第一交易全局更新索引的第一心跳信息发送至分组j中的第二代理节点,以使第二代理节点基于第一心跳信息生成第二心跳信息,进而可以将第二心跳信息广播至分组j中的第二共识节点。由此可见,对于交易骨干网络中的任意一个代理节点(例如,分组i中的第一代理节点)而言,当该任意一个代理节点(例如,分组i中的第一代理节点)获取到某笔交易(即上述业务交易)之后,可以通过心跳信息的方式发送给自己所在分组(即分组i)中的共识节点(即分组i中的第一共识节点),还可以发送给其他分组中的代理节点(例如,分组j中的第二代理节点),这样,对于其他分组中的代理节点(例如,分组j中的第二代理节点)而言,可以通过自己当前所获取到的第一心跳信息来生成用于在自己所在分组中的进行交易广播的第二心跳信息,这意味着对于当前整个联盟链上的这些共识节点而言,并不会出现在不同分组中的共识节点(例如,第一共识节点和第二共识节点)之间进行交易传播的现象,这意味着通过本申请实施例所引入的交易骨干网络,可以有效地减少联盟链上的这些共识节点之间的交易传播范围和交易传播次数,进而可以从根源上提高交易传播效率。
进一步的,请参见图11,图11是本申请实施例提供的又一种基于联盟链的交易处理方法的示意图,如图11所示,方法可以由上述第一共识节点执行,比如,该第一共识节点节点可以为上述图2所对应实施例中分组200a中的第一共识节点。方法具体可以包括以下步骤S201-步骤S202。
步骤S201,接收第一代理节点广播的第一心跳信息;
其中,第一代理节点为分组i中的代理节点;这里的第一心跳信息是由业务对象发送的业务交易和第一交易全局更新索引所确定的;应当理解,该第一交易全局更新索引所是基于为业务交易配置交易索引序号,对第一代理节点所维护的第一交易全局索引进行索引更新之后得到的;应当理解,本申请实施例所涉及的第一代理节点还可以用于将第一心跳信息发送至位于分组j中的第二代理节点,以使第二代理节点在基于第一心跳信息生成第二心跳信息时,将第二心跳信息广播至分组j中的第二共识节点;第二共识节点为分组j中除第二代理节点之外的共识节点;第一心跳信息和第二心跳信息中均包含业务交易;
步骤S202,在交易投票时长内基于第一共识节点中的每个共识节点所得到的交易投票信息,确定的第一心跳信息对应的第一心跳响应信息,向第一代理节点返回针对业务交易的心跳响应信息;
其中,可以理解的是,第一共识节点包括用于进行交易广播的M1个共识节点;其中,M1为正整数;并且步骤S201-步骤S202的具体实现方式,可以参见上述图4所对应实施例中步骤S103中对第一共识节点的描述,这里将不再进行赘述。
由此可见,本申请实施例提供的一种基于联盟链的交易处理方法,M1个用于进行交易广播第一共识节点能够接收第一代理节点广播的第一心跳信息,进而在交易投票时长内对第一心跳信息中的业务交易进行交易投票处理,并得到交易投票信息。进而基于交易投票信息生成M1个心跳响应信息,发送至第一代理节点,以使得第一代理节点能够根据返回的M1个心跳响应信息检测第一代理节点和第一共识节点的节点状态,并确定第一代理节点的节点状态确定连接正常状态共识节点。进而在第一代理节点处于异常状态时,连接正常共识节点根据代理节点更新条件查找代理更新节点,这意味着共识网络不会因为第一代理节点的异常而导致共识网络中交易广播的暂停,从而确保共识网络中交易广播的稳定性和可靠性。
进一步的,请参见图12,图12是本申请实施例提供的再一种基于联盟链的交易处理方法的示意图,如图11所示,方法可以由上述第一共识节点执行,比如,该第一共识节点节点可以为上述图2所对应实施例中分组200a中的第一共识节点。方法具体可以包括以下步骤S301-步骤S305。
步骤S301,接收第一代理节点广播的第一心跳信息;
其中,第一代理节点为分组i中的代理节点;这里的第一心跳信息是由业务对象发送的业务交易和第一交易全局更新索引所确定的;应当理解,该第一交易全局更新索引所是基于为业务交易配置交易索引序号,对第一代理节点所维护的第一交易全局索引进行索引更新之后得到的;应当理解,本申请实施例所涉及的第一代理节点还可以用于将第一心跳信息发送至位于分组j中的第二代理节点,以使第二代理节点在基于第一心跳信息生成第二心跳信息时,将第二心跳信息广播至分组j中的第二共识节点;第二共识节点为分组j中除第二代理节点之外的共识节点;第一心跳信息和第二心跳信息中均包含业务交易;
步骤S302,在交易投票时长内基于第一共识节点中的每个共识节点所得到的交易投票信息,确定的第一心跳信息对应的第一心跳响应信息,向第一代理节点返回针对业务交易的心跳响应信息;
其中,可以理解的是,第一共识节点包括用于进行交易广播的M1个共识节点;其中,M1为正整数;并且步骤S201-步骤S202的具体实现方式,可以参见上述图4所对应实施例中步骤S103中对第一共识节点的描述,这里将不再进行赘述。步骤S303,在第一代理节点的节点状态处于节点异常状态时,在M1个共识节点中查找与代理节点更新条件相匹配的第一目标共识节点;
其中,代理节点更新条件包括交易连续属性子条件和交易索引序号最大化子条件。
其中,应当理解,第一共识节点可以基于交易连续属性子条件所指示的交易连续属性,在M1个共识节点所获取到的交易广播数据集中,查找存在具有连续性交易索引序号的多笔交易的共识节点,得到第一交易查找结果;应当理解,若第一交易查找结果指示在M1个共识节点中查找到存在具有连续性交易索引序号的多笔交易的共识节点,第一共识节点则可以将查找到的具有连续性交易索引序号的多笔交易的共识节点,作为第一候选共识节点;进一步的,第一共识节点可以基于交易索引序号最大化子条件所指示的交易索引序号最大化属性,并且在M1个共识节点所获取到的交易广播数据集中,查找存在具有交易索引序号最大化属性的交易的共识节点,得到第二交易查找结果;其中,应当理解,若第二交易查找结果指示在M1个共识节点中查找到存在具有交易索引序号最大化属性的交易的共识节点,第一共识节点则可以将查找到的具有交易索引序号最大化属性的交易的共识节点,作为第二候选共识节点;进一步的,第一共识节点可以在第一候选共识节点、第二候选共识节点中,筛选满足交易连续属性和交易索引序号最大化属性的共识节点,并基于筛选出的满足交易连续属性和交易索引序号最大化属性的共识节点,确定与代理节点更新条件相匹配的第一目标共识节点。
其中,代理节点更新条件还包括节点投票子条件;
第一共识节点可以基于节点投票子条件在M1个共识节点中,筛选节点状态为节点连接状态的共识节点;进一步的,第一共识节点可以将筛选出的节点状态为节点连接状态的共识节点,作为与节点投票子条件相关联的投票节点;进一步的,第一共识节点可以将筛选出的满足交易连续属性和交易索引序号最大化属性的共识节点作为第三候选共识节点;其中,应当理解,在第三候选共识节点的节点数量为多个时,第一共识节点可以通过投票节点对第三候选共识节点进行投票处理,得到投票处理结果;其中,若投票处理结果指示第三候选共识节点中存在投票数量达到投票阈值的第三候选共识节点,第一共识节点可以将投票数量达到投票阈值的第三候选共识节点,并确定为与代理节点更新条件相匹配的第一目标共识节点;其中,投票阈值是基于投票节点的节点数量所确定的。
其中,应当理解,在M1个共识节点中,筛选节点状态为节点连接状态的共识节点中的具体实现方式可参加上述图9所对应实施例中检测第一共识节点的节点状态的具体过程的描述,这里将不再进行赘述。
其中,投票阈值可以为参与投票的投票节点的投票数量大于投票节点的2/3,还可以为参与投票的投票节点的投票数量大于投票节点的3/4,这里将不对投票阈值进行限定。
其中,可选的,第一共识节点可以将筛选出的满足交易连续属性和交易索引序号最大化属性的共识节点作为第三候选共识节点,并且在第三候选共识节点的节点数量为1个时,确定为与代理节点更新条件相匹配的第一目标共识节点。
其中,第一代理节点处于异常状态的判断过程可参见上述图8所对应实施例中检测第一代理节点的节点状态的具体过程的描述,这里将不再赘述。
其中,交易连续属性子条件所指示的交易连续属性具体是指,第一共识节点(例如,如图8所示的共识节点80b)获取到的多笔交易具备连续性交易索引序号。具体的,比如,第一共识节点(例如,如图8所示的共识节点80b)获取到的多笔交易维护的交易全局索引中的交易索引序号为1,2,3...,10,与之对应的交易为交易TX1,交易TX2,交易TX3,…,交易TX10,这意味着该多笔交易具备交易连续属性。
其中,交易索引序号最大化子条件所指示的交易索引序号最大化属性具体是指第一共识节点(例如,如图8所示的共识节点80b)所维护交易全局索引中的交易索引序号均大于其余第一共识节点(例如,上述图8所示共识节点80c、共识节点80d)所维护交易全局索引中的交易索引序号。
具体的,请参见图13,图13是本申请实施例提供的一种基于代理节点更新条件更新第一代理节点的过程示意图。如图13所示的分组1300a包含共识节点130a、共识节点130b、共识节点130c、共识节点130d,将共识节点130a作为第一代理节点,将共识节点130b、共识节点130c、共识节点130d作为第一共识节点。
进一步的,如图13所示的共识节点130a(即第一代理节点)处于异常状态后,共识节点130a(即第一代理节点)掉线,进一步的,更新分组1300a为如图13所示分组1300b,第一共识节点可以根据代理节点更新条件查找第一目标共识节点。
其中,如图13所示,获取共识节点130a(即第一代理节点)中的交易索引序号以及交易索引序号对应的交易。获取到共识节点130b(即第一共识节点)中的交易索引序号为1,2,3,4,5,6,对应的交易为交易TX1,交易TX2,交易TX3,交易TX4,交易TX5,交易TX6;获取到共识节点130c(即第一共识节点)中的交易索引序号为1,2,4,5,6,对应的交易为交易TX1,交易TX2,交易TX4,交易TX5,交易TX6;获取到共识节点130d(即第一共识节点)中的交易索引序号为1,2,3,4,5,对应的交易为交易TX1,交易TX2,交易TX3,交易TX4,交易TX5。
其中,根据上述对交易连续属性和交易索引序号最大化属性的具体阐述,不难看出,共识节点130b(即第一共识节点)和共识节点130d(即第一共识节点)为具有连续性交易索引序号的多笔交易的共识节点,将共识节点130b(即第一共识节点)和共识节点130d(即第一共识节点)作为第一候选共识节点。同理,共识节点130b(即第一共识节点)和130c(即第一共识节点)为具有交易索引序号最大化属性的交易的共识节点,将共识节点130b(即第一共识节点)和130c(即第一共识节点)作为第二候选共识节点。
如图13所示,本申请实施例可以将共识节点130b(即第一共识节点)作为第三候选共识节点,并将其确定为与代理节点更新条件相匹配的第一目标共识节点。如图13所示,共识节点130b(即第一共识节点)为同时满足交易连续属性和交易索引序号最大化属性的共识节点。
其中,可以理解的是,满足交易连续属性和交易索引序号最大化属性的共识节点的个数可能为0,此时,第一共识节点进行等待,等待后续出现满足该条件的共识节点再进行上述步骤S304。
其中,上述第一代理节点为分组i中的第二目标共识节点;其中,第二目标共识节点是基于与联盟链相关联的代理节点更新条件所确定的;其中,代理节点更新条件用于指示在分组i所包含的所有共识节点中所确定的具备交易连续属性和交易索引序号最大化的第二目标共识节点;
在分组i所对应的历史代理节点的节点状态为节点异常状态时,将具备交易连续属性和交易索引序号最大化的第二目标共识节点作为历史代理节点的代理更新节点;其中,应当理解,历史代理节点的代理更新节点为第一代理节点。
进一步的,应当理解,历史代理节点(例如,第一代理节点1000b)的确定过程可参见图13所对应实施例中代理更新节点的确定过程,且历史代理节点的确定时间戳早于代理更新节点的确定时间戳,这里将不再进行赘述。
步骤S304,将查找到的第一目标共识节点,确定为在分组i中用于替换第一代理节点的代理更新节点。
步骤S305,更新代理更新节点所维护的交易全局索引。
其中,代理更新节点在接收到第二代理节点广播的第二心跳信息时,可以将其自身所维护的交易全局索引,作为第四交易全局索引;其中,第二心跳信息携带有第二代理节点所维护的第三交易全局索引;进一步的,代理更新节点可以将第三交易全局索引和第四交易全局索引进行对比,得到第二索引对比结果;其中,应当理解,若第二索引对比结果指示第三交易全局索引的交易索引序号大于第四交易全局索引的交易索引序号,代理更新节点可以将第三交易全局索引和第四交易全局索引之间的索引高度差值作为第三索引高度差值时,向第二代理节点发送针对第三索引高度差值的交易获取请求;进一步的,代理更新节点可以接收第二代理节点基于交易获取请求返回的与第三索引高度差值相匹配的第三差值交易,并基于第四交易全局索引为第三差值交易配置差值交易索引序号,进而基于差值交易索引序号对代理更新节点所维护的第四交易全局索引进行索引更新。
具体的,代理更新节点更新交易全局索引的具体过程可参见图5和图6所对应实施例中第一代理节点获取第二交易并更新交易全局索引的具体过程的描述,这里将不再赘述。
其中,在一种可选的实施方式中,代理更新节点还可以获取自身所维护的交易全局索引,作为第四交易全局索引,将第四交易全局索引添加至第四心跳信息,并将第四心跳信息发送给第二代理节点;进一步的,代理更新节点可以接收第二代理节点返回的针对第四心跳信息的第二心跳响应信息;其中,第二心跳响应信息携带第二代理节点所维护的第三交易全局索引;进一步的,代理更新节点可以将第三交易全局索引和第四交易全局索引进行对比,得到第二索引对比结果;其中,应当理解,若第二索引对比结果指示第三交易全局索引的交易索引序号大于第四交易全局索引的交易索引序号,代理更新节点可以在将第三交易全局索引和第四交易全局索引之间的索引高度差值作为第三索引高度差值时,并向第二代理节点发送针对第三索引高度差值的交易获取请求;进一步的,代理更新节点可以接收第二代理节点基于交易获取请求返回的与第三索引高度差值相匹配的第三差值交易,并基于第四交易全局索引为第三差值交易配置差值交易索引序号,进而基于差值交易索引序号对代理更新节点所维护的第四交易全局索引进行索引更新。
由此可见,本申请实施例提供的一种基于联盟链的交易处理方法,M1个用于进行交易广播第一共识节点能够接收第一代理节点广播的第一心跳信息,进而在交易投票时长内对第一心跳信息中的业务交易进行交易投票处理,并得到交易投票信息。进而基于交易投票信息生成M1个心跳响应信息,发送至第一代理节点,以使得第一代理节点能够根据返回的M1个心跳响应信息检测第一代理节点和第一共识节点的节点状态,并确定第一代理节点的节点状态确定连接正常状态共识节点。进而在第一代理节点处于异常状态时,连接正常共识节点根据代理节点更新条件查找代理更新节点,这意味着共识网络不会因为第一代理节点的异常而导致共识网络中交易广播的暂停,从而确保共识网络中交易广播的稳定性和可靠性。此外,代理更新节点代替第一代理节点进行交易广播操作,当该代理更新节点获取到某笔交易(即上述业务交易)之后,可以将自己维护的交易全局索引通过心跳信息的方式发送交易骨干网络中的其他代理节点(例如,分组j中的第二代理节点),这样,代理更新节点可以基于自己维护的交易全局索引与交易骨干网络中其余代理节点(例如,分组j中的第二代理节点)维护的交易全局索引进行第二索引比对,从而根据第二索引比对结果,进而使交易骨干网络中的代理节点进行交易同步,以使得交易骨干网络中的代理节点均能维护自己接收的交易的完整性,以便于后续的交易广播。此外,代理更新节点代替第一代理节点进行交易广播操作,当该代理更新节点获取到某笔交易(即上述业务交易)之后,可以通过心跳信息的方式发送给自己所在分组(即分组i)中的共识节点(即分组i中的第一共识节点),还可以发送给其他分组中的代理节点(例如,分组j中的第二代理节点),这样,对于其他分组中的代理节点(例如,分组j中的第二代理节点)而言,可以通过自己当前所获取到的心跳信息来生成用于在自己所在分组中的进行交易广播的心跳信息,这意味着对于当前整个联盟链上的这些共识节点而言,并不会出现在不同分组中的共识节点(例如,第一共识节点和第二共识节点)之间进行交易传播的现象,这意味着通过本申请实施例所引入的交易骨干网络,可以有效地减少联盟链上的这些共识节点之间的交易传播范围和交易传播次数,进而可以从根源上提高交易传播效率。
进一步的,请参见图14,图14是本申请实施例提供的一种基于联盟链的交易处理方法的时序图,如图14所示,方法可以由上述图2所对应实施例中共识节点节点20a(即第一代理节点)和第一共识节点共同交互执行。该方法具体可以包括以下步骤S401-步骤S408。
步骤S401,第一代理节点获取业务对象发送的业务交易,为业务交易配置交易索引序号,基于交易索引序号对第一代理节点所维护的第一交易全局索引进行索引更新,得到第一交易全局更新索引;
步骤S402,第一代理节点将业务交易和第一交易全局索引添加至第一心跳信息;
步骤S403,第一代理节点发送第一心跳信息至第一共识节点;
步骤S404,第一共识节点在交易投票时长内基于第一共识节点中的每个共识节点所得到的交易投票信息,确定第一心跳信息对应的第一心跳响应信息;
步骤S405,第一共识节点返回针对业务交易的心跳响应信息;
步骤S406,第一代理节点基于返回的心跳响应信息确定第一代理节点和第一共识节点的节点状态信息;
其中,步骤S401-步骤S406的具体实现方式,可以参见上述图4所对应实施例中对步骤S101-步骤S103的描述,这里将不再继续进行赘述。
步骤S407,第一共识节点在第一代理节点的节点状态处于节点异常状态时,在M1个共识节点中查找与代理节点更新条件相匹配的第一目标共识节点,并讲第一目标共识节点确定为在分组i中用于替换第一代理节点的代理更新节点。
步骤S408,代理更新节点更新代理更新节点所维护的交易全局索引。
其中,步骤S407-步骤S408的具体实现方式,可以参见上述图12所对应实施例中步骤S303-步骤S305的描述,这里将不再继续进行赘述。
由此可见,本申请实施例中,第一代理节点可以在获取到某笔交易(即业务交易)时,为该业务对象配置相应的交易索引序号,进而可以基于当前所配置的交易索引序号对其维护的第一交易全局索引进行索引更新,从而可以将索引更新后的第一交易全局索引作为第一交易全局更新索引。进一步的,第一代理节点将业务交易和第一交易全局索引添加至第一心跳信息,进而将第一心跳信息发送给第一共识节点;其中,第一共识节点包括M1个用于进行交易广播共识节点;进一步的,第一共识节点能够接收第一代理节点广播的第一心跳信息,进而在交易投票时长内对第一心跳信息中的业务交易进行交易投票处理,并得到交易投票信息。进而基于交易投票信息生成M1个心跳响应信息,进而将M1个心跳响应信息返回至第一代理节点,以使得第一代理节点能够根据返回的M1个心跳响应信息检测第一代理节点和第一共识节点的节点状态,并确定第一代理节点的节点状态确定连接正常状态共识节点。进而在第一代理节点处于异常状态时,连接正常共识节点根据代理节点更新条件查找代理更新节点,这意味着共识网络不会因为第一代理节点的异常而导致共识网络中交易广播的暂停,从而确保共识网络中交易广播的稳定性和可靠性。此外,代理更新节点代替第一代理节点进行交易广播操作,当该代理更新节点获取到某笔交易(即上述业务交易)之后,可以将自己维护的交易全局索引通过心跳信息的方式发送交易骨干网络中的其他代理节点(例如,分组j中的第二代理节点),这样,代理更新节点可以基于自己维护的交易全局索引与交易骨干网络中其余代理节点(例如,分组j中的第二代理节点)维护的交易全局索引进行第二索引比对,从而根据第二索引比对结果,进而使交易骨干网络中的代理节点进行交易同步,以使得交易骨干网络中的代理节点均能维护自己接收的交易的完整性,以便于后续的交易广播。此外,代理更新节点代替第一代理节点进行交易广播操作,当该代理更新节点获取到某笔交易(即上述业务交易)之后,可以通过心跳信息的方式发送给自己所在分组(即分组i)中的共识节点(即分组i中的第一共识节点),还可以发送给其他分组中的代理节点(例如,分组j中的第二代理节点),这样,对于其他分组中的代理节点(例如,分组j中的第二代理节点)而言,可以通过自己当前所获取到的心跳信息来生成用于在自己所在分组中的进行交易广播的心跳信息,这意味着对于当前整个联盟链上的这些共识节点而言,并不会出现在不同分组中的共识节点(例如,第一共识节点和第二共识节点)之间进行交易传播的现象,这意味着通过本申请实施例所引入的交易骨干网络,可以有效地减少联盟链上的这些共识节点之间的交易传播范围和交易传播次数,进而可以从根源上提高交易传播效率。
进一步的,请参见图15,图15是本申请实施例提供的一种基于联盟链的交易处理装置的结构示意图。如图15所示,基于联盟链的交易处理装置1可应用于交易骨干网络中的第一代理节点中,交易骨干网络是由N个分组对应的N个代理节点所确定的;N为大于1的正整数;一个分组对应一个代理节点;N个分组是对联盟链中的共识节点进行节点分组后所确定的;N个分组包括分组i和分组j;第一代理节点为分组i中的代理节点;i和j均为小于或者等于N的正整数,且i不等于j;具体的,第一代理节点中可以为如图1所对应实施例中的第一代理节点10b。应当理解,该基于联盟链的交易处理装置1可以为一个应用软件,该基于联盟链的交易处理装置1可以用于执行本申请实施例提供的方法中的相应步骤。如图15所示,基于联盟链的交易处理装置1可以包括:业务交易处理模块11、心跳信息配置模块12、第一发送模块13和第二发送模块14;
业务交易处理模块11,用于获取由业务对象发送的业务交易,为业务交易配置交易索引序号,基于交易索引序号对第一代理节点所维护的第一交易全局索引进行索引更新,得到第一交易全局更新索引;
心跳信息配置模块12,用于将业务交易和第一交易全局更新索引添加至第一心跳信息;
第一发送模块13,用于将第一心跳信息广播至分组i中的第一共识节点;第一共识节点为分组i中除第一代理节点之外的共识节点;
第二发送模块14,用于将第一心跳信息发送至位于分组j中的第二代理节点,以使第二代理节点基于第一心跳信息生成第二心跳信息时,将第二心跳信息广播至分组j中的第二共识节点;第二共识节点为分组j中除第二代理节点之外的共识节点;第一心跳信息和第二心跳信息中均包含业务交易。
其中,业务交易处理模块11、心跳信息配置模块12、第一发送模块13和第二发送模块14的具体实现方式,可以参见上述图4所对应实施例中对步骤S101-步骤S104的描述,这里将不再继续进行赘述。
其中,业务对象包括第一业务对象和第二业务对象;
业务交易处理模块11,包括:交易获取单元111、交易索引序号配置单元112、第一交易全局索引获取单元113和交易全局索引更新单元114;
交易获取单元111,用于获取第一业务对象针对第一业务事件发送的第一交易,获取第二业务对象针对第二业务事件发送的第二交易;第一交易和第二交易均为业务对象所发送的业务交易中的交易;第二交易不同于第一交易;
交易索引序号配置单元112,用于将为第一交易配置的交易索引序号作为第一交易索引序号,将为第二交易配置的交易索引序号作为第二交易索引序号;第一交易索引序号和第二交易索引序号均为交易索引序号中的序号;
第一交易全局索引获取单元113,用于从第一代理节点的节点内存中获取第一代理节点针对分组i所维护的交易全局索引,将获取到的交易全局索引作为第一交易全局索引;
交易全局索引更新单元114,用于基于第一交易索引序号和第二交易索引序号,对第一交易全局索引进行索引更新,得到第一交易全局更新索引。
其中,交易获取单元111、交易索引序号配置单元112、第一交易全局索引获取单元113和交易全局索引更新单元114的具体实现方式,可以参见上述图7所对应实施例中对第一代理节点的描述,这里将不再继续进行赘述。
其中,交易获取单元111,包括:第一交易确定子单元1111、待处理交易全局索引获取子单元1112、第一索引对比子单元1113、第一交易获取子单元1114、第二交易确定子单元1115、索引高度差确定子单元1116和第一交易索引序号更新子单元1117;
其中,获取第一业务对象针对第一业务事件发送的第一交易;
第一交易确定子单元1111,用于接收第一业务对象通过第一业务终端发送的与第一业务事件相关联的第一业务事件信息,将接收到的第一业务事件信息中的交易作为第一交易。
其中,N个分组包括独立于分组i和分组j的分组k;分组k中的代理节点为部署在交易骨干网络中的第三代理节点;k为小于或者等于N的正整数,其中,k不等于i,且k不等于j;
待处理交易全局索引获取子单元1112,用于接收位于第三代理节点针对第二业务事件发送的第三心跳信息,从第三心跳信息中获取由第三代理节点所维护的第二交易全局索引,将获取到的第二交易全局索引作为第一待处理交易全局索引;
第一索引对比子单元1113,用于将第一待处理交易全局索引与第一交易全局索引进行第一索引比对,得到第一索引对比结果;
第一交易获取子单元1114,用于若第一索引对比结果指示第一待处理交易全局索引的第二索引高度大于第一交易全局索引的第一索引高度,则确定第一索引高度和第二索引高度之间的第一索引高度差值,向第三代理节点发送针对第一索引高度差值的交易获取请求;
第二交易确定子单元1115,用于接收第三代理节点基于交易获取请求返回的与第一索引高度差值相匹配的第一差值交易,将接收到的第一差值交易作为第二交易;
索引高度差确定子单元1116,用于若第一索引对比结果指示第一待处理交易全局索引的第二索引高度小于第一交易全局索引的第一索引高度,则确定第一索引高度和第二索引高度之间的第二索引高度差值;
第一交易索引序号更新子单元1117,用于获取与第二索引高度差值相匹配的交易,将获取到的与第二索引高度差值相匹配的交易作为第二差值交易,将第二差值交易发送给第三代理节点,以使第三代理节点为第二差值交易配置用于对第二交易全局索引进行索引更新的交易索引序号。
其中,第一交易确定子单元1111、待处理交易全局索引获取子单元1112、第一索引对比子单元1113、第一交易获取子单元1114、第二交易确定子单元1115、索引高度差确定子单元1116和第一交易索引序号更新子单元1117的具体实现方式,可以参见上述图5-图7所对应实施例中对第一代理节点的描述,这里将不再继续进行赘述。
其中,交易全局索引更新单元114,包括:交易时间戳获取子单元1141、交易索引序号确定子单元1142、第一交易全局索引更新子单元1143、第二交易全局索引更新子单元1144;
交易时间戳获取子单元1141,用于获取第一交易的交易获取时间戳和第二交易的交易获取时间戳;
交易索引序号确定子单元1142,用于在第一交易的交易获取时间戳早于第二交易的交易获取时间戳时,确定第一交易的第一交易索引序号小于第二交易的第二交易索引序号;
第一交易全局索引更新子单元1143,用于通过第一交易索引序号对第一交易全局索引进行第一索引更新,将索引更新后的第一交易全局索引确定为交易全局过渡索引;
第二交易全局索引更新子单元1144,用于通过第二交易索引序号对所交易全局过渡索引进行第二索引更新,将索引更新后交易全局过渡索引确定为第一交易全局更新索引。
其中,交易时间戳获取子单元1141、交易索引序号确定子单元1142、第一交易全局索引更新子单元1143、第二交易全局索引更新子单元1144的具体实现方式,可以参见上述图7所对应实施例中对第一代理节点的描述,这里将不再继续进行赘述。
可选地,其中,第一共识节点包括用于进行交易广播的M1个共识节点;M1为正整数;
装置1还包括:第一心跳响应信息接收模块21、交易投票信息获取模块22、交易投票信息统计模块23和节点状态信息确定模块24;
第一心跳响应信息接收模块21,用于接收M1个共识节点返回的M1个心跳响应信息;一个共识节点用于返回一个心跳响应信息,且一个心跳响应信息是由一个共识节点在交易投票时长内所得到的交易投票信息所确定的;交易投票信息是针对接收到的第一心跳信息中的业务交易进行交易投票之后所得到的;
交易投票信息获取模块22,用于从接收到的M1个心跳响应信息中,获取针对业务交易的交易投票信息;
交易投票信息统计模块23,用于对获取到的交易投票信息进行信息统计,得到信息统计结果;
节点状态信息确定模块24,用于若信息统计结果指示在M1个共识节点中存在达到1/2M1的共识节点均确定获取到第一心跳信息,则确定第一代理节点的节点状态为节点连接状态。
其中,节点状态信息确定模块24,还用于若信息统计结果指示在M1个共识节点中存在未达到1/2M1的共识节点均确定获取到第一心跳信息,则确定第一代理节点的节点状态为节点异常状态;
其中,第一心跳响应信息接收模块21、交易投票信息获取模块22、交易投票信息统计模块23和节点状态信息确定模块24的具体实现方式,可以参见上述图8所对应实施例中检测第一代理节点的节点状态的描述,这里将不再继续进行赘述。
其中,当第一代理节点的节点状态为节点异常状态时,在M1个共识节点中查找与代理节点更新条件相匹配的第一目标共识节点,且将查找到的第一目标共识节点作为第一代理节点的代理更新节点;代理节点更新条件用于指示在M1个共识节点中确定具备交易连续属性和交易索引序号最大化的第一目标共识节点。
可选地,其中,第一共识节点包括用于进行交易广播的M1个共识节点;M1为正整数;
装置1还包括:心跳信息数量统计模块25和共识节点状态确定模块26;
心跳信息数量统计模块25,用于接收第一共识节点中的每个共识节点返回的心跳信息,统计接收到的心跳信息的信息数量;
共识节点状态确定模块26,用于若信息数量达到M1个,则确定M1个共识节点中的每个共识节点的节点状态均为节点连接状态;
其中,共识节点状态确定模块26,还用于若信息数量未达到M1个,则在M1个共识节点中将接收到心跳信息的共识节点作为连接正常共识节点,且将M1个共识节点中除连接正常共识节点之外的共识节点作为连接异常共识节点。
其中,心跳信息数量统计模块25和共识节点状态确定模块26的具体实现方式,可以参见上述图9所对应实施例中对第一代理节点的描述,这里将不再继续进行赘述。
可选地,其中,第一代理节点为分组i中的第二目标共识节点;第二目标共识节点是基于与联盟链相关联的代理节点更新条件所确定的;代理节点更新条件用于指示在分组i所包含的所有共识节点中所确定的具备交易连续属性和交易索引序号最大化的第二目标共识节点;
装置1还包括代理节点更新模块27;
代理节点更新模块27,用于在分组i所对应的历史代理节点的节点状态为节点异常状态时,将具备交易连续属性和交易索引序号最大化的第二目标共识节点作为历史代理节点的代理更新节点;历史代理节点的代理更新节点为第一代理节点。
其中,代理节点更新模块27,的具体实现方式,可以参见上述图13所对应实施例中对查找代理更新节点的具体过程的描述,这里将不再继续进行赘述。
进一步的,请参见图16,图16是本申请实施例提供的又一种基于联盟链的交易处理装置的结构示意图。如图16所示,基于联盟链的交易处理装置2可应用于交易骨干网络所关联的分组i中的第一共识节点上,交易骨干网络是由N个分组对应的N个代理节点所确定的;N为大于1的正整数;一个分组对应一个代理节点; N个分组是对联盟链中的共识节点进行节点分组后所确定的;N个分组包括分组i和分组j;i和j均为小于或者等于N的正整数,且i不等于j;具体的,第一共识节点可以为如图2所对应实施例中的第一共识节点10a。应当理解,该基于联盟链的交易处理装置2可以为一个应用软件,该基于联盟链的交易处理装置2可以用于执行本申请实施例提供的方法中的相应步骤。如图16所示,基于联盟链的交易处理装置2可以包括:心跳信息接收模块201和心跳信息返回模块202;
心跳信息接收模块201,用于接收第一代理节点广播的第一心跳信息;第一代理节点为分组i中的代理节点;第一心跳信息是由业务对象发送的业务交易和第一交易全局更新索引所确定的;第一交易全局更新索引所是基于为业务交易配置交易索引序号,对第一代理节点所维护的第一交易全局索引进行索引更新之后得到的;第一代理节点还用于将第一心跳信息发送至位于分组j中的第二代理节点,以使第二代理节点在基于第一心跳信息生成第二心跳信息时,将第二心跳信息广播至分组j中的第二共识节点;第二共识节点为分组j中除第二代理节点之外的共识节点;第一心跳信息和第二心跳信息中均包含业务交易;
心跳信息返回模块202,用于在交易投票时长内基于第一共识节点中的每个共识节点所得到的交易投票信息,确定的第一心跳信息对应的第一心跳响应信息,向第一代理节点返回针对业务交易的心跳响应信息。
其中,心跳信息接收模块201和心跳信息返回模块202的具体实现方式,可以参见上述图8所对应实施例中对第一共识节点的描述,这里将不再继续进行赘述。
可选地,其中,第一共识节点包括用于进行交易广播的M1个共识节点;M1为正整数;
装置2还包括:第一目标共识节点查找模块203和第一代理节点替换模块204;
第一目标共识节点查找模块203,用于在第一代理节点的节点状态处于节点异常状态时,在M1个共识节点中查找与代理节点更新条件相匹配的第一目标共识节点;
第一代理节点替换模块204,用于将查找到的第一目标共识节点,确定为在分组i中用于替换第一代理节点的代理更新节点。
其中,第一目标共识节点查找模块203和第一代理节点替换模块204的具体实现方式,可以参见上述图13所对应实施例中对查找第一目标共识节点的描述,这里将不再继续进行赘述。
其中,代理节点更新条件包括交易连续属性子条件和交易索引序号最大化子条件;
第一目标共识节点查找模块203,包括:连续性交易查找单元2031、第一候选共识节点确定单元2032、索引序号最大化查找单元2033、第二候选共识节点确定单元2034和第一目标共识节点确定单元2035;
连续性交易查找单元2031,用于基于交易连续属性子条件所指示的交易连续属性,在M1个共识节点所获取到的交易广播数据集中,查找存在具有连续性交易索引序号的多笔交易的共识节点,得到第一交易查找结果;
第一候选共识节点确定单元2032,用于若第一交易查找结果指示在M1个共识节点中查找到存在具有连续性交易索引序号的多笔交易的共识节点,则将查找到的具有连续性交易索引序号的多笔交易的共识节点,作为第一候选共识节点;
索引序号最大化查找单元2033,用于基于交易索引序号最大化子条件所指示的交易索引序号最大化属性,在M1个共识节点所获取到的交易广播数据集中,查找存在具有交易索引序号最大化属性的交易的共识节点,得到第二交易查找结果;
第二候选共识节点确定单元2034,用于若第二交易查找结果指示在M1个共识节点中查找到存在具有交易索引序号最大化属性的交易的共识节点,则将查找到的具有交易索引序号最大化属性的交易的共识节点,作为第二候选共识节点;
第一目标共识节点确定单元2035,用于在第一候选共识节点、第二候选共识节点中,筛选满足交易连续属性和交易索引序号最大化属性的共识节点,可以参见上述图13所对应实施例中查找满足交易连续属性和交易索引序号最大化属性的共识节点的描述,这里将不再继续进行赘述。
其中,连续性交易查找单元2031、第一候选共识节点确定单元2032、索引序号最大化查找单元2033、第二候选共识节点确定单元2034和第一目标共识节点确定单元2035的具体实现方式,可以参见上述图13所对应实施例中对确定第一目标共识节点的具体过程的描述,这里将不再继续进行赘述。
其中,代理节点更新条件包括节点投票子条件;
第一目标共识节点确定单元2035,包括:第一节点筛选子单元20351、投票节点确定子单元20352、第二节点筛选子单元20353、投票处理子单元20354、第一目标共识节点确定子单元20355和第二目标共识节点确定子单元20356;
第一节点筛选子单元20351,用于基于节点投票子条件在M1个共识节点中,筛选节点状态为节点连接状态的共识节点;
投票节点确定子单元20352,用于将筛选出的节点状态为节点连接状态的共识节点,作为与节点投票子条件相关联的投票节点;
第二节点筛选子单元20353,用于将筛选出的满足交易连续属性和交易索引序号最大化属性的共识节点作为第三候选共识节点;
投票处理子单元20354,用于在第三候选共识节点的节点数量为多个时,通过投票节点对第三候选共识节点进行投票处理,得到投票处理结果;
第一目标共识节点确定子单元20355,用于若投票处理结果指示第三候选共识节点中存在投票数量达到投票阈值的第三候选共识节点,则将投票数量达到投票阈值的第三候选共识节点,确定为与代理节点更新条件相匹配的第一目标共识节点;投票阈值是基于投票节点的节点数量所确定的;
第二目标共识节点确定子单元20356,用于将筛选出的满足交易连续属性和交易索引序号最大化属性的共识节点作为第三候选共识节点,在第三候选共识节点的节点数量为1个时,确定为与代理节点更新条件相匹配的第一目标共识节点。
其中,第一节点筛选子单元20351、投票节点确定子单元20352、第二节点筛选子单元20353、投票处理子单元20354、第一目标共识节点确定子单元20355和第二目标共识节点确定子单元20356的具体实现方式,可以参见上述图13所对应实施例对节点投票操作的描述,这里将不再继续进行赘述。
可选地,装置2还包括:第二交易全局索引确定模块205、第二索引对比模块206、第二交易获取请求模块207和第二交易索引序号更新模块208;
第二交易全局索引确定模块205,用于在接收到第二代理节点广播的第二心跳信息时,将代理更新节点所维护的交易全局索引,作为第四交易全局索引;
第二索引对比模块206,用于将第三交易全局索引和第四交易全局索引进行对比,得到第二索引对比结果;
第二交易获取请求模块207,用于若第二索引对比结果指示第三交易全局索引的交易索引序号大于第四交易全局索引的交易索引序号,则在将第三交易全局索引和第四交易全局索引之间的索引高度差值作为第三索引高度差值时,向第二代理节点发送针对第三索引高度差值的交易获取请求;
第二交易索引序号更新模块208,用于接收第二代理节点基于交易获取请求返回的与第三索引高度差值相匹配的第三差值交易,基于第四交易全局索引为第三差值交易配置差值交易索引序号,基于差值交易索引序号对代理更新节点所维护的第四交易全局索引进行索引更新。
其中,第二交易全局索引确定模块205、第二索引对比模块206、第二交易获取请求模块207和第二交易索引序号更新模块208的具体实现方式,可以参见上述图5所对应实施例对交易索引序号更新的描述,这里将不再继续进行赘述。
可选地,装置2还包括:第三交易全局索引确定模块209、第二心跳响应信息接收模块210、第三索引对比模块211、第三交易获取请求模块212和第三交易索引序号更新模块213;
第三交易全局索引确定模块209,用于获取代理更新节点的所维护的交易全局索引,作为第四交易全局索引,将第四交易全局索引添加至第四心跳信息,将第四心跳信息发送给第二代理节点;
第二心跳响应信息接收模块210,用于接收第二代理节点返回的针对第四心跳信息的第二心跳响应信息;第二心跳响应信息携带第二代理节点所维护的第三交易全局索引;
第三索引对比模块211,用于将第三交易全局索引和第四交易全局索引进行对比,得到第二索引对比结果;
第三交易获取请求模块212,于若第二索引对比结果指示第三交易全局索引的交易索引序号大于第四交易全局索引的交易索引序号,则在将第三交易全局索引和第四交易全局索引之间的索引高度差值作为第三索引高度差值时,向第二代理节点发送针对第三索引高度差值的交易获取请求;
第三交易索引序号更新模块213,用于接收第二代理节点基于交易获取请求返回的与第三索引高度差值相匹配的第三差值交易,基于第四交易全局索引为第三差值交易配置差值交易索引序号,基于差值交易索引序号对代理更新节点所维护的第四交易全局索引进行索引更新。
其中,第三交易全局索引确定模块209、第二心跳响应信息接收模块210、第三索引对比模块211、第三交易获取请求模块212和第三交易索引序号更新模块213的具体实现方式,可以参见上述图12所对应实施例对步骤S305的描述,这里将不再继续进行赘述。
进一步地,请参见图17,图17是本申请实施例提供的一种计算机设备的结构示意图。如图17所示,该计算机设备1000可以为用户终端,还可以为服务器,这里将不对其进行限制。为便于理解,本申请以计算机设备为服务器为例,该计算机设备1000可以包括:处理器1001,网络接口1004和存储器1005,此外,该计算机设备1000还可以包括:用户接口1003,和至少一个通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。其中,用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器1005可选的还可以是至少一个位于远离前述处理器1001的存储装置。如图17所示,作为一种计算机可读存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及设备控制应用程序。
其中,该计算机设备1000中的网络接口1004还可以提供网络通讯功能。在图17所示的计算机设备1000中,网络接口1004可提供网络通讯功能;而用户接口1003主要用于为用户提供输入的接口;而处理器1001可以用于调用存储器1005中存储的设备控制应用程序,以执行上述图4、图11、图12或者图14所对应实施例中对联盟链的交易处理方法的描述,还可以执行前文图15和图16所对应实施例中对联盟链的数据处理装置(即上述基于联盟链的交易处理装置1、基于联盟链的交易处理装置2)的描述,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。
此外,这里需要指出的是:本申请实施例还提供了一种计算机可读存储介质,且计算机可读存储介质中存储有前文提及的上述基于联盟链的交易处理装置1、基于联盟链的交易处理装置2所执行的计算机程序,且计算机程序包括计算机指令,当处理器执行计算机指令时,能够执行前文图4、图11、图12或者图14所对应实施例中对联盟链的交易处理方法的描述,因此,这里将不再进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本申请所涉及的计算机可读存储介质实施例中未披露的技术细节,请参照本申请方法实施例的描述。作为示例,计算机指令可被部署在一个计算设备上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算设备上执行,分布在多个地点且通过通信网络互连的多个计算设备可以组成区块链系统。
此外,需要说明的是:本申请实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或者计算机程序可以包括计算机指令,该计算机指令可以存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器可以执行该计算机指令,使得该计算机设备执行前文图4、图11、图12或者图14所对应实施例中对联盟链的交易处理方法的描述,因此,这里将不再进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本申请所涉及的计算机程序产品或者计算机程序实施例中未披露的技术细节,请参照本申请方法实施例的描述。
进一步的,请参见图18,图18是本申请实施例提供的一种基于联盟链的交易处理系统的示意图。该基于联盟链的交易处理系统3可以包含共识节点3a、共识节点3b;其中,共识节点3a可以为上述图2所对应实施例所描述的分组200a对应第一代理节点20a,这里将不再继续进行赘述。其中,共识节点3b可以为上述图2所对应实施例所描述的分组200a对应第一共识节点20b,这里将不再继续进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,计算机程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,存储介质可为磁碟、光盘、只读存储器(Read-Only Memory,ROM)或随机存储器(Random Access Memory,RAM)等。
以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。
Claims (18)
1.一种基于联盟链的交易处理方法,其特征在于,所述方法由交易骨干网络中的第一代理节点执行,所述交易骨干网络是由N个分组对应的N个代理节点所确定的;N为大于1的正整数;一个分组对应一个代理节点;所述N个分组是对所述联盟链中的共识节点进行节点分组后所确定的;所述N个分组包括分组i和分组j;所述第一代理节点为所述分组i中的代理节点;i和j均为小于或者等于N的正整数,且i不等于j;所述方法包括:
获取业务对象发送的业务交易,为所述业务交易配置交易索引序号,基于所述交易索引序号对所述第一代理节点所维护的第一交易全局索引进行索引更新,得到第一交易全局更新索引;
将所述业务交易和所述第一交易全局更新索引添加至第一心跳信息;
将所述第一心跳信息广播至所述分组i中的第一共识节点;所述第一共识节点为所述分组i中除所述第一代理节点之外的共识节点;
将所述第一心跳信息发送至位于所述分组j中的第二代理节点,以使所述第二代理节点在基于所述第一心跳信息生成第二心跳信息时,将所述第二心跳信息广播至所述分组j中的第二共识节点;所述第二共识节点为所述分组j中除所述第二代理节点之外的共识节点;所述第一心跳信息和所述第二心跳信息中均包含所述业务交易;
其中,所述业务对象包括第一业务对象和第二业务对象;
所述获取业务对象发送的业务交易,为所述业务交易配置交易索引序号,基于所述交易索引序号对所述第一代理节点所维护的第一交易全局索引进行索引更新,得到第一交易全局更新索引,包括:
获取所述第一业务对象针对第一业务事件发送的第一交易,获取所述第二业务对象针对第二业务事件发送的第二交易;所述第一交易和所述第二交易均为所述业务对象所发送的所述业务交易中的交易;所述第二交易不同于所述第一交易;
将为所述第一交易配置的交易索引序号作为第一交易索引序号,将为所述第二交易配置的交易索引序号作为第二交易索引序号;所述第一交易索引序号和所述第二交易索引序号均为所述交易索引序号中的序号;
从所述第一代理节点的节点内存中获取所述第一代理节点针对所述分组i所维护的交易全局索引,将获取到的交易全局索引作为第一交易全局索引;
基于所述第一交易索引序号和所述第二交易索引序号,对所述第一交易全局索引进行索引更新,得到第一交易全局更新索引。
2.根据权利要求1所述的方法,其特征在于,所述基于所述第一交易索引序号和所述第二交易索引序号,对所述第一交易全局索引进行索引更新,得到第一交易全局更新索引,包括:
获取所述第一交易的交易获取时间戳和所述第二交易的交易获取时间戳;
在所述第一交易的交易获取时间戳早于所述第二交易的交易获取时间戳时,确定所述第一交易的第一交易索引序号小于所述第二交易的第二交易索引序号;
通过所述第一交易索引序号对所述第一交易全局索引进行第一索引更新,将索引更新后的第一交易全局索引确定为交易全局过渡索引;
通过所述第二交易索引序号对所交易全局过渡索引进行第二索引更新,将索引更新后交易全局过渡索引确定为所述第一交易全局更新索引。
3.根据权利要求1或者权利要求2所述的方法,其特征在于,所述N个分组包括独立于所述分组i和所述分组j的分组k;所述分组k中的代理节点为部署在所述交易骨干网络中的第三代理节点;k为小于或者等于N的正整数,其中,k不等于i,且k不等于j;
所述获取所述第二业务对象针对第二业务事件发送的第二交易,包括:
接收所述第三代理节点针对第二业务事件发送的第三心跳信息,从所述第三心跳信息中获取由所述第三代理节点所维护的第二交易全局索引,将获取到的第二交易全局索引作为第一待处理交易全局索引;
将所述第一待处理交易全局索引与所述第一交易全局索引进行第一索引比对,得到第一索引对比结果;
若所述第一索引对比结果指示所述第一待处理交易全局索引的第二索引高度大于所述第一交易全局索引的第一索引高度,则确定所述第一索引高度和所述第二索引高度之间的第一索引高度差值,向所述第三代理节点发送针对所述第一索引高度差值的交易获取请求;
接收所述第三代理节点基于所述交易获取请求返回的与所述第一索引高度差值相匹配的第一差值交易,将接收到的所述第一差值交易作为所述第二交易。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
若所述第一索引对比结果指示所述第一待处理交易全局索引的第二索引高度小于所述第一交易全局索引的第一索引高度,则确定所述第一索引高度和所述第二索引高度之间的第二索引高度差值;
获取与所述第二索引高度差值相匹配的交易,将获取到的与所述第二索引高度差值相匹配的交易作为第二差值交易,将所述第二差值交易发送给所述第三代理节点,以使所述第三代理节点为所述第二差值交易配置用于对所述第二交易全局索引进行索引更新的交易索引序号。
5.根据权利要求1所述的方法,其特征在于,所述第一共识节点包括用于进行交易广播的M1个共识节点;M1为正整数;
在将所述第一心跳信息广播至所述分组i中的第一共识节点之后,所述方法还包括:
接收所述M1个共识节点返回的M1个心跳响应信息;一个共识节点用于返回一个心跳响应信息,且一个心跳响应信息是由一个共识节点在交易投票时长内所得到的交易投票信息所确定的;所述交易投票信息是针对接收到的所述第一心跳信息中的所述业务交易进行交易投票之后所得到的;
从接收到的所述M1个心跳响应信息中,获取针对所述业务交易的所述交易投票信息;
对获取到的所述交易投票信息进行信息统计,得到信息统计结果;
若所述信息统计结果指示在所述M1个共识节点中存在达到1/2M1的共识节点均确定获取到所述第一心跳信息,则确定所述第一代理节点的节点状态为节点连接状态。
6.根据权利要求5所述的方法,其特征在于,当所述第一代理节点的节点状态为节点异常状态时,在所述M1个共识节点中查找与代理节点更新条件相匹配的第一目标共识节点,且将查找到的所述第一目标共识节点作为所述第一代理节点的代理更新节点;所述代理节点更新条件用于指示在所述M1个共识节点中确定具备交易连续属性和交易索引序号最大化的所述第一目标共识节点。
7.根据权利要求1所述的方法,其特征在于,所述第一共识节点包括用于进行交易广播的M1个共识节点;M1为正整数;
所述方法还包括:
接收所述第一共识节点中的每个共识节点返回的心跳响应信息,统计接收到的心跳响应信息的信息数量;
若所述信息数量达到所述M1个,则确定所述M1个共识节点中的每个共识节点的节点状态均为节点连接状态;
若所述信息数量未达到所述M1个,则在所述M1个共识节点中将接收到心跳响应信息的共识节点作为连接正常共识节点,且将所述M1个共识节点中除所述连接正常共识节点之外的共识节点作为连接异常共识节点。
8.根据权利要求1所述的方法,其特征在于,所述第一代理节点为所述分组i中的第二目标共识节点;所述第二目标共识节点是基于与所述联盟链相关联的代理节点更新条件所确定的;所述代理节点更新条件用于指示在所述分组i所包含的所有共识节点中所确定的具备交易连续属性和交易索引序号最大化的所述第二目标共识节点;
在所述获取业务对象发送的业务交易之前,所述方法还包括:
在所述分组i所对应的历史代理节点的节点状态为节点异常状态时,将具备所述交易连续属性和所述交易索引序号最大化的所述第二目标共识节点作为所述历史代理节点的代理更新节点;所述历史代理节点的代理更新节点为所述第一代理节点。
9.一种基于联盟链的交易处理方法,其特征在于,所述方法由交易骨干网络所关联的分组i中的第一共识节点执行,所述交易骨干网络是由N个分组对应的N个代理节点所确定的;N为大于1的正整数;一个分组对应一个代理节点;所述N个分组是对所述联盟链中的共识节点进行节点分组后所确定的;所述N个分组包括所述分组i和分组j;i和j均为小于或者等于N的正整数,且i不等于j;所述方法包括:
接收第一代理节点广播的第一心跳信息;所述第一代理节点为所述分组i中的代理节点;所述第一心跳信息是由业务对象发送的业务交易和第一交易全局更新索引所确定的;所述业务对象包括第一业务对象和第二业务对象;所述第一交易全局更新索引所是基于为第一交易配置的第一交易索引序号和为第二交易配置的第二交易索引序号,对所述第一代理节点所维护的第一交易全局索引进行索引更新之后得到的;所述第一交易为所述第一业务对象针对第一业务事件所发送的,所述第二交易为所述第二业务对象针对第二业务事件所发送的;所述第一交易和所述第二交易均为所述业务对象所发送的所述业务交易中的交易;所述第二交易不同于所述第一交易;所述第一代理节点还用于将所述第一心跳信息发送至位于所述分组j中的第二代理节点,以使所述第二代理节点在基于所述第一心跳信息生成第二心跳信息时,将所述第二心跳信息广播至所述分组j中的第二共识节点;所述第二共识节点为所述分组j中除所述第二代理节点之外的共识节点;所述第一心跳信息和所述第二心跳信息中均包含所述业务交易;
在交易投票时长内基于所述第一共识节点中的每个共识节点所得到的交易投票信息,确定的所述第一心跳信息对应的第一心跳响应信息,向所述第一代理节点返回针对所述业务交易的心跳响应信息。
10.根据权利要求9所述的方法,其特征在于,所述第一共识节点包括用于进行交易广播的M1个共识节点;M1为正整数;
所述方法还包括:
在所述第一代理节点的节点状态处于节点异常状态时,在所述M1个共识节点中查找与代理节点更新条件相匹配的第一目标共识节点;
将查找到的所述第一目标共识节点,确定为在所述分组i中用于替换所述第一代理节点的代理更新节点。
11.根据权利要求10所述的方法,其特征在于,所述代理节点更新条件包括交易连续属性子条件和交易索引序号最大化子条件;
所述在所述M1个共识节点中查找与代理节点更新条件相匹配的第一目标共识节点,包括:
基于所述交易连续属性子条件所指示的交易连续属性,在所述M1个共识节点所获取到的交易广播数据集中,查找存在具有连续性交易索引序号的多笔交易的共识节点,得到第一交易查找结果;
若所述第一交易查找结果指示在所述M1个共识节点中查找到存在具有连续性交易索引序号的多笔交易的共识节点,则将查找到的具有连续性交易索引序号的多笔交易的共识节点,作为第一候选共识节点;
基于所述交易索引序号最大化子条件所指示的交易索引序号最大化属性,在所述M1个共识节点所获取到的交易广播数据集中,查找存在具有所述交易索引序号最大化属性的交易的共识节点,得到第二交易查找结果;
若所述第二交易查找结果指示在所述M1个共识节点中查找到存在具有所述交易索引序号最大化属性的交易的共识节点,则将查找到的具有所述交易索引序号最大化属性的交易的共识节点,作为第二候选共识节点;
在所述第一候选共识节点、第二候选共识节点中,筛选满足所述交易连续属性和交易索引序号最大化属性的共识节点,基于筛选出的满足所述交易连续属性和交易索引序号最大化属性的共识节点,确定与代理节点更新条件相匹配的第一目标共识节点。
12.根据权利要求11所述的方法,其特征在于,所述代理节点更新条件包括节点投票子条件;
所述基于筛选出的满足所述交易连续属性和交易索引序号最大化属性的共识节点,确定与代理节点更新条件相匹配的第一目标共识节点,包括:
基于所述节点投票子条件在所述M1个共识节点中,筛选节点状态为节点连接状态的共识节点;
将筛选出的节点状态为所述节点连接状态的共识节点,作为与所述节点投票子条件相关联的投票节点;
将筛选出的满足所述交易连续属性和交易索引序号最大化属性的共识节点作为第三候选共识节点;
在所述第三候选共识节点的节点数量为多个时,通过所述投票节点对所述第三候选共识节点进行投票处理,得到投票处理结果;
若投票处理结果指示所述第三候选共识节点中存在投票数量达到投票阈值的第三候选共识节点,则将投票数量达到所述投票阈值的第三候选共识节点,确定为与代理节点更新条件相匹配的第一目标共识节点;所述投票阈值是基于所述投票节点的节点数量所确定的。
13.根据权利要求10所述的方法 ,其特征在于,在所述将查找到的所述第一目标共识节点,确定为在所述分组i中用于替换所述第一代理节点的代理更新节点之后,所述方法还包括:
在接收到所述第二代理节点广播的第二心跳信息时,将所述代理更新节点所维护的交易全局索引,作为第四交易全局索引;所述第二心跳信息携带有所述第二代理节点所维护的第三交易全局索引;
将所述第三交易全局索引和所述第四交易全局索引进行对比,得到第二索引对比结果;
若所述第二索引对比结果指示所述第三交易全局索引的交易索引序号大于所述第四交易全局索引的交易索引序号,则在将所述第三交易全局索引和所述第四交易全局索引之间的索引高度差值作为第三索引高度差值时,向所述第二代理节点发送针对所述第三索引高度差值的交易获取请求;
接收所述第二代理节点基于所述交易获取请求返回的与所述第三索引高度差值相匹配的第三差值交易,基于所述第四交易全局索引为所述第三差值交易配置差值交易索引序号,基于所述差值交易索引序号对所述代理更新节点所维护的第四交易全局索引进行索引更新。
14.根据权利要求10所述的方法 ,其特征在于,在所述将查找到的所述第一目标共识节点,确定为在所述分组i中用于替换所述第一代理节点的代理更新节点之后,所述方法还包括:
获取所述代理更新节点的所维护的交易全局索引,作为第四交易全局索引,将所述第四交易全局索引添加至第四心跳信息,将所述第四心跳信息发送给所述第二代理节点;
接收所述第二代理节点返回的针对所述第四心跳信息的第二心跳响应信息;所述第二心跳响应信息携带所述第二代理节点所维护的第三交易全局索引;
将所述第三交易全局索引和所述第四交易全局索引进行对比,得到第二索引对比结果;
若所述第二索引对比结果指示所述第三交易全局索引的交易索引序号大于所述第四交易全局索引的交易索引序号,则在将所述第三交易全局索引和所述第四交易全局索引之间的索引高度差值作为第三索引高度差值时,向所述第二代理节点发送针对所述第三索引高度差值的交易获取请求;
接收所述第二代理节点基于所述交易获取请求返回的与所述第三索引高度差值相匹配的第三差值交易,基于所述第四交易全局索引为所述第三差值交易配置差值交易索引序号,基于所述差值交易索引序号对所述代理更新节点所维护的第四交易全局索引进行索引更新。
15.一种基于联盟链的交易处理装置,其特征在于,所述装置运行在交易骨干网络中的第一代理节点上,所述交易骨干网络是由N个分组对应的N个代理节点所确定的;N为大于1的正整数;一个分组对应一个代理节点;所述N个分组是对所述联盟链中的共识节点进行节点分组后所确定的;所述N个分组包括分组i和分组j;所述第一代理节点为所述分组i中的代理节点;i和j均为小于或者等于N的正整数,且i不等于j;所述装置包括:
业务交易处理模块,用于获取由业务对象发送的业务交易,为所述业务交易配置交易索引序号,基于所述交易索引序号对所述第一代理节点所维护的第一交易全局索引进行索引更新,得到第一交易全局更新索引;
心跳信息配置模块,用于将所述业务交易和所述第一交易全局更新索引添加至第一心跳信息;
第一发送模块,用于将所述第一心跳信息广播至所述分组i中的第一共识节点;所述第一共识节点为所述分组i中除所述第一代理节点之外的共识节点;
第二发送模块,用于将所述第一心跳信息发送至位于所述分组j中的第二代理节点,以使所述第二代理节点基于所述第一心跳信息生成第二心跳信息时,将所述第二心跳信息广播至所述分组j中的第二共识节点;所述第二共识节点为所述分组j中除所述第二代理节点之外的共识节点;所述第一心跳信息和所述第二心跳信息中均包含所述业务交易;
其中,所述业务对象包括第一业务对象和第二业务对象;
所述业务交易处理模块包括:
交易获取单元,用于获取所述第一业务对象针对第一业务事件发送的第一交易,获取所述第二业务对象针对第二业务事件发送的第二交易;所述第一交易和所述第二交易均为所述业务对象所发送的所述业务交易中的交易;所述第二交易不同于所述第一交易;
交易索引序号配置单元,用于将为所述第一交易配置的交易索引序号作为第一交易索引序号,将为所述第二交易配置的交易索引序号作为第二交易索引序号;所述第一交易索引序号和所述第二交易索引序号均为所述交易索引序号中的序号;
第一交易全局索引获取单元,用于从所述第一代理节点的节点内存中获取所述第一代理节点针对所述分组i所维护的交易全局索引,将获取到的交易全局索引作为第一交易全局索引;
交易全局索引更新单元,用于基于所述第一交易索引序号和所述第二交易索引序号,对所述第一交易全局索引进行索引更新,得到第一交易全局更新索引。
16.一种基于联盟链的交易处理装置,其特征在于,所述装置运行在交易骨干网络所关联的分组i中的第一共识节点上,所述交易骨干网络是由N个分组对应的N个代理节点所确定的;N为大于1的正整数;一个分组对应一个代理节点;所述N个分组是对所述联盟链中的共识节点进行节点分组后所确定的;所述N个分组包括所述分组i和分组j;i和j均为小于或者等于N的正整数,且i不等于j;所述装置包括:
心跳信息接收模块,用于接收第一代理节点广播的第一心跳信息;所述第一代理节点为所述分组i中的代理节点;所述第一心跳信息是由业务对象发送的业务交易和第一交易全局更新索引所确定的;所述业务对象包括第一业务对象和第二业务对象;所述第一交易全局更新索引所是基于为第一交易配置的第一交易索引序号和为第二交易配置的第二交易索引序号,对所述第一代理节点所维护的第一交易全局索引进行索引更新之后得到的;所述第一交易为所述第一业务对象针对第一业务事件所发送的,所述第二交易为所述第二业务对象针对第二业务事件所发送的;所述第一交易和所述第二交易均为所述业务对象所发送的所述业务交易中的交易;所述第二交易不同于所述第一交易;所述第一代理节点还用于将所述第一心跳信息发送至位于所述分组j中的第二代理节点,以使所述第二代理节点在基于所述第一心跳信息生成第二心跳信息时,将所述第二心跳信息广播至所述分组j中的第二共识节点;所述第二共识节点为所述分组j中除所述第二代理节点之外的共识节点;所述第一心跳信息和所述第二心跳信息中均包含所述业务交易;
心跳响应信息返回模块,用于在交易投票时长内基于所述第一共识节点中的每个共识节点所得到的交易投票信息,确定的所述第一心跳信息对应的第一心跳响应信息,向所述第一代理节点返回针对所述业务交易的心跳响应信息。
17.一种计算机设备,其特征在于,包括存储器和处理器;
所述存储器与所述处理器相连,所述存储器用于存储计算机程序,所述处理器用于调用所述计算机程序,以使得所述计算机设备执行权利要求1-14任一项所述的方法。
18.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,所述计算机程序适于由处理器加载并执行,以使得具有所述处理器的计算机设备执行权利要求1-14任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311304571.XA CN117036038B (zh) | 2023-10-10 | 2023-10-10 | 一种基于联盟链的交易处理方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311304571.XA CN117036038B (zh) | 2023-10-10 | 2023-10-10 | 一种基于联盟链的交易处理方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117036038A CN117036038A (zh) | 2023-11-10 |
CN117036038B true CN117036038B (zh) | 2024-01-30 |
Family
ID=88624928
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311304571.XA Active CN117036038B (zh) | 2023-10-10 | 2023-10-10 | 一种基于联盟链的交易处理方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117036038B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112396423A (zh) * | 2021-01-20 | 2021-02-23 | 腾讯科技(深圳)有限公司 | 一种交易数据处理方法、装置、设备及存储介质 |
CN113570357A (zh) * | 2021-09-26 | 2021-10-29 | 青岛理工大学 | 一种动态分层的高效pbft算法 |
CN114499890A (zh) * | 2022-03-15 | 2022-05-13 | 南京信息工程大学 | 联盟链中基于节点分组的Raft PBFT两阶段共识机制 |
-
2023
- 2023-10-10 CN CN202311304571.XA patent/CN117036038B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112396423A (zh) * | 2021-01-20 | 2021-02-23 | 腾讯科技(深圳)有限公司 | 一种交易数据处理方法、装置、设备及存储介质 |
CN113570357A (zh) * | 2021-09-26 | 2021-10-29 | 青岛理工大学 | 一种动态分层的高效pbft算法 |
CN114499890A (zh) * | 2022-03-15 | 2022-05-13 | 南京信息工程大学 | 联盟链中基于节点分组的Raft PBFT两阶段共识机制 |
Also Published As
Publication number | Publication date |
---|---|
CN117036038A (zh) | 2023-11-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111600720B (zh) | 基于区块链的数据处理方法、装置、设备及可读存储介质 | |
CN110263579B (zh) | 一种数据处理方法、系统及相关设备 | |
EP3477561A1 (en) | System for goods delivery | |
CN112988667B (zh) | 一种基于区块链网络的数据存储方法及装置 | |
CN112950211B (zh) | 一种交易验重方法、装置、设备以及介质 | |
CN111885133A (zh) | 基于区块链的数据处理方法、装置及计算机存储介质 | |
CN113055188A (zh) | 一种数据处理方法、装置、设备及存储介质 | |
CN113765675B (zh) | 一种交易数据处理方法、装置、设备以及介质 | |
CN115514608B (zh) | 一种区块共识方法、装置、设备及存储介质 | |
CN113409047B (zh) | 基于区块链的数据处理方法、装置、设备及可读存储介质 | |
CN111526165B (zh) | 联盟链中的共识方法和系统 | |
CN117036038B (zh) | 一种基于联盟链的交易处理方法、装置、设备及存储介质 | |
CN117061538A (zh) | 一种基于区块链网络的共识处理方法及相关装置 | |
CN112258184B (zh) | 冻结区块链网络的方法、装置、电子设备及可读存储介质 | |
CN116684098A (zh) | 基于区块链的数据处理方法、装置、设备、介质及产品 | |
CN109558744B (zh) | 一种数据处理方法和系统 | |
CN117040929B (zh) | 一种访问处理方法、装置、设备、介质及程序产品 | |
CN114666166B (zh) | 工业互联网可信数据获取及存储方法和系统 | |
CN117407437A (zh) | 一种基于区块链的数据处理方法、设备以及可读存储介质 | |
CN117557372A (zh) | 一种基于区块链的数据处理方法、设备以及可读存储介质 | |
CN117336302A (zh) | 基于区块链网络的数据处理方法及相关设备 | |
CN116384995A (zh) | 节点作恶的区块链交易方法、装置、设备及存储介质 | |
CN117354255A (zh) | 区块链网络的事务处理方法、装置、产品、设备和介质 | |
CN116245526A (zh) | 区块链节点管理方法、装置、设备及存储介质 | |
CN116188011A (zh) | 区块链防节点作恶的交易方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |