CN110417833A - 基于区块链的数据处理方法、装置及存储介质 - Google Patents
基于区块链的数据处理方法、装置及存储介质 Download PDFInfo
- Publication number
- CN110417833A CN110417833A CN201810395562.9A CN201810395562A CN110417833A CN 110417833 A CN110417833 A CN 110417833A CN 201810395562 A CN201810395562 A CN 201810395562A CN 110417833 A CN110417833 A CN 110417833A
- Authority
- CN
- China
- Prior art keywords
- node
- block number
- block
- block chain
- message
- 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.)
- Granted
Links
Classifications
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Mobile Radio Communication Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种基于区块链的数据处理方法、装置及存储介质,该方法包括:第一节点对第二节点发送的待处理数据进行处理,生成块数据,并确定所述块数据在所述第一节点中的第一块号;所述第一节点向至少一个第三节点广播所述块数据,并接收各所述第三节点发送的第一消息,所述第一消息中包括所述块数据在各所述第三节点中的第二块号;所述第一节点根据所述第一块号和至少一个所述第二块号,确定是否将所述块数据写入所述第一节点的第一区块链中。本发明提供的基于区块链的数据处理方法、装置及存储介质能够防止各节点中数据的分叉现象,保证各节点中数据的一致性。
Description
技术领域
本发明涉及计算机应用技术,尤其涉及一种基于区块链的数据处理方法、装置及存储介质。
背景技术
区块链是由节点参与的分布式数据库系统,是利用块链式数据结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算方式。
在现有技术中,当某个节点在产生块数据后,会将该块数据写入本地存储的区块链中,为了保证各个参与方的数据一致,该节点会将产生的块数据进行广播,这样,其他参与方在接收到该节点广播的块数据后,再将该块数据写入本地存储的区块链中,以可以保证区块链中数据的一致性。
然而,上述方法中,若由于网络等原因,导致某些参与方没有接收到块数据,这些参与方的区块链中的数据将会与其他节点中的不一致,这样,就会造成各节点中数据的分叉现象。
发明内容
为解决现有技术中存在的问题,本发明提供一种基于区块链的数据处理方法、装置及存储介质,以防止各节点中数据的分叉现象,保证各节点中数据的一致性。
第一方面,本发明实施例提供一种基于区块链的数据处理方法,包括:
第一节点对第二节点发送的待处理数据进行处理,生成块数据,并确定所述块数据在所述第一节点中的第一块号;
所述第一节点向至少一个第三节点广播所述块数据,并接收各所述第三节点发送的第一消息,所述第一消息中包括所述块数据在各所述第三节点中的第二块号;
所述第一节点根据所述第一块号和至少一个所述第二块号,确定是否将所述块数据写入所述第一节点的第一区块链中。
可选的,所述第一节点根据所述第一块号和至少一个所述第二块号,确定是否将所述块数据写入所述第一节点的第一区块链中,包括:
统计与所述第一块号相同的第二块号对应的第三节点的数量;
判断所述第三节点的数量是否超过预设阈值;
若所述第三节点的数量超过预设阈值,则确定将所述块数据写入所述第一区块链中。
可选的,所述第一节点对第二节点发送的待处理数据进行处理,生成块数据之前,所述方法还包括:
所述第一节点对所述第二节点的权限和签名信息进行验证;
若所述第二节点的权限和签名信息验证通过,则执行第一节点对第二节点发送的待处理数据进行处理,生成块数据的步骤。
可选的,所述方法还包括:
所述第一节点获取除所述第一节点之外的其他节点的区块链的块号;
所述第一节点将所述第一区块链的块号和其他各节点中区块链的块号进行比较,判断所述第一区块链的块号是否最大;
所述第一节点对第二节点发送的待处理数据进行处理,生成块数据,包括:
所述第一节点在确定所述第一区块链的块号最大时,对所述第二节点发送的待处理数据进行处理,生成块数据。
可选的,所述方法还包括:
所述第一节点在确定所述第一区块链的块号非最大时,获取最大块号对应节点的第二区块链;
所述第一节点根据所述第二区块链,更新所述第一区块链。
可选的,所述方法还包括:
所述第一节点向至少一个第三节点广播所述第一块号;
所述第一节点接收所述第三节点发送的第二消息,所述第二消息为所述第三节点在确定出所述第二块号与所述第一块号不同而发送的;
所述第一节点根据所述第二消息,向所述第三节点发送响应消息,所述响应消息中携带有写入所述块数据后的第一区块链,所述响应消息用于指示所述第三节点根据写入所述块数据后的第一区块链,对所述第三节点的第三区块链进行更新。
可选的,所述方法还包括:
若所述第三节点的数量未超过所述预设阈值,所述第一节点向所述第二节点发送第三消息,所述第三消息用于通知所述第二节点所述块数据未被写入所述第一节点的区块链中。
可选的,所述确定所述块数据在所述第一节点中的第一块号,包括:
所述第一节点确定所述第一区块链的块号;
所述第一节点根据所述块数据,更新所述块号,得到所述第一块号。
第二方面,本发明实施例提供一种基于区块链的数据处理方法,包括:
第三节点接收第一节点广播的块数据,所述块数据为所述第一节点对第二节点发送的待处理数据进行处理后生成的;
所述第三节点确定所述块数据在所述第三节点中的第二块号;
所述第三节点向所述第一节点发送第一消息,所述第一消息中包括所述第二块号,所述第一消息用于指示所述第一节点根据第一块号和所述第二块号,确定是否将所述块数据写入所述第一节点的第一区块链中,所述第一块号为所述块数据在所述第一节点中的块号。
可选的,所述第三节点确定所述块数据在所述第三节点中的第二块号之前,所述方法还包括:
所述第三节点对所述第一节点的权限和签名信息进行验证;
若所述第一节点的权限和签名信息验证通过,则所述第三节点确定所述块数据在所述第三节点中的第二块号。
可选的,所述第三节点确定所述块数据在所述第三节点中的第二块号,包括:
所述第三节点确定所述第三节点中第三区块链的块号;
所述第三节点根据所述块数据,更新所述第三区块链的块号,得到所述第二块号。
可选的,所述方法还包括:
所述第三节点接收所述第一节点广播的所述第一块号;
所述第三节点在确定出所述第一块号和所述第二块号不同时,向所述第一节点发送第二消息;
所述第三节点接收所述第一节点根据所述第二消息发送的响应消息,所述响应消息中携带有写入所述块数据后的第一区块链;
所述第三节点根据写入所述块数据后的第一区块链,对所述第三节点的第三区块链进行更新。
可选的,所述方法还包括:
所述第三节点在确定出所述第一块号和所述第二块号相同时,将所述块数据写入所述第三区块链中。
第三方面,本发明实施例提供一种基于区块链的数据处理装置,包括:
处理模块,用于对第二节点发送的待处理数据进行处理,生成块数据,并确定所述块数据在第一节点中的第一块号;
收发模块,用于向至少一个第三节点广播所述块数据,并接收各所述第三节点发送的第一消息,所述第一消息中包括所述块数据在各所述第三节点中的第二块号;
确定模块,用于根据所述第一块号和至少一个所述第二块号,确定是否将所述块数据写入所述第一节点的第一区块链中。
可选的,所述确定模块,具体用于:
统计与所述第一块号相同的第二块号对应的第三节点的数量;
判断所述第三节点的数量是否超过预设阈值;
若所述第三节点的数量超过预设阈值,则确定将所述块数据写入所述第一区块链中。
可选的,所述装置还包括:
验证模块,用于对所述第二节点的权限和签名信息进行验证;
所述处理模块,还用于在所述验证模块验证出所述第二节点的权限和签名信息验证通过时,对第二节点发送的待处理数据进行处理,生成块数据。
可选的,所述装置还包括:
获取模块,用于获取除所述第一节点之外的其他节点的区块链的块号;
判断模块,用于将所述第一区块链的块号和其他各节点中区块链的块号进行比较,判断所述第一区块链的块号是否最大;
所述处理模块,还用于在所述判断模块判断出所述第一区块链的块号最大时,对所述第二节点发送的待处理数据进行处理,生成块数据。
可选的,所述装置还包括:更新模块;其中,
所述获取模块,还用于在确定所述第一区块链的块号非最大时,获取最大块号对应节点的第二区块链;
所述更新模块,还用于根据所述第二区块链,更新所述第一区块链。
可选的,所述收发模块,具体用于:
向至少一个第三节点广播所述第一块号;
接收所述第三节点发送的第二消息,所述第二消息为所述第三节点在确定出所述第二块号与所述第一块号不同而发送的;
根据所述第二消息,向所述第三节点发送响应消息,所述响应消息中携带有写入所述块数据后的第一区块链,所述响应消息用于指示所述第三节点根据写入所述块数据后的第一区块链,对所述第三节点的第三区块链进行更新。
可选的,所述收发模块,还用于:在所述第三节点的数量未超过所述预设阈值时,向所述第二节点发送第三消息,所述第三消息用于通知所述第二节点所述块数据未被写入所述第一节点的区块链中。
可选的,所述处理模块,具体用于:
确定所述第一区块链的块号;
根据所述块数据,更新所述块号,得到所述第一块号。
第四方面,本发明实施例提供一种基于区块链的数据处理装置,包括:
收发模块,用于接收第一节点广播的块数据,所述块数据为所述第一节点对第二节点发送的待处理数据进行处理后生成的;
确定模块,用于确定所述块数据在所述第三节点中的第二块号;
所述收发模块,还用于向所述第一节点发送第一消息,所述第一消息中包括所述第二块号,所述第一消息用于指示所述第一节点根据第一块号和所述第二块号,确定是否将所述块数据写入所述第一节点的第一区块链中,所述第一块号为所述块数据在所述第一节点中的块号。
可选的,所述装置还包括:
验证模块,用于对所述第一节点的权限和签名信息进行验证;
所述确定模块,还用于在所述验证模块验证所述第一节点的权限和签名信息验证通过时,确定所述块数据在所述第三节点中的第二块号。
可选的,所述确定模块,具体用于:
确定所述第三节点中第三区块链的块号;
根据所述块数据,更新所述第三区块链的块号,得到所述第二块号。
可选的,所述装置还包括:更新模块,其中,
所述收发模块,还用于接收所述第一节点广播的所述第一块号;
所述收发模块,还用于在确定出所述第一块号和所述第二块号不同时,向所述第一节点发送第二消息;
所述收发模块,还用于接收所述第一节点根据所述第二消息发送的响应消息,所述响应消息中携带有写入所述块数据后的第一区块链;
所述更新模块,用于根据写入所述块数据后的第一区块链,对所述第三节点的第三区块链进行更新。
可选的,所述装置还包括:
处理模块,用于在确定出所述第一块号和所述第二块号相同时,将所述块数据写入所述第三区块链中。
第五方面,本发明实施例提供一种服务器,包括:
处理器;
存储器;以及
计算机程序;
其中,所述计算机程序被存储在所述存储器中,并且被配置为由所述处理器执行,所述计算机程序包括用于执行如第一方面所述的方法的指令,或者用于执行如第二方面所述的方法的指令。
第六方面,本发明实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序使得服务器执行第一方面所述的方法,或者执行第二方面所述的方法。
本发明提供的基于区块链的数据处理方法、装置及存储介质,第一节点通过对第二节点发送的待处理数据进行处理,生成块数据,并确定块数据在第一节点中的第一块号,然后第一节点向至少一个第三节点广播块数据,并接收各第三节点发送的第一消息,其中,该第一消息中包括块数据在各第三节点中的第二块号,第一节点再根据第一块号和至少一个第二块号,确定是否将块数据写入第一节点的第一区块链中。由于第一节点在确定出待处理数据对应的块数据在第一节点中的第一块号之后,还会将该块数据广播给至少一个第三节点,各第三节点将分别在本地计算块数据的第二块号,这样,第一节点将根据块数据在第一节点中的第一块号和块数据在各第三节点中的第二块号,判断第一节点本地的区块链中的数据是否为最新的数据,从而确定是否将块数据写入区块链中,这样,可以保证每次都是在区块链中的数据为最新的情况下进行块数据的写入,从而可以防止各节点中数据分叉的现象,从而可以保证各节点中数据的一致性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为应用本发明实施例提供的基于区块链的数据处理方法的架构示意图;
图2为本发明实施例提供的基于区块链的数据处理方法实施例一的流程示意图;
图3为本发明实施例提供的基于区块链的数据处理方法实施例二的流程示意图;
图4为本发明实施例提供的基于区块链的数据处理方法实施例三的信令流程图;
图5为本发明实施例提供的基于区块链的数据处理装置实施例一的结构示意图;
图6为本发明实施例提供的基于区块链的数据处理装置实施例二的结构示意图;
图7为本发明实施例提供的基于区块链的数据处理装置实施例三的结构示意图;
图8为本发明实施例提供的基于区块链的数据处理装置实施例四的结构示意图;
图9A示出了本发明服务器的一种可能的结构示意图;
图9B示出了本发明服务器的另一种可能的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”及“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
以下,对本申请中的部分用语进行解释说明,以便于本领域技术人员理解。
1)参与方,是指具体业务方,管理所属节点,可以发起交易,进行交易提案。
2)提案,指交易数据入链的申请,提案节点可处理交易提案,有权发起背书和提交提案。
3)背书,指其他参与方对背书申请签名背书的过程,具体由背书节点实现。
4)提交,指对通过背书的提案数据进行处理并出块入区块链的过程,具体由提交节点完成。
5)副本,指数据的备份,副本节点将于提交节点完成数据写入后,完成数据同步。
图1为应用本发明实施例提供的基于区块链的数据处理方法的架构示意图,如图1所示,该系统架构中可以包括客户端101、102或103和服务器104。
其中,客户端101、102或103可以为支持信息通信的各种电子设备,包括但不限于智能手机、平板电脑、便携式计算机、台式计算机以及各种智能家居设备等。其中,客户端101、102或103均可以作为参与方向部署在服务器104上的提案节点发送提案。需要进行说明的是,可以是客户端101、102或103中的一个向提案节点发送提案,也可以是客户端101、102或103中的至少两个并行向各自对应的提案节点发送提案。
服务器104可以是提供各节点的服务器,例如该服务器104上可以安装有提案节点、背书节点、提交节点或至少一个副本节点中的至少一个。其中,提案节点在接收到参与方发送的提案后,将会根据提案中的交易数据执行合约,并向背书节点发送背书请求,背书节点在接收到背书请求后,将执行合约以完成背书过程。另外,提案节点在确定出提交节点的信息后,将上述提案发送给提交节点,提交节点将会在本地进行数据的预提交,从而计算出提案中交易数据对应的块数据在提交节点中的块号。另外,提交节点还会将提案中交易数据对应的块数据发送给至少一个副本节点,各副本节点也会同步的计算该块数据在本地的块号,并将计算出的块号发送给提交节点,提交节点在判断出超过预设数量的副本节点的块号都与提交节点本地计算出的块号相同时,说明提交节点中区块链的数据是最新的,这时,提交节点会将提案中交易数据对应的块数据写入区块链中,并将最新的数据发送给各副本节点,以使各副本节点完成数据的同步。
需要进行说明的是,上述的提案节点、背书节点、提交节点或至少一个副本节点可以全部部署在一个服务器中,也可以部署在不同的服务器中,如将提案节点和背书节点部署在一个服务器中,将提交节点和至少一个副本节点分别部署在不同的服务器中,或者将提案节点、背书节点、提交节点或至少一个副本节点分别都部署在不同的服务器中,对于各节点在服务器中的部署方式,本发明实施例在此不做限制,只要各节点能够完成相应的功能即可。
另外,值得注意的是,上述图1中所示的客户端、网络和服务器的数量和类型仅作为示意,在实际应用中,根据实现的需要,可以具有任意数量和类型的客户端、网络和服务器。
在图1所示的架构示意图的基础上,本发明实施例提供的基于区块链的数据处理方法,应用于区块链中数据的同步的场景中。例如:本发明实施例提供的基于区块链的数据处理方法,可以应用于各节点的区块链中的数据如何保持同步的场景中。在现有技术中,当某个节点在产生块数据后,会将该块数据写入本地存储的区块链中,为了保证各个参与方的数据一致,该节点会将产生的块数据进行广播,这样,其他参与方在接收到该节点广播的块数据后,再将该块数据写入本地存储的区块链中,以可以保证区块链中数据的一致性。然而,上述方法中,若由于网络等原因,导致某些参与方没有接收到块数据,这些参与方的区块链中的数据将会与其他节点中的不一致,这样,就会造成各节点中数据的分叉现象。
本发明实施例考虑到上述问题,提出一种基于区块链的数据处理方法,该方法中第一节点对第二节点发送的待处理数据进行处理,生成块数据,并确定块数据在第一节点中的第一块号,然后第一节点向至少一个第三节点广播块数据,并接收各第三节点发送的第一消息,其中,该第一消息中包括块数据在各第三节点中的第二块号,第一节点再根据第一块号和至少一个第二块号,确定是否将块数据写入第一节点的第一区块链中。由于第一节点在确定出待处理数据对应的块数据在第一节点中的第一块号之后,还会将该块数据广播给至少一个第三节点,各第三节点将分别在本地计算块数据的第二块号,这样,第一节点将根据块数据在第一节点中的第一块号和块数据在各第三节点中的第二块号,判断第一节点本地的区块链中的数据是否为最新的数据,从而确定是否将块数据写入区块链中,这样,可以保证每次都是在区块链中的数据为最新的情况下进行块数据的写入,从而可以防止各节点中数据分叉的现象,从而可以保证各节点中数据的一致性。
下面以具体的实施例对本发明的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
在图1所示的架构示意图的基础上,图2为本发明实施例提供的基于区块链的数据处理方法实施例一的流程示意图。本发明实施例提供了一种基于区块链的数据处理方法,该方法可以由任意执行基于区块链的数据处理方法的装置来执行,该装置可以通过软件和/或硬件实现。本实施例中,该装置可以集成在服务器中。如图2所示,本实施例的方法可以包括:
步骤201、第一节点对第二节点发送的待处理数据进行处理,生成块数据,并确定块数据在第一节点中的第一块号。
在本实施例中,第一节点可以为提交节点,第二节点可以为提案节点。参与方由用户或经应用程序编程接口(application programming interface;API)向参与方的提案节点发起提案,为了单次网络通信效率,提案设计可包含多笔交易,并由提案节点对交易进行管理和切分,并可向多个提案节点并行发起提案。在参与方向多个提案节点并行发起提案时,各提案节点根据提案大小或其他对提案进行切分,保持提案中交易顺序,然后按照设计的共识和背书策略完成背书后,有序批量的发送至提交节点完成入链。
另外,参与方可以根据当前交易量,决定单次发送的提案包含的交易量,而且参与方可以决定发送提案的提案节点的数量。因此,本发明中的数据处理方法具有高并行以及集群灵活扩张的特点。
提案节点在接收到提案后,首先会验证各参与方的权限和签名信息,并在权限和签名信息验证通过后,会对提案中的交易进行切分,以处理参与方的提案请求,即执行合约。
在一种可能的实现方式中,提案请求参数可以包括如下信息:
进一步地,在实际应用中,提案节点的数量可以进行灵活的扩展,当需要支持更大量的交易吞吐时,只需要部署更多的提案节点即可,这样使得集群性能更高。
另外,提案节点会向网络中所有活跃参与方的背书节点发起背书申请,其中,背书过程是提案节点并行向所有背书节点发起的,背书过程是需要各节点达成共识的过程。此过程的共识算法可以选用拜占庭容错算法(practical byzantine fault tolerance;PBFT)、股权证明(proof of stake;POS)、委任权益证明(delegated proof of stake;DPOS)或工作证明(proof of work;POW)等。其中,由于共识算法均采用模块化编写,因此只需要较小的修改即可完成切换。另外,背书节点中采用的背书共识策略可以灵活配置。
背书节点在接收到提案节点发送的背书申请后,首先将校验请求的提案中的数据,并验证提案节点的权限和签名信息,在权限和签名信息验证通过后,将对提案节点发送的提案进行处理,以执行合约。背书节点在合约执行完成之后,将返回背书结果,如执行成功,则向提案节点发送背书成功的消息,否则发送背书失败的消息。
在一种可能的实现方式中,背书节点返回背书结果的格式如下:
{
txnId:交易Id
chainId:链Id
userId:参与方Id
txnHash:交易Hash
isValid:是否通过背书验证
signBy:签名方
sign:签名
version:版本号
timestamp:时间戳
}
提案节点在接收到背书节点返回的背书结果时,将会验证背书节点的权限和签名信息,若验证通过,则将可以通过设置不同的背书策略,控制背书容错。如果背书成功数/率的未达到容错阈值,则背书失败,当前交易将无法出块入链;如果背书成功数/率的达到容错阈值,则背书成功,提案节点将具有提交提案的资格,并准备将提案发送至提交节点。
由于提案节点中采用容错机制,从而可以控制背书成功数/率的阈值要求,使得提案的提交更加灵活。
需要进行说明的是,上述的网络通讯采用基于安全传输层协议(transport layersecurity;TLS)的加密安全通讯方式,比如超文本传输协议(hyper text transferprotocol;HTTP)和TLS的通讯方式或grpc等,对于可信任的网络环境,可选为http请求,以提升网络通讯效率。
提案节点在确定出背书成功数/率的达到容错阈值时,将会产生待提交的提案,准备向提交节点提交提案,由提交节点负责数据的入链。
具体的,提案节点会对待提交的提案进行拆分并进行签名,另外,还需要获取当前网络中提交节点的信息。在具体的实现过程中,提交节点可以通过如下三种方式产生。
(1)集中式提交者
集中式是指提交行为的集中,即提案节点统一向唯一的提交节点发送提案,由该提交节点完成提交。集中式需要为区块链网络指定和维护提交节点,实现上有多种途径:1)提交节点信息配置化,在集群节点启动时,指定提交节点,并写入所有节点配置;2)由中央分布式集群(如关系型或内存数据库集群)维护提交节点信息,提交节点向中央集群定时发送心跳更新信息及状态,若中央集群失去提交节点心跳,则提交节点信息失效。
其中,集中式确定提交节点的方式,实现上较为简单,且高效。
在这种方式中,若出现所配置的提交节点不可访问或访问异常,或者出现宕机,或出现中央节点所维护的提交节点信息失效时,提案将会缓存至提案节点,网络会发出警告,并通过自动或手动的方式修复网络和提交节点状态。待恢复正常后,再由提案节点再次发起提案请求。
(2)多提交者主备
多提交者主备是指为提交节点提供候选人,若主提交节点因网络、硬件或者系统等各类原因无法正常工作,将会进行全网广播,通知其他节点提交节点的权限切换至备用提交者。其中,多提交者主备方式确定提交节点,可以避免因主提交节点问题造成全网不可用的现象,从而可以提高可用性。
在实际应用中,若在一段时间内未收到提交节点成功提交的消息,在广播数据同步时,提案节点将切换使用备用提交节点,若备用提交节点提交再次失败,将访问再后一个备用提交节点。只要一个备用提交节点成功发起数据提交并广播了数据同步的消息,则该备用提交节点将被提升为主提交节点。若所有提交节点均失败,则系统不可用,此时会触发网络和系统的检测,并发起告警。
另外,备用节点可以是一个也可以是多个,其中,备用节点的数量,可以根据实际情况进行设置。
(3)民主选举
民主选举与多提交者主备的方案类似,区别在于民主选举方式中不会事先维护某一提交节点序列,而是由系统自由选出。只需要保证同一时间内,区块链网络只有一个提交节点即可。
当提案节点发起提交,但提交失败时,区块链网络将发起提交节点民主选举。其中,民主选举分为以下几步:1)全网暂停交易提交;2)各个节点间同步当前有资格备选的节点的清单,有资格参与民主选举的节点,需满足有写入数据和广播数据同步的权限,并且节点当前同步到的数据是最新的;3)根据指定规则,各个节点选出当前提交节点。规则可以是对各个节点的标识信息ID进行排序,并选择第一个,也可以是计算ID的消息摘要算法第五版(Message Digest Algorithm;MD5)、安全哈希算法(Secure Hash Algorithm;SHA)的哈希Hash,并排序选择第一个,还可以是通过其他策略选择出的提交节点。
提案节点在获取到提交节点的信息后,会将提案发送给该提交节点。提交节点会对提案中的待处理数据进行打包处理,以生成块数据,并将生成的块数据进行本地预提交。其中,在进行本地预提交的过程中,提交节点将确定生成的块数据在提交节点的第一区块链中的第一块号。
在一种可能的实现方式中,第一节点在确定块数据在第一节点中的第一块号时,可以先确定第一节点中第一区块链的块号,然后根据块数据,更新确定出的块号,以得到第一块号。
举例来说,若提交节点中第一区块链中已经有10个块数据,提交节点通过对待处理数据进行打包处理后,生成了3个块数据,则提交节点将确定出此时提交节点中总共有13个块数据,即第一块号为13,且生成的3个块数据的块号分别为11、12和13。
另外,为了提高通讯的安全性,保证消息在通讯过程中未被篡改,第一节点在对第二节点发送的待处理数据进行处理,生成块数据之前,第一节点还可以对第二节点的权限和签名信息进行验证,在权限和签名信息验证通过后,第一节点再对待处理数据进行处理。
进一步地,为了保证第一节点的第一区块链中的数据为最新的数据,第一节点在权限和签名信息验证通过后,第一节点将获取除第一节点之外的其他节点的区块链的块号,并将第一区块链的块号和其他各节点中区块链的块号进行比较,判断第一区块链的块号是否最大,在判断出第一区块链的块号最大时,在对第二节点发送的待处理数据进行处理,生成块数据。
具体的,由于各节点本地都将保存有区块链,每个节点中保存的区块链的块号都将可以在本地进行查询。第一节点可以向其他节点发送请求消息,其他节点在接收到该请求消息后,会将本地区块链的最新块号发送给第一节点,第一节点将其的第一区块链的最新块号和各其他节点发送的最新块号进行比较,若判断出第一区块链的最新块号为所有节点中区块链的最新块号中最大的时,说明第一节点中区块链的数据为最新的数据,此时,第一节点可以将第二节点发送的提案中的待处理数据进行处理,以生成块数据。
若第一节点在确定第一区块链的块号非最大时,将获取最大块号对应节点的第二区块链,并根据第二区块链,更新第一区块链。
具体的,若第一节点确定出第一区块链的最新块号不是所有节点中区块链的最新块号中最大的时,说明新出的块数据可能被写入了非最长区块链的后端,即第一节点中第一区块链的数据可能不是最新的,此时,第一节点将获取最大块号对应节点中的第二区块链,并根据该第二区块链中的数据更新第一区块链中的数据。例如:若第一节点确定出第一区块链的最新块号为10,而节点A中区块链的最新块号为9,节点B中区块链的最新块号为10,节点C中区块链的最新块号为11,则第一节点将获取节点C的区块链,并根据节点C的区块链更新第一节点中的第一区块链,以使第一节点中第一区块链中的数据为最新的数据。
需要进行说明的是,提交节点在接收到提案后,提案将进入提交节点的队列准备入链。另外,提交节点也可能会接收多个提案节点的提案,此时,提交节点可以自定义来自各个提案节点来的提案的入链顺序,默认采用时间顺序,也可采用别的策略,例如根据背书成功率、交易量等排序入链。
步骤202、第一节点向至少一个第三节点广播块数据,并接收各第三节点发送的第一消息,该第一消息中包括块数据在各第三节点中的第二块号。
其中,第三节点可以为副本节点。
在本实施例中,提交节点在生成块数据之后,将会向至少一个副本节点广播生成的块数据。各副本节点在接收到提交节点广播的块数据后,为了保证通讯的安全性,首先会对提交节点的权限和签名信息进行验证,在权限和签名信息验证通过后,将确定生成的块数据在各副本节点中的第三块号。具体的,第三节点可以先确定第三节点中第三区块链的块号,然后根据块数据,更新第三区块链的块号,得到第二块号。例如:若某个副本节点中第三区块链中已经有10个块数据,该副本节点在接收到提交节点发送的3个块数据后,该副本节点将确定出此时副本节点中总共有13个块数据,即第三块号为13,且接收到的3个块数据的块号分别为11、12和13。又例如:若某个副本节点中第三区块链中已经有8个块数据,该副本节点在接收到提交节点发送的3个块数据后,该副本节点将确定出此时副本节点中总共有11个块数据,即第三块号为11,且接收到的3个块数据的块号分别为9、10和11。
针对每个副本节点来说,副本节点在计算出本地区块链的最新块号之后,将会向提交节点发送第一消息,该第一消息中包括该副本节点中区块链的最新块号,即第二块号。
步骤203、第一节点根据第一块号和至少一个第二块号,确定是否将块数据写入第一节点的第一区块链中。
在本实施例中,第一节点在确定出第一块号和第二块号之后,将根据第一块号和第二块号,确定第一节点中第一区块链中的数据是否为最新的数据,以确定是否将块数据写入第一区块链中。
在一种可能的实现方式中,第一节点将统计与第一块号相同的第二块号对应的第三节点的数量,并判断第三节点的数量是否超过预设阈值,若第三节点的数量超过预设阈值,则确定将块数据写入第一区块链中。
具体的,第一节点在确定出第一块号,并接收到至少一个第三节点发送的至少一个第二块号之后,将统计与第一块号相同的第二块号对应的第三节点的数量。例如:若第一块号为13,有4个第三节点分别发送的第二块号依次为12、13、13和13,则第一节点将统计出与第一块号相同的第二块号对应的第三节点的数量为3个。
第一节点在统计出与第一块号相同的第二块号对应的第三节点的数量后,判断该数量是否超过预设阈值,若超过了预设阈值,则说明第一节点中第一区块链中的数据为最新数据,此时,会将块数据进行正式提交,以完成数据的出块和入链,即将块数据写入第一区块链中。
其中,预设阈值可以根据经验或者实际情况选取,例如可以设置为1/2N+1个节点或者3/4N+1个节点等,其中,N为所有节点的总数,对于预设阈值的具体取值,本发明实施例在此不做限制。
由于在与第一块号相同的第二块号对应的第三节点的数量超过预设阈值时,第一节点才会将块数据写入区块链中,保证了数据的持久化,不会造成由于一个或部分节点数据的丢失造成全网数据丢失的现象;另外,上述写入块数据的条件,可以提升数据同步的效率和系统的可用性,容许部分节点故障而不会造成全网数据不可用。
另外,在第一节点将块数据写入第一节点的第一区块链中后,第一节点将会向第二节点发送通知消息,以通知第二节点提案对应的块数据已经被正式提交。
对于第二节点,即提案节点来说,当提案节点收到提交节点顺利完成出块入链的通知消息后,提案节点会进入下一次提案提交的流程,但直至提案节点收到提交节点返回的数据同步成功的消息前,此次提案的数据并不会被废弃,而将在提案节点保留,用于可能数据同步失败而需要再次发起提案。
进一步地,第一节点在将块数据写入第一区块链之后,还会向各副本节点发送通知消息,以使各副本节点写入最新的数据,完成数据同步。
具体的,第一节点在向各第三节点广播块数据时,还可以向各第三节点广播第一块号,第三节点在接收到第一块号时,将可以比较其确定出的第二块号是否与第一节点广播的第一块号相同。若相同,则第三节点将接收到的块数据进行提交,即将块数据写入第三节点的区块链中。若不相同,则说明该第三节点中区块链的数据不是最新的数据,此时,该第三节点将会向第一节点发送第二消息,第一节点将根据该第二消息,向第三节点发送响应消息,该响应消息中携带有写入块数据后的第一区块链,第三节点在接收到响应消息后,可以根据写入块数据后的第一区块链,对第三节点的第三区块链进行更新,以保证第三节点中第三区块链中的数据为最新数据。第三节点在进行数据的同步更新后,可以向第一节点发送通知消息,以通知第三节点数据同步完成。
可选的,若第三节点的数量未超过预设阈值,第一节点会向第二节点发送第三消息,该第三消息用于通知第二节点块数据未被写入第一节点的区块链中。
具体的,若第一节点确定出与第一块号相同的第二块号对应的第三节点的数量未超过预设阈值,则说明此时第一节点中第一区块链中的数据可能不是最新的数据,此时,第一节点将会向第二节点发送第三消息,以通知第二节点提案提交失败。另外,第一节点将回滚预提交提案,以重新进行提交。
需要进行说明的是,在一条链上,将保持有且仅有一个提交节点进行数据写入,并且该提交节点的块序列将是最新的,这保证了区块链数据的一致性,并确保了提交节点中数据永远是最新的,从而保证区块链不会出现分叉现象。
本发明实施例提供的基于区块链的数据处理方法,第一节点通过对第二节点发送的待处理数据进行处理,生成块数据,并确定块数据在第一节点中的第一块号,然后第一节点向至少一个第三节点广播块数据,并接收各第三节点发送的第一消息,其中,该第一消息中包括块数据在各第三节点中的第二块号,第一节点再根据第一块号和至少一个第二块号,确定是否将块数据写入第一节点的第一区块链中。由于第一节点在确定出待处理数据对应的块数据在第一节点中的第一块号之后,还会将该块数据广播给至少一个第三节点,各第三节点将分别在本地计算块数据的第二块号,这样,第一节点将根据块数据在第一节点中的第一块号和块数据在各第三节点中的第二块号,判断第一节点本地的区块链中的数据是否为最新的数据,从而确定是否将块数据写入区块链中,这样,可以保证每次都是在区块链中的数据为最新的情况下进行块数据的写入,从而可以防止各节点中数据分叉的现象,从而可以保证各节点中数据的一致性。另外,本发明还能够方便的快速的实现和扩展,高效的提升了区块链出块与入链的效率,有效的保证了数据的一致性和持久化,适当的容错有效的保证了系统的可用,实现了更好的支撑区块链的上层应用。
在图1所示的架构示意图的基础上,图3为本发明实施例提供的基于区块链的数据处理方法实施例二的流程示意图。本发明实施例提供了一种基于区块链的数据处理方法,该方法可以由任意执行基于区块链的数据处理方法的装置来执行,该装置可以通过软件和/或硬件实现。本实施例中,该装置可以集成在服务器中。如图3所示,本实施例的方法可以包括:
步骤301、第三节点接收第一节点广播的块数据,块数据为第一节点对第二节点发送的待处理数据进行处理后生成的。
在本实施例中,第三节点可以为副本节点,第二节点可以为提案节点,第一节点可以为提交节点。
其中,提交节点在接收到提案节点发送的提案后,会将提案中的待处理数据进行打包处理,以生成块数据,并将生成的块数据进行本地预提交。其中,在进行本地预提交的过程中,提交节点将确定生成的块数据在提交节点的第一区块链中的第一块号。
另外,提交节点在生成块数据之后,将会向至少一个副本节点广播生成的块数据。
步骤302、第三节点确定块数据在第三节点中的第二块号。
具体的,第三节点在接收到块数据之后,将确定块数据在第三节点中的第二块号。具体的,第三节点可以先确定第三节点中第三区块链的块号,然后根据块数据,更新第三区块链的块号,得到第二块号。
可选的,为了保证通讯的安全性,副本节点首先会对提交节点的权限和签名信息进行验证,在权限和签名信息验证通过后,将确定生成的块数据在各副本节点中的第三块号。
步骤303、第三节点向第一节点发送第一消息,该第一消息中包括第二块号,该第一消息用于指示第一节点根据第一块号和第二块号,确定是否将块数据写入第一节点的第一区块链中,第一块号为块数据在第一节点中的块号。
在本实施例中,副本节点在计算出本地区块链的最新块号之后,将会向提交节点发送第一消息,该第一消息中包括该副本节点中区块链的最新块号,即第二块号。
第一节点在确定出第一块号和第二块号之后,将根据第一块号和第二块号,确定第一节点中第一区块链中的数据是否为最新的数据,以确定是否将块数据写入第一区块链中。
在一种可能的实现方式中,第一节点将统计与第一块号相同的第二块号对应的第三节点的数量,并判断第三节点的数量是否超过预设阈值,若第三节点的数量超过预设阈值,则确定将块数据写入第一区块链中。
具体的,第一节点在确定出第一块号,并接收到至少一个第三节点发送的至少一个第二块号之后,将统计与第一块号相同的第二块号对应的第三节点的数量。
第一节点在统计出与第一块号相同的第二块号对应的第三节点的数量后,判断该数量是否超过预设阈值,若超过了预设阈值,则说明第一节点中第一区块链中的数据为最新数据,此时,会将块数据进行正式提交,以完成数据的出块和入链,即将块数据写入第一区块链中。
其中,预设阈值可以根据经验或者实际情况选取,例如可以设置为1/2N+1个节点或者3/4N+1个节点等,其中,N为所有节点的总数,对于预设阈值的具体取值,本发明实施例在此不做限制。
由于在与第一块号相同的第二块号对应的第三节点的数量超过预设阈值时,第一节点才会将块数据写入区块链中,保证了数据的持久化,不会造成由于一个或部分节点数据的丢失造成全网数据丢失的现象;另外,上述写入块数据的条件,可以提升数据同步的效率和系统的可用性,容许部分节点故障而不会造成全网数据不可用。
另外,第一节点在将块数据写入第一区块链之后,还会向各副本节点发送通知消息,以使各副本节点写入最新的数据,完成数据同步。
具体的,第一节点在向各第三节点广播块数据时,还可以向各第三节点广播第一块号,第三节点在接收到第一块号时,将可以比较其确定出的第二块号是否与第一节点广播的第一块号相同。若相同,则第三节点将接收到的块数据进行提交,即将块数据写入第三节点的区块链中。若不相同,则说明该第三节点中区块链的数据不是最新的数据,此时,该第三节点将会向第一节点发送第二消息,第一节点将根据该第二消息,向第三节点发送响应消息,该响应消息中携带有写入块数据后的第一区块链,第三节点在接收到响应消息后,可以根据写入块数据后的第一区块链,对第三节点的第三区块链进行更新,以保证第三节点中第三区块链中的数据为最新数据。第三节点在进行数据的同步更新后,可以向第一节点发送通知消息,以通知第三节点数据同步完成。
本发明实施例提供的基于区块链的数据处理方法,第三节点通过接收第一节点广播的块数据,该块数据为第一节点对第二节点发送的待处理数据进行处理后生成的,然后确定块数据在所述第三节点中的第二块号,并向第一节点发送第一消息,第一消息中包括第二块号,第一消息用于指示第一节点根据第一块号和第二块号,确定是否将块数据写入第一节点的第一区块链中,第一块号为块数据在第一节点中的块号。由于第一节点在确定出待处理数据对应的块数据在第一节点中的第一块号之后,还会将该块数据广播给至少一个第三节点,各第三节点将分别在本地计算块数据的第二块号,这样,第一节点将根据块数据在第一节点中的第一块号和块数据在各第三节点中的第二块号,判断第一节点本地的区块链中的数据是否为最新的数据,从而确定是否将块数据写入区块链中,这样,可以保证每次都是在区块链中的数据为最新的情况下进行块数据的写入,从而可以防止各节点中数据分叉的现象,从而可以保证各节点中数据的一致性。另外,本发明还能够方便的快速的实现和扩展,高效的提升了区块链出块与入链的效率,有效的保证了数据的一致性和持久化,适当的容错有效的保证了系统的可用,实现了更好的支撑区块链的上层应用。
图4为本发明实施例提供的基于区块链的数据处理方法实施例三的信令流程图,如图4所示,以第一节点为提交节点,第二节点为提案节点,第三节点为副本节点为例,本实施例的方法可以包括:
步骤401、提交节点对提案节点发送的待处理数据进行处理,生成块数据,并确定块数据在提交节点中的第一块号。
步骤402、提交节点向至少一个副本节点广播块数据。
步骤403、副本节点确定块数据在副本节点中的第二块号。
步骤404、副本节点向提交节点发送第一消息。
其中,第一消息中包括块数据在各副本节点中的第二块号
步骤405、提交节点根据第一块号和至少一个第二块号,确定是否将块数据写入提交节点的第一区块链中。
本发明实施例提供的基于区块链的数据处理方法,第一节点通过对第二节点发送的待处理数据进行处理,生成块数据,并确定块数据在第一节点中的第一块号,然后第一节点向至少一个第三节点广播块数据,并接收各第三节点发送的第一消息,其中,该第一消息中包括块数据在各第三节点中的第二块号,第一节点再根据第一块号和至少一个第二块号,确定是否将块数据写入第一节点的第一区块链中。由于第一节点在确定出待处理数据对应的块数据在第一节点中的第一块号之后,还会将该块数据广播给至少一个第三节点,各第三节点将分别在本地计算块数据的第二块号,这样,第一节点将根据块数据在第一节点中的第一块号和块数据在各第三节点中的第二块号,判断第一节点本地的区块链中的数据是否为最新的数据,从而确定是否将块数据写入区块链中,这样,可以保证每次都是在区块链中的数据为最新的情况下进行块数据的写入,从而可以防止各节点中数据分叉的现象,从而可以保证各节点中数据的一致性。
图5为本发明实施例提供的基于区块链的数据处理装置实施例一的结构示意图。该基于区块链的数据处理装置可以为独立的服务器,也可以为集成在服务器中的装置,该装置可以通过软件、硬件或者软硬件结合的方式实现。如图5所示,该装置包括:
处理模块11用于对第二节点发送的待处理数据进行处理,生成块数据,并确定所述块数据在第一节点中的第一块号;
收发模块12用于向至少一个第三节点广播所述块数据,并接收各所述第三节点发送的第一消息,所述第一消息中包括所述块数据在各所述第三节点中的第二块号;
确定模块13用于根据所述第一块号和至少一个所述第二块号,确定是否将所述块数据写入所述第一节点的第一区块链中。
本发明实施例提供的基于区块链的数据处理装置,可以执行上述对应方法实施例,其实现原理和技术效果类似,在此不再赘述。
可选的,所述确定模块13,具体用于:
统计与所述第一块号相同的第二块号对应的第三节点的数量;
判断所述第三节点的数量是否超过预设阈值;
若所述第三节点的数量超过预设阈值,则确定将所述块数据写入所述第一区块链中。
图6为本发明实施例提供的基于区块链的数据处理装置实施例二的结构示意图。在图5所示装置的基础上,该装置还包括验证模块14。
其中,验证模块14用于对所述第二节点的权限和签名信息进行验证;
所述处理模块11还用于在所述验证模块14验证出所述第二节点的权限和签名信息验证通过时,对第二节点发送的待处理数据进行处理,生成块数据。
可选的,获取模块15用于获取除所述第一节点之外的其他节点的区块链的块号;
判断模块16用于将所述第一区块链的块号和其他各节点中区块链的块号进行比较,判断所述第一区块链的块号是否最大;
所述处理模块11还用于在所述判断模块判断出所述第一区块链的块号最大时,对所述第二节点发送的待处理数据进行处理,生成块数据。
可选的,所述获取模块15还用于在确定所述第一区块链的块号非最大时,获取最大块号对应节点的第二区块链;
所述更新模块17还用于根据所述第二区块链,更新所述第一区块链。
可选的,所述收发模块12,具体用于:
向至少一个第三节点广播所述第一块号;
接收所述第三节点发送的第二消息,所述第二消息为所述第三节点在确定出所述第二块号与所述第一块号不同而发送的;
根据所述第二消息,向所述第三节点发送响应消息,所述响应消息中携带有写入所述块数据后的第一区块链,所述响应消息用于指示所述第三节点根据写入所述块数据后的第一区块链,对所述第三节点的第三区块链进行更新。
可选的,所述收发模块12还用于:在所述第三节点的数量未超过所述预设阈值时,向所述第二节点发送第三消息,所述第三消息用于通知所述第二节点所述块数据未被写入所述第一节点的区块链中。
可选的,所述处理模块11,具体用于:
确定所述第一区块链的块号;
根据所述块数据,更新所述块号,得到所述第一块号。
本发明实施例提供的基于区块链的数据处理装置,可以执行上述对应方法实施例,其实现原理和技术效果类似,在此不再赘述。
图7为本发明实施例提供的基于区块链的数据处理装置实施例三的结构示意图。该基于区块链的数据处理装置可以为独立的服务器,也可以为集成在服务器中的装置,该装置可以通过软件、硬件或者软硬件结合的方式实现。如图7所示,该装置包括:
收发模块21用于接收第一节点广播的块数据,所述块数据为所述第一节点对第二节点发送的待处理数据进行处理后生成的;
确定模块22用于确定所述块数据在所述第三节点中的第二块号;
所述收发模块23还用于向所述第一节点发送第一消息,所述第一消息中包括所述第二块号,所述第一消息用于指示所述第一节点根据第一块号和所述第二块号,确定是否将所述块数据写入所述第一节点的第一区块链中,所述第一块号为所述块数据在所述第一节点中的块号。
本发明实施例提供的基于区块链的数据处理装置,可以执行上述对应方法实施例,其实现原理和技术效果类似,在此不再赘述。
图8为本发明实施例提供的基于区块链的数据处理装置实施例四的结构示意图。在图7所示装置的基础上,该装置还包括验证模块23。
验证模块23用于对所述第一节点的权限和签名信息进行验证;
所述确定模块22还用于在所述验证模块验证所述第一节点的权限和签名信息验证通过时,确定所述块数据在所述第三节点中的第二块号。
可选的,所述确定模块22,具体用于:
确定所述第三节点中第三区块链的块号;
根据所述块数据,更新所述第三区块链的块号,得到所述第二块号。
可选的,所述收发模块21,还用于接收所述第一节点广播的所述第一块号;
所述收发模块21,还用于在确定出所述第一块号和所述第二块号不同时,向所述第一节点发送第二消息;
所述收发模块21,还用于接收所述第一节点根据所述第二消息发送的响应消息,所述响应消息中携带有写入所述块数据后的第一区块链;
所述更新模块24,用于根据写入所述块数据后的第一区块链,对所述第三节点的第三区块链进行更新。
可选的,处理模块25,用于在确定出所述第一块号和所述第二块号相同时,将所述块数据写入所述第三区块链中。
本发明实施例提供的基于区块链的数据处理装置,可以执行上述对应方法实施例,其实现原理和技术效果类似,在此不再赘述。
图9A示出了本发明服务器的一种可能的结构示意图。服务器900包括:处理单元902和通信单元903。处理单元902用于对服务器900的动作进行控制管理,例如,处理单元902用于支持服务器900执行图2的步骤201和203,和/或用于本发明所描述的技术的其它过程。通信单元903用于支持服务器900与其它网络实体的通信,例如与图1中示出的客户端之间的通信。服务器900还可以包括存储单元901,用于存储服务器900的计算机程序代码和数据。
其中,处理单元902可以是处理器或控制器,例如可以是CPU,通用处理器,数字信号处理器(DigitalSignalProcessor,DSP),专用集成电路(Application-SpecificIntegrated Circuit,ASIC),现场可编程门阵列(Field Programmable Gate Array,FPGA)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本发明公开内容所描述的各种示例性的逻辑方框,模块和电路。所述处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等等。通信单元903可以是通信接口、收发器、收发电路等,其中,通信接口是统称,可以包括一个或多个接口。存储单元901可以是存储器。
当处理单元902为处理器,通信单元903为通信接口,存储单元901为存储器时,本发明所涉及的服务器可以为图9B所示的服务器。
参阅图9B所示,该服务器910包括:处理器912、通信接口913、存储器911。可选的,服务器910还可以包括总线914。其中,通信接口913、处理器912以及存储器911可以通过总线914相互连接;总线914可以是外设部件互连标准(PeripheralComponentInterconnect,简称PCI)总线或扩展工业标准结构(ExtendedIndustryStandardArchitecture,简称EISA)总线等。所述总线914可以分为地址总线、数据总线、控制总线等。为便于表示,图9B中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
另外,存储器911中存储有计算机程序,并且被配置为由处理器912执行,该计算机程序包括用于执行如上图2-图4所示实施例所述的方法的指令。
本发明实施例还提供一种计算机可读存储介质,其中,计算机可读存储介质存储有计算机程序,所述计算机程序使得服务器执行前述图3-图5所示实施例提供的基于区块链的数据处理方法。其中,上述可读存储介质可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (28)
1.一种基于区块链的数据处理方法,其特征在于,包括:
第一节点对第二节点发送的待处理数据进行处理,生成块数据,并确定所述块数据在所述第一节点中的第一块号;
所述第一节点向至少一个第三节点广播所述块数据,并接收各所述第三节点发送的第一消息,所述第一消息中包括所述块数据在各所述第三节点中的第二块号;
所述第一节点根据所述第一块号和至少一个所述第二块号,确定是否将所述块数据写入所述第一节点的第一区块链中。
2.根据权利要求1所述的方法,其特征在于,所述第一节点根据所述第一块号和至少一个所述第二块号,确定是否将所述块数据写入所述第一节点的第一区块链中,包括:
统计与所述第一块号相同的第二块号对应的第三节点的数量;
判断所述第三节点的数量是否超过预设阈值;
若所述第三节点的数量超过预设阈值,则确定将所述块数据写入所述第一区块链中。
3.根据权利要求1或2所述的方法,其特征在于,所述第一节点对第二节点发送的待处理数据进行处理,生成块数据之前,所述方法还包括:
所述第一节点对所述第二节点的权限和签名信息进行验证;
若所述第二节点的权限和签名信息验证通过,则执行第一节点对第二节点发送的待处理数据进行处理,生成块数据的步骤。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
所述第一节点获取除所述第一节点之外的其他节点的区块链的块号;
所述第一节点将所述第一区块链的块号和其他各节点中区块链的块号进行比较,判断所述第一区块链的块号是否最大;
所述第一节点对第二节点发送的待处理数据进行处理,生成块数据,包括:
所述第一节点在确定所述第一区块链的块号最大时,对所述第二节点发送的待处理数据进行处理,生成块数据。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
所述第一节点在确定所述第一区块链的块号非最大时,获取最大块号对应节点的第二区块链;
所述第一节点根据所述第二区块链,更新所述第一区块链。
6.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
所述第一节点向至少一个第三节点广播所述第一块号;
所述第一节点接收所述第三节点发送的第二消息,所述第二消息为所述第三节点在确定出所述第二块号与所述第一块号不同而发送的;
所述第一节点根据所述第二消息,向所述第三节点发送响应消息,所述响应消息中携带有写入所述块数据后的第一区块链,所述响应消息用于指示所述第三节点根据写入所述块数据后的第一区块链,对所述第三节点的第三区块链进行更新。
7.根据权利要求2所述的方法,其特征在于,所述方法还包括:
若所述第三节点的数量未超过所述预设阈值,所述第一节点向所述第二节点发送第三消息,所述第三消息用于通知所述第二节点所述块数据未被写入所述第一节点的区块链中。
8.根据权利要求1或2所述的方法,其特征在于,所述确定所述块数据在所述第一节点中的第一块号,包括:
所述第一节点确定所述第一区块链的块号;
所述第一节点根据所述块数据,更新所述块号,得到所述第一块号。
9.一种基于区块链的数据处理方法,其特征在于,包括:
第三节点接收第一节点广播的块数据,所述块数据为所述第一节点对第二节点发送的待处理数据进行处理后生成的;
所述第三节点确定所述块数据在所述第三节点中的第二块号;
所述第三节点向所述第一节点发送第一消息,所述第一消息中包括所述第二块号,所述第一消息用于指示所述第一节点根据第一块号和所述第二块号,确定是否将所述块数据写入所述第一节点的第一区块链中,所述第一块号为所述块数据在所述第一节点中的块号。
10.根据权利要求9所述的方法,其特征在于,所述第三节点确定所述块数据在所述第三节点中的第二块号之前,所述方法还包括:
所述第三节点对所述第一节点的权限和签名信息进行验证;
若所述第一节点的权限和签名信息验证通过,则所述第三节点确定所述块数据在所述第三节点中的第二块号。
11.根据权利要求9或10所述的方法,其特征在于,所述第三节点确定所述块数据在所述第三节点中的第二块号,包括:
所述第三节点确定所述第三节点中第三区块链的块号;
所述第三节点根据所述块数据,更新所述第三区块链的块号,得到所述第二块号。
12.根据权利要求9或10所述的方法,其特征在于,所述方法还包括:
所述第三节点接收所述第一节点广播的所述第一块号;
所述第三节点在确定出所述第一块号和所述第二块号不同时,向所述第一节点发送第二消息;
所述第三节点接收所述第一节点根据所述第二消息发送的响应消息,所述响应消息中携带有写入所述块数据后的第一区块链;
所述第三节点根据写入所述块数据后的第一区块链,对所述第三节点的第三区块链进行更新。
13.根据权利要求12所述的方法,其特征在于,所述方法还包括:
所述第三节点在确定出所述第一块号和所述第二块号相同时,将所述块数据写入所述第三区块链中。
14.一种基于区块链的数据处理装置,其特征在于,包括:
处理模块,用于对第二节点发送的待处理数据进行处理,生成块数据,并确定所述块数据在第一节点中的第一块号;
收发模块,用于向至少一个第三节点广播所述块数据,并接收各所述第三节点发送的第一消息,所述第一消息中包括所述块数据在各所述第三节点中的第二块号;
确定模块,用于根据所述第一块号和至少一个所述第二块号,确定是否将所述块数据写入所述第一节点的第一区块链中。
15.根据权利要求14所述的装置,其特征在于,所述确定模块,具体用于:
统计与所述第一块号相同的第二块号对应的第三节点的数量;
判断所述第三节点的数量是否超过预设阈值;
若所述第三节点的数量超过预设阈值,则确定将所述块数据写入所述第一区块链中。
16.根据权利要求14或15所述的装置,其特征在于,所述装置还包括:
验证模块,用于对所述第二节点的权限和签名信息进行验证;
所述处理模块,还用于在所述验证模块验证出所述第二节点的权限和签名信息验证通过时,对第二节点发送的待处理数据进行处理,生成块数据。
17.根据权利要求16所述的装置,其特征在于,所述装置还包括:
获取模块,用于获取除所述第一节点之外的其他节点的区块链的块号;
判断模块,用于将所述第一区块链的块号和其他各节点中区块链的块号进行比较,判断所述第一区块链的块号是否最大;
所述处理模块,还用于在所述判断模块判断出所述第一区块链的块号最大时,对所述第二节点发送的待处理数据进行处理,生成块数据。
18.根据权利要求17所述的装置,其特征在于,所述装置还包括:更新模块;其中,
所述获取模块,还用于在确定所述第一区块链的块号非最大时,获取最大块号对应节点的第二区块链;
所述更新模块,还用于根据所述第二区块链,更新所述第一区块链。
19.根据权利要求14或15所述的装置,其特征在于,所述收发模块,具体用于:
向至少一个第三节点广播所述第一块号;
接收所述第三节点发送的第二消息,所述第二消息为所述第三节点在确定出所述第二块号与所述第一块号不同而发送的;
根据所述第二消息,向所述第三节点发送响应消息,所述响应消息中携带有写入所述块数据后的第一区块链,所述响应消息用于指示所述第三节点根据写入所述块数据后的第一区块链,对所述第三节点的第三区块链进行更新。
20.根据权利要求15所述的装置,其特征在于,所述收发模块,还用于:在所述第三节点的数量未超过所述预设阈值时,向所述第二节点发送第三消息,所述第三消息用于通知所述第二节点所述块数据未被写入所述第一节点的区块链中。
21.根据权利要求14或15所述的装置,其特征在于,所述处理模块,具体用于:
确定所述第一区块链的块号;
根据所述块数据,更新所述块号,得到所述第一块号。
22.一种基于区块链的数据处理装置,其特征在于,包括:
收发模块,用于接收第一节点广播的块数据,所述块数据为所述第一节点对第二节点发送的待处理数据进行处理后生成的;
确定模块,用于确定所述块数据在第三节点中的第二块号;
所述收发模块,还用于向所述第一节点发送第一消息,所述第一消息中包括所述第二块号,所述第一消息用于指示所述第一节点根据第一块号和所述第二块号,确定是否将所述块数据写入所述第一节点的第一区块链中,所述第一块号为所述块数据在所述第一节点中的块号。
23.根据权利要求22所述的装置,其特征在于,所述装置还包括:
验证模块,用于对所述第一节点的权限和签名信息进行验证;
所述确定模块,还用于在所述验证模块验证所述第一节点的权限和签名信息验证通过时,确定所述块数据在所述第三节点中的第二块号。
24.根据权利要求22或23所述的装置,其特征在于,所述确定模块,具体用于:
确定所述第三节点中第三区块链的块号;
根据所述块数据,更新所述第三区块链的块号,得到所述第二块号。
25.根据权利要求22或23所述的装置,其特征在于,所述装置还包括:更新模块,其中,
所述收发模块,还用于接收所述第一节点广播的所述第一块号;
所述收发模块,还用于在确定出所述第一块号和所述第二块号不同时,向所述第一节点发送第二消息;
所述收发模块,还用于接收所述第一节点根据所述第二消息发送的响应消息,所述响应消息中携带有写入所述块数据后的第一区块链;
所述更新模块,用于根据写入所述块数据后的第一区块链,对所述第三节点的第三区块链进行更新。
26.根据权利要求25所述的装置,其特征在于,所述装置还包括:
处理模块,用于在确定出所述第一块号和所述第二块号相同时,将所述块数据写入所述第三区块链中。
27.一种服务器,其特征在于,包括:
处理器;
存储器;以及
计算机程序;
其中,所述计算机程序被存储在所述存储器中,并且被配置为由所述处理器执行,所述计算机程序包括用于执行如权利要求1-8任一项所述的方法的指令,或者用于执行如权利要求9-13任一项所述的方法的指令。
28.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序使得服务器执行权利要求1-8任一项所述的方法,或者执行权利要求9-13任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810395562.9A CN110417833B (zh) | 2018-04-27 | 2018-04-27 | 基于区块链的数据处理方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810395562.9A CN110417833B (zh) | 2018-04-27 | 2018-04-27 | 基于区块链的数据处理方法、装置及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110417833A true CN110417833A (zh) | 2019-11-05 |
CN110417833B CN110417833B (zh) | 2022-05-20 |
Family
ID=68347056
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810395562.9A Active CN110417833B (zh) | 2018-04-27 | 2018-04-27 | 基于区块链的数据处理方法、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110417833B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113259179A (zh) * | 2021-06-18 | 2021-08-13 | 杭州云智声智能科技有限公司 | 一种基于节点评分的拜占庭容错共识方法与系统 |
CN113882997A (zh) * | 2021-08-16 | 2022-01-04 | 国网新源控股有限公司 | 基于区块链的水电机组调节方法及系统 |
CN114070617A (zh) * | 2021-11-16 | 2022-02-18 | 上海柯林布瑞信息技术有限公司 | 基于区块链的医疗数据共享方法和装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170124556A1 (en) * | 2015-10-21 | 2017-05-04 | Manifold Technology, Inc. | Event synchronization systems and methods |
CN107332876A (zh) * | 2017-05-31 | 2017-11-07 | 深圳前海微众银行股份有限公司 | 区块链状态的同步方法及装置 |
CN107491519A (zh) * | 2017-08-15 | 2017-12-19 | 中国联合网络通信集团有限公司 | 区块链账本的查询方法及装置 |
CN107819749A (zh) * | 2017-10-26 | 2018-03-20 | 平安科技(深圳)有限公司 | 基于以太坊的区块链系统和交易数据处理方法 |
-
2018
- 2018-04-27 CN CN201810395562.9A patent/CN110417833B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170124556A1 (en) * | 2015-10-21 | 2017-05-04 | Manifold Technology, Inc. | Event synchronization systems and methods |
CN107332876A (zh) * | 2017-05-31 | 2017-11-07 | 深圳前海微众银行股份有限公司 | 区块链状态的同步方法及装置 |
CN107491519A (zh) * | 2017-08-15 | 2017-12-19 | 中国联合网络通信集团有限公司 | 区块链账本的查询方法及装置 |
CN107819749A (zh) * | 2017-10-26 | 2018-03-20 | 平安科技(深圳)有限公司 | 基于以太坊的区块链系统和交易数据处理方法 |
Non-Patent Citations (1)
Title |
---|
浮云发发: "区块链节点信息同步", 《HTTPS://WWW.JIANSHU.COM/P/239F2ED0E9B0》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113259179A (zh) * | 2021-06-18 | 2021-08-13 | 杭州云智声智能科技有限公司 | 一种基于节点评分的拜占庭容错共识方法与系统 |
CN113882997A (zh) * | 2021-08-16 | 2022-01-04 | 国网新源控股有限公司 | 基于区块链的水电机组调节方法及系统 |
CN113882997B (zh) * | 2021-08-16 | 2023-06-09 | 国网新源控股有限公司 | 基于区块链的水电机组调节方法及系统 |
CN114070617A (zh) * | 2021-11-16 | 2022-02-18 | 上海柯林布瑞信息技术有限公司 | 基于区块链的医疗数据共享方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN110417833B (zh) | 2022-05-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20180308091A1 (en) | Fairness preserving byzantine agreements | |
CN113014634B (zh) | 集群选举处理方法、装置、设备及存储介质 | |
CN110875893B (zh) | 共识验证方法、校验节点及区块链系统 | |
EP1617331B1 (en) | Efficient changing of replica sets in distributed fault-tolerant computing system | |
US6438582B1 (en) | Method and system for efficiently coordinating commit processing in a parallel or distributed database system | |
CN110417833A (zh) | 基于区块链的数据处理方法、装置及存储介质 | |
CN106033562B (zh) | 事务处理方法、事务参与节点及事务协调节点 | |
CN111698315B (zh) | 针对区块的数据处理方法、数据处理装置及计算机设备 | |
JP2014002751A (ja) | フェイルオーバシステムおよび方法 | |
CN102308559A (zh) | 一种用于集群计算机系统的投票仲裁方法及装置 | |
Lyu et al. | Design and evaluation of a fault-tolerant mobile-agent system | |
CN113347164A (zh) | 基于区块链的分布式共识系统及方法、设备、存储介质 | |
CN111988203A (zh) | 节点选举方法、装置及存储介质 | |
CN111711526A (zh) | 一种区块链节点的共识方法及系统 | |
CN113064764B (zh) | 在区块链系统中执行区块的方法及装置 | |
CN109117310A (zh) | 实现数据备份的容灾系统、方法及装置 | |
CN105183544A (zh) | 一种非阻塞式容错的分布式事务提交方法及系统 | |
US20100262871A1 (en) | Method for implementing highly available data parallel operations on a computational grid | |
CN111582845A (zh) | 区块链的跨链交易方法、装置以及电子设备 | |
CN114020845A (zh) | 区块链网络管理方法、系统、电子设备及存储介质 | |
US11522966B2 (en) | Methods, devices and systems for non-disruptive upgrades to a replicated state machine in a distributed computing environment | |
Tomić | A review of consensus protocols in permissioned blockchains | |
CN110544136A (zh) | 计算同步投放概率的方法、装置、设备及存储介质 | |
CN111427689B (zh) | 集群保活方法、装置及存储介质 | |
CN114841710B (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 |