CN111901388B - 区块链多链系统、用于区块链多链系统的方法、电子设备 - Google Patents
区块链多链系统、用于区块链多链系统的方法、电子设备 Download PDFInfo
- Publication number
- CN111901388B CN111901388B CN202010623241.7A CN202010623241A CN111901388B CN 111901388 B CN111901388 B CN 111901388B CN 202010623241 A CN202010623241 A CN 202010623241A CN 111901388 B CN111901388 B CN 111901388B
- Authority
- CN
- China
- Prior art keywords
- node
- chain
- master node
- slave
- master
- 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
Images
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/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- 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/14—Session management
- H04L67/141—Setup of application sessions
-
- 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/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开涉及一种区块链多链系统、用于区块链多链系统的方法、电子设备,所述区块链多链系统包括多个区块链节点以及保存在多个区块链节点中的多个区块链,多个区块链包括主链和至少一个子链,每一区块链节点保存有主链或保存有主链以及任意子链,多个区块链节点包括主节点,每一主节点连接有从节点集合,针对任一从节点集合,从节点集合中的区块链节点保存有相同的子链;其中,主节点用于在与另一主节点建立连接的情况下,向与主节点对应的从节点发送另一主节点的标识信息;主节点对应的任一从节点用于,在接收到主节点发送的标识信息时,若确定从节点与另一主节点保存有同一子链编号的子链,则为另一主节点创建对应同一子链编号的子链的虚拟节点。
Description
技术领域
本公开涉及区块链技术领域,具体地,涉及一种区块链多链系统、用于区块链多链系统的方法、电子设备。
背景技术
区块链技术,也被称之为分布式账本技术,是一种由若干台计算设备共同参与“记账”,共同维护一份完整的分布式数据库的新兴技术。由于区块链技术具有去中心化、公开透明、各计算设备之间可以快速进行数据同步等特性,其在众多领域中都拥有较高的应用前景。
相关技术中,联盟链系统支持子链模式,不同的子链节点之间不会有性能的相互影响,子链节点也不会将数据公开到其它子链节点上。因此,不同的客户或者应用可以使用不同子链节点,从而能够保证应用的稳定性。
发明内容
本公开的目的是提供一种区块链多链系统、用于区块链多链系统的方法、电子设备,以解决上述相关技术问题。
为了实现上述目的,根据本公开实施例的第一方面,提供一种区块链多链系统,包括多个区块链节点以及保存在所述多个区块链节点中的多个区块链,所述多个区块链包括主链以及至少一个子链,每一所述区块链节点保存有所述主链,或者保存有所述主链以及任意所述子链,并且所述多个区块链节点包括主节点,每一所述主节点连接有从节点集合,针对任一所述从节点集合,所述从节点集合中的区块链节点保存有相同的子链;其中,
对于所述多个区块链节点中的任一主节点,所述主节点用于在与另一主节点建立连接的情况下,向与所述主节点对应的从节点发送所述另一主节点的标识信息,所述标识信息包括所述另一主节点的节点标识以及所述另一主节点启用的子链的子链编号;
所述主节点对应的任一从节点用于,在接收到所述主节点发送的所述标识信息时,若确定所述从节点保存有与所述另一主节点启用的子链的子链编号相同的子链,则为所述另一主节点创建对应所述同一子链编号的子链的虚拟节点;
其中,在任意两个从节点互相建立有对应同一子链编号的子链的虚拟节点的情况下,所述两个从节点之间能够基于所述虚拟节点进行针对所述同一子链编号的子链的数据读写操作。
根据本公开实施例的第二方面,提供一种用于区块链多链系统的方法,应用于上述第一方面中任一项所述的区块链多链系统,所述方法包括:
在所述主节点与另一主节点建立连接的情况下,向与所述主节点对应的从节点发送所述另一主节点的标识信息,所述标识信息包括所述另一主节点的节点标识以及所述另一主节点启用的子链的子链编号;
所述从节点在接收到所述主节点发送的所述标识信息时,若确定所述从节点保存有与所述另一主节点启用的子链的子链编号相同的子链,则为所述另一主节点创建对应所述同一子链编号的子链的虚拟节点;
其中,在任意两个从节点互相建立有对应同一子链编号的子链的虚拟节点的情况下,所述两个从节点之间能够基于所述虚拟节点进行针对所述同一子链编号的子链的数据读写操作。
根据本公开实施例的第三方面,提供一种电子设备,所述电子设备作为上述第一方面中任一项所述的区块链多链系统中的区块链节点,所述电子设备包括:
存储器,其上存储有计算机程序;
处理器,用于执行所述存储器中的所述计算机程序,以实现上述第二方面中任一项所述方法中的主节点所执行的步骤。
根据本公开实施例的第四方面,提供一种电子设备,所述电子设备作为上述第一方面中任一项所述的区块链多链系统中的区块链节点,所述电子设备包括:
存储器,其上存储有计算机程序;
处理器,用于执行所述存储器中的所述计算机程序,以实现上述第一方面中任一项所述方法中的从节点所执行的步骤。
上述技术方案中,主节点在与另一主节点建立连接后,可以向该主节点的从节点发送所述另一主节点的标识信息。此外,所述从节点可以根据所述标识信息确定所述从节点与所述另一主节点是否保存有同一子链编号的子链。并,在二者保存同一子链编号的子链的情况下,为所述另一主节点建立对应于所述子链编号的子链的虚拟节点。这样,通过建立所述虚拟节点,同一子链中的不同从节点能够基于所述虚拟节点实现通信。也就是说,在实现从节点之间的通信时,主节点无需处理子节点的业务逻辑,因而能够降低主节点的负担。
本公开的其他特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
附图是用来提供对本公开的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本公开,但并不构成对本公开的限制。在附图中:
图1是本公开一示例性实施例所示出的一种区块链多链系统的示意图。
图2是本公开一示例性实施例所示出的一种用于区块链多链系统的方法的流程图。
图3是本公开一示例性实施例所示出的一种用于区块链多链系统的方法的流程图。
图4是本公开一示例性实施例所示出的一种用于区块链多链系统的方法的流程图。
图5是本公开一示例性实施例所示出的一种数据写入的流程图。
图6是本公开一示例性实施例所示出的一种数据读取的流程图。
图7是根据本公开一示例性实施例示出的一种电子设备的框图。
图8是根据本公开一示例性实施例示出的一种电子设备的框图。
具体实施方式
以下结合附图对本公开的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本公开,并不用于限制本公开。
在介绍本公开所提供的区块链多链系统、用于区块链多链系统的方法、电子设备之前,首先对本公开各实施例的应用场景以及相关术语进行介绍。
区块链是由区块链网络中所有节点共同参与维护的去中心化分布式数据库系统,它由一系列基于密码学方法产生的数据块组成,每个数据块即为区块链中的一个区块。根据产生时间的先后顺序,区块被有序地链接在一起,形成一个数据链条,被形象地称为区块链。
相关技术中,联盟链系统支持子链模式,不同的子链节点之间性能互不影响,子链节点也不会将数据公开到其它子链节点上。因此,不同的客户或者应用可以使用不同子链节点,从而能够保证应用的稳定性。申请人发现,对于一些以p2p(peertopeer,对等网络)方式建立的公开链而言,为了保持公开链的特性,子链节点之间还可以有一些相互的数据,以保证子链的防篡改特性。
为达到这样的目的,子链节点与子链节点之间、子链节点与主链节点之间需要共享同一网络。在一些场景中,主链可以是一个完整的网络,子链可以依附于所述主链。其中,主链节点之间可以建立有连接,因此主链节点之间可以正常通信,但子链节点之间并没有建立连接,所以无法直接通信。为实现子链节点之间的通信,在一些实施方式中,可以让主链节点帮助处理子链节点的业务。比如,当子链节点产生一个新的区块之后,可以通知对应的主链节点,所述主链节点再通知相连的其它主链节点这个事件。其它主链节点接收到事件后,再通知自己对应的子链节点这个事件,或者与子链节点共同处理这个事件。一般而言,除了区块事件,区块链上的事件还有数十个之多。因此,采用这样的方式,主链节点的业务逻辑变得更为复杂,增大了主链节点的负担。并且,对于涉及加密数据的子链节点,主链节点也难以进行相关处理操作。
为此,本公开提供一种区块链多链系统,包括多个区块链节点以及保存在所述多个区块链节点中的多个区块链,所述多个区块链包括主链以及至少一个子链,每一所述区块链节点保存有所述主链,或者保存有所述主链以及任意所述子链,并且所述多个区块链节点包括主节点,每一所述主节点连接有从节点集合,针对任一所述从节点集合,所述从节点集合中的区块链节点保存有相同的子链。
举例来讲,参照图1所示出的一种区块链多链系统的示意图,所述区块链多链系统可以包括多个区块链节点(图中仅示出A、A1、A5、A3、B、B1、B2、B6、C、C1、C2以及C3 12个区块链节点)。其中,根据功能的不同,每一节点可以属于不同的区块链中,并保存不同的区块链数据。例如,针对节点X(图中未示出),节点X可以是主链上的节点并保存主链的全部或部分区块数据。针对节点A1,节点A1可以同时是主链以及子链1上的节点,在这种情况下,所述节点A1可以同时保存有主链以及子链1的区块数据。此外,所述区块链多链系统还可以包括多个主节点,主节点可以连接多个保存有子链数据的从节点,所述主节点还可以保存有与该主节点相连的从节点所对应的子链数据。其中,所述从节点可以根据保存的子链的编号,构成多个从节点集合,例如,保存子链1的从节点可以构成一个从节点集合。在一些实施例中,属于同一从节点集合或是属于同一子链的节点还可以设置有对应的子链节点ID,以便于对各子链节点进行区分。
对于所述多个区块链节点中的任一主节点,所述主节点用于在与另一主节点建立连接的情况下,向与所述主节点对应的从节点发送所述另一主节点的标识信息,所述标识信息包括所述另一主节点的节点标识以及所述另一主节点启用的子链的子链编号。
沿用上述例子,主节点A和主节点C可以是还未建立连接的区块链节点,其中,主节点A和C已经连接并启用了各自的多条子链。这样,当主节点A和主节点C建立连接时,所述主节点A可以向对应的从节点A1、A5、A3发送主节点C的节点标识以及主节点C启用的子链的子链编号1、2、3。当然,在一些实施例中,所述标识信息还可以包括主节点C的其他信息,如设备信息等,本公开对此不做限定。
相应的,所述主节点A的从节点A1、A5、A3在接收到所述主节点发送的所述标识信息时,可以将所述标识信息中主节点C启用的子链的子链编号(1、2、3)与自身保存的子链的子链编号进行对比,从而确定所述另一主节点启用的子链中是否包括所述从节点自身保存的子链。当确定所述从节点保存有与所述另一主节点启用的子链的子链编号相同的子链时,则为所述另一主节点创建对应所述同一子链编号的子链的虚拟节点。沿用上述例子,从节点A1保存了子链1,主节点C同样启用了子链1,因此,所述从节点A1可以为所述主节点C创建对应于子链1的虚拟节点VC1。类似的,节点A3还可以为所述主节点C创建对应于子链3的虚拟节点,本公开在此不做赘述。
这样,在任意两个从节点互相建立有对应同一子链编号的子链的虚拟节点的情况下,所述两个从节点之间能够基于所述虚拟节点进行针对所述同一子链编号的子链的数据读写操作。
采用上述技术方案,主节点在与另一主节点建立连接后,可以向该主节点的从节点发送所述另一主节点的标识信息。此外,所述从节点可以根据所述标识信息确定所述从节点与所述另一主节点是否保存有同一子链编号的子链。并,在二者保存同一子链编号的子链的情况下,为所述另一主节点建立对应于所述子链编号的子链的虚拟节点。这样,通过建立所述虚拟节点,同一子链中的不同从节点能够基于所述虚拟节点实现通信。并且,在实现从节点之间的通信时,主节点无需处理子节点的业务逻辑,因而能够降低主节点的负担。
值得注意的是,上述实施例中从主节点A以及主节点A的从节点的角度对所述虚拟节点的添加流程进行了说明。但在具体实施时,与主节点A相连的主节点C一侧也可以进行上述虚拟节点的添加流程,例如节点C1可以为主节点A创建对应于子链1的虚拟节点VA1。
这样,在一种可能的实施方式中,所述主节点还用于,响应于与所述另一主节点成功建立连接,向所述另一主节点发送连接通知消息,所述连接通知消息包括所述主节点的节点标识以及所述主节点已启用的子链的子链编号。
所述主节点在与另一区块链节点建立连接的情况下,向与所述主节点对应的从节点发送所述另一主节点的标识信息包括:响应于接收到所述另一主节点发送的连接通知消息,根据所述连接通知消息内的节点标识和子链编号,向所述从节点发送所述标识信息。
沿用上述例子,主节点A在与主节点C建立连接后,还可以向主节点C发送自身的节点标识以及所连接和启用的子链编号(1、5、3)。对应的,主节点C作为与主节点A相连的另一主节点,当所述主节点C接收到来自主节点A的连接通知消息时,所述主节点C可以根据所述连接通知消息内的节点标识和子链编号,向对应的从节点C1、C2、C3发送所述标识信息。类似的,从节点C1、C2、C3可以将所述标识信息中主节点A启用的子链的子链编号(1、5、3)与自身保存的子链的子链编号进行对比,从而建立对应的虚拟节点VA1,具体建立过程请参照上述关于主节点A一侧建立虚拟节点的实施例,本公开对此不做赘述。
值得说明的是,当两个主节点已经建立连接时,所述两个主节点中的任一主节点也有可能启用新的子链节点。因此,在另一种可能的实施方式中,所述主节点在与另一区块链节点建立连接的情况下,向与所述主节点对应的从节点发送所述另一主节点的标识信息包括:
在所述主节点与所述另一主节点已建立连接的情况下,响应于所述另一主节点创建新的子链节点的创建通知消息,根据所述创建通知消息内的节点标识和子链编号,向所述从节点发送所述标识信息。
所述主节点还用于:响应于创建新的子链节点,向所述另一主节点以及所述主节点对应的从节点发送创建通知消息,所述创建通知消息包括所述主节点的节点标识以及新创建的子链节点的子链编号。
以图1为例进行说明,在主节点B与主节点C建立连接的情况下,若主节点B启用了子链节点B2,则所述主节点B可以响应于事件“启用子链节点B2”,向主节点C发送包括所述主节点B以及子链编号2的创建通知消息。相应的,所述主节点C在接收到所述创建通知消息之后,可以根据所述创建通知消息内的节点标识和子链编号,向对应的从节点C1、C2、C3发送所述标识信息,进而使得所述主节点C的从节点能够根据所述标识信息建立对应的虚拟节点。
值得注意的是,所述主节点在启用新的子链节点时,所述主节点还可以向所述新启用的子链节点发送创建通知消息。在这种情况下,所述创建通知消息包括与所述主节点相连的其他主节点的节点标识以及子链编号。这样,所述新创建的子链节点可以根据所述创建通知消息为每一所述其他主节点的对应子链建立虚拟节点,从而使得新添加的子链节点能够与其他主节点所对应的子链节点通信。
在一些实施例中,所述主节点还用于:在所述主节点与所述另一主节点断开连接时,向所述主节点对应的从节点发送删除消息,所述删除消息用于所述从节点删除为所述另一主节点创建的虚拟节点。例如,当主节点A与主节点C断开连接后,所述主节点A可以向对应的从节点A1、A5、A3发送删除消息,以使得所述从节点A1、A5、A3删除对应主节点C的虚拟节点VC1、VC3(图中未示出)。当然,节点C也可以向对应的从节点发送删除消息,以使得其对应的从节点删除相关的虚拟节点。
在另一些实施例中,所述从节点还用于,在与对应的主节点断开连接时,删除所创建的所有虚拟节点。应当理解,当从节点与主节点断开连接后,所述从节点创建的虚拟节点也可能失效,因此,当所述从节点与主节点断开时可以删除创建的虚拟节点,从而对相关资源进行释放。
在另一些实施例中,所述从节点还用于,在所述从节点创建的任一虚拟节点通信失败时,删除该虚拟节点。例如,当所述从节点被对应的主节点断开时,所述从节点可以删除对应的虚拟节点。或者,当所述从节点对应的主节点异常(例如主节点无响应)导致虚拟节点无法通信时,所述从节点也可以删除对应的虚拟节点。当然,在一些实施例中,所述从节点也可以在创建的虚拟节点通信失败且所述从节点与对应的主节点断开连接的情况下,才删除所述虚拟节点,从而降低误操作率。采用上述技术方案,根据应用场景的不同可以创建和删除虚拟节点,从而通过虚拟节点实现了从节点之间的通信,也实现了针对虚拟节点的管理。
针对所述从节点通过虚拟节点进行通信的过程,在一种可能的实施方式中,所述从节点还用于:
通过虚拟节点对待写入的数据添加标记信息,得到标记后的待写入数据,所述标记信息包括源主节点的标识、目的主节点的标识、所述待写入数据待写入的目标从节点的子链编号,其中,所述源主节点的标识是所述从节点对应的主节点的标识。
参照图1,以从节点C1和A1通信为例进行说明。从节点C1可以将待写入的数据发送至虚拟节点VA1,虚拟节点VA1在监听到所述待写入数据之后可以对所述待写入数据添加所述标记信息。其中,所述标记信息包括源主节点标识C、目的主节点标识A、待写入的目标从节点编号。值得说明的是,所述目标从节点编号可以包括所述目标从节点所对应的子链编号以及该目标从节点在对应子链上的编号ID。这样,所述虚拟节点在标记完成后还可以将标记后的待写入数据转发给所述从节点C1对应的主节点C。
相应的,所述主节点C还用于,响应于接收到所述从节点C1发送的所述标记后的待写入数据,根据所述标记信息中的目的主节点的标识,将所述标记后的待写入数据发送给与所述主节点连接的所述目的主节点。
此外,当所述主节点作为数据接收方时,所述主节点还用于:
响应于接收到所述另一主节点发送的标记后的待写入数据,所述标记后的待写入数据包括作为目标节点标识的所述主节点的节点标识、作为源主节点标识的所述另一主节点的节点标识以及待写入所述待写入数据的目标从节点的子链编号;
根据所述目标从节点的子链编号将所述标记后的待写入数据发送给所述目标从节点;
所述目标从节点还用于,接收所述主节点发送的所述标记后的待写入数据,根据所述源主节点标识以及所述目标从节点的子链编号,将所述待写入数据注入对应的虚拟节点,并从所述虚拟节点读取所述待写入数据。
沿用上述例子,当主节点A接收到来自于主节点C的标记后的待写入数据之后,可以根据所述标记后的待写入数据中的目标从节点的子链编号将所述标记后的待写入数据发送至对应的目标从节点A1。相应的,所述目标从节点A1可以将所述标记后的待写入数据注入到虚拟节点VC1上。这样,从节点A1能够从所述虚拟节点中读取到所述待写入数据。此外,在一些可能的实施方式中,所述从节点A1在接收到来自于主节点C的标记后的待写入数据之后也可以直接对该数据进行读取,本公开对此不做限定。
采用上述技术方案,不同从节点能够基于建立的虚拟节点进行通信。并且,在通信的过程中,主节点无需了解从节点的业务逻辑也无需为从节点进行复杂的数据处理,因此采用上述技术方案还能够降低主节点的负担。
在一些场景中,所述从节点在通过对应的虚拟节点进行业务活动前,虚拟节点之间还可以进行握手验证。也就是说,上述实施例中的待写入的数据也可以是握手数据,这样,所述从节点通过虚拟节点对待写入的数据添加标记信息,得到标记后的待写入数据具体包括:
在基于所述另一主节点的节点标识和子链编号成功创建虚拟节点的情况下,生成握手数据,并对所述握手数据添加所述标记信息,得到标记后的握手数据。其中,所述标记后的握手数据用于与所述另一主节点的从节点创建的虚拟节点建立连接。
对应的,所述主节点还用于:在根据所述目标从节点的子链编号将所述标记后的待写入数据发送给所述目标从节点之前,判断所述待写入数据是否为握手数据。
沿用上述例子,在主节点A接收到所述待写入数据之后,可以对所述待写入数据进行判断。其中,在确定所述待写入数据为握手数据的情况下,所述主节点A可以判断所述主节点对应的从节点是否运行有根据所述另一主节点的节点标识C和所述子链编号创建的目标虚拟节点VC1。
在一些实施例中,所述主节点A的从节点未运行所述目标虚拟节点VC1,在这种情况下,所述主节点A可以开始计时。并,在计时达到预设时长时,若所述主节点A的从节点仍未运行所述目标虚拟节点VC1,则所述主节点A可以丢弃所述握手数据。其中,所述预设时长例如可以为一个握手周期,如5秒等。
在另一些实施例中,所述主节点A的从节点运行有所述目标虚拟节点VC1,则所述主节点A可以根据所述目标从节点的子链编号将所述标记后的待写入数据发送给所述目标从节点A1。
在另一些实施例中,在计时达到预设时长之前,所述从节点启动运行了所述目标虚拟节点。在这种情况下,所述主节点根据所述目标从节点的子链编号将所述标记后的待写入数据发送给所述目标从节点具体包括:
在计时达到预设时长之前,若所述从节点运行所述目标虚拟节点,则根据所述目标从节点的子链编号将所述标记后的待写入数据发送给所述目标从节点。
申请人发现,对于两个主节点建立连接且均未启动从节点的情况下,若所述两个主节点在小于一个握手周期的阈值时间内先后启动从节点,则所述两个从节点的虚拟节点可能握手失败。例如,先启动的从节点在建立第一虚拟节点后可以向后启动的从节点的第二虚拟节点发送握手数据,在这种情况下,由于所述第二虚拟节点还未启动,因此无法收到这个握手数据。此外,第二虚拟节点启动时,也可以发出握手数据,此时由于第一虚拟节点还在等待握手数据(等待时间小于一个握手周期),所以第一虚拟节点能够收到第二虚拟节点发送的握手数据并判断握手成功。相应的,第二虚拟节点此时就可能握手失败,即便所述第二虚拟节点可以请求第一虚拟节点再次与己方握手,但由于此时第一虚拟节点已经判断握手成功,因此可能拒绝再次进行握手的请求,最终导致第二虚拟节点握手失败。
这样,采用上述技术方案,主节点在进行待写入数据的转发前还可以对所述待写入数据进行判断。当所述待写入数据为握手数据时,则可以等待阈值时间再判断是否丢弃所述握手数据,从而能够避免上述的握手失败的情况。
本公开还提供一种用于区块链多链系统的方法,应用于上述实施例中所述的区块链多链系统,参照图2所示出的一种用于区块链多链系统的方法的流程图,所述方法包括:
S21,在所述主节点与另一主节点建立连接的情况下,向与所述主节点对应的从节点发送所述另一主节点的标识信息,所述标识信息包括所述另一主节点的节点标识以及所述另一主节点启用的子链的子链编号。
S22,所述从节点在接收到所述主节点发送的所述标识信息时,若确定所述从节点保存有与所述另一主节点启用的子链的子链编号相同的子链,则为所述另一主节点创建对应所述同一子链编号的子链的虚拟节点。
以图1为例进行说明,主节点A和主节点C可以是还未建立连接的区块链节点,其中,主节点A和C已经连接并启用了各自的多条子链。这样,当主节点A和主节点C建立连接时,所述主节点A可以向对应的从节点A1、A5、A3发送主节点C的节点标识以及主节点C启用的子链的子链编号1、2、3。当然,在一些实施例中,所述标识信息还可以包括主节点C的其他信息,如设备信息等,本公开对此不做限定。
相应的,所述主节点A的从节点A1、A5、A3在接收到所述主节点发送的所述标识信息时,可以将所述标识信息中主节点C启用的子链的子链编号(1、2、3)与自身保存的子链的子链编号进行对比,从而确定所述另一主节点启用的子链中是否包括所述从节点自身保存的子链。当确定所述从节点保存有与所述另一主节点启用的子链的子链编号相同的子链时,则为所述另一主节点创建对应所述同一子链编号的子链的虚拟节点。沿用上述例子,从节点A1保存了子链1,主节点C同样启用了子链1,因此,所述从节点A1可以为所述主节点C创建对应于子链1的虚拟节点VC1。类似的,节点A3还可以为所述主节点C创建对应于子链3的虚拟节点,本公开在此不做赘述。
这样,在任意两个从节点互相建立有对应同一子链编号的子链的虚拟节点的情况下,所述两个从节点之间能够基于所述虚拟节点进行针对所述同一子链编号的子链的数据读写操作。
采用上述技术方案,主节点在与另一主节点建立连接后,可以向该主节点的从节点发送所述另一主节点的标识信息。此外,所述从节点可以根据所述标识信息确定所述从节点与所述另一主节点是否保存有同一子链编号的子链。并,在二者保存同一子链编号的子链的情况下,为所述另一主节点建立对应于所述子链编号的子链的虚拟节点。这样,通过建立所述虚拟节点,同一子链中的不同从节点能够基于所述虚拟节点实现通信。并且,在实现从节点之间的通信时,主节点无需处理子节点的业务逻辑,因而能够降低主节点的负担。
值得注意的是,上述实施例中从主节点A以及主节点A的从节点的角度对所述虚拟节点的添加流程进行了说明。但在具体实施时,与主节点A相连的主节点C一侧也可以进行上述虚拟节点的添加流程。参照图3所示的一种用于区块链多链系统的方法的流程图,在步骤S31~S35中,建立连接的主节点都可以向自身对应的从节点发送连接通知消息,以使得对应的从节点接收到该主节点与另一主节点建立连接的事件,并进而建立以所述另一主节点的ID为主要标识的虚拟节点。例如,节点C1也可以为主节点A创建对应于子链1的虚拟节点VA1。
可选地,所述方法还包括:
主节点响应于与所述另一主节点成功建立连接,向所述另一主节点发送连接通知消息,所述连接通知消息包括所述主节点的节点标识以及所述主节点已启用的子链的子链编号;
所述向与所述主节点对应的从节点发送所述另一主节点的标识信息包括:响应于接收到所述另一主节点发送的连接通知消息,根据所述连接通知消息内的节点标识和子链编号,向所述从节点发送所述标识信息。
仍以图1为例进行说明,主节点A在与主节点C建立连接后,还可以向主节点C发送自身的节点标识以及所连接和启用的子链编号(1、5、3)。对应的,主节点C作为与主节点A相连的另一主节点,当所述主节点C接收到来自主节点A的连接通知消息时,所述主节点C可以根据所述连接通知消息内的节点标识和子链编号,向对应的从节点C1、C2、C3发送所述标识信息。类似的,从节点C1、C2、C3可以将所述标识信息中主节点A启用的子链的子链编号(1、5、3)与自身保存的子链的子链编号进行对比,从而建立对应的虚拟节点VA1,具体建立过程请参照上述关于主节点A一侧建立虚拟节点的实施例,本公开对此不做赘述。
值得说明的是,当两个主节点已经建立连接时,所述两个主节点中的任一主节点也有可能启用新的子链节点。因此,在另一种可能的实施方式中,所述向与所述主节点对应的从节点发送所述另一主节点的标识信息,包括:
响应于所述另一主节点创建新的子链节点的创建通知消息,根据所述创建通知消息内的节点标识和子链编号,向所述从节点发送所述标识信息;
所述方法还包括:
所述主节点响应于创建新的子链节点,向所述另一主节点以及所述主节点对应的从节点发送创建通知消息,所述创建通知消息包括所述主节点的节点标识以及新创建的子链节点的子链编号。
参照图1,以及图4所示出的一种用于区块链多链系统的方法的流程图的步骤S41至S48,在主节点B与主节点C建立连接的情况下,若主节点B启用了子链节点B2,则所述主节点B可以响应于事件“启用子链节点B2”,向主节点A和C发送包括所述主节点B以及子链编号2的创建通知消息。相应的,所述主节点A和C在接收到所述创建通知消息之后,可以根据所述创建通知消息内的节点标识和子链编号,向对应的从节点A1、A5、A3、C1、C2、C3发送所述标识信息,进而使得所述主节点A和C的从节点能够根据所述标识信息建立对应的虚拟节点。
值得注意的是,所述主节点在启用新的子链节点时,所述主节点还可以向所述新启用的子链节点发送创建通知消息。参照图4中的步骤S49至S412,在这种情况下,所述创建通知消息可以包括与所述主节点相连的其他主节点(A和C)的节点标识以及子链编号。这样,所述新创建的子链节点可以根据所述创建通知消息为每一所述其他主节点的对应子链建立虚拟节点,从而使得新添加的子链节点能够与其他主节点所对应的子链节点通信。
可选地,所述方法还包括:
所述主节点在与所述另一主节点断开连接时,向所述主节点对应的从节点发送删除消息,所述删除消息用于所述从节点删除为所述另一主节点创建的虚拟节点。参照图1,当主节点A与主节点C断开连接后,所述主节点A可以向对应的从节点A1、A5、A3发送删除消息,以使得所述从节点A1、A5、A3删除对应主节点C的虚拟节点VC1、VC3(图中未示出)。当然,节点C也可以向对应的从节点发送删除消息,以使得其对应的从节点删除相关的虚拟节点。
所述方法还包括:所述从节点在与对应的主节点断开连接时,删除所创建的所有虚拟节点。应当理解,当从节点与主节点断开连接后,所述从节点创建的虚拟节点也可能失效,因此,当所述从节点与主节点断开时可以删除创建的虚拟节点,从而对相关资源进行释放。
此外,在一些实施例中,所述方法还包括:所述从节点在所述从节点创建的任一虚拟节点通信失败时,删除该虚拟节点。例如,当所述从节点被对应的主节点断开时,所述从节点可以删除对应的虚拟节点。或者,当所述从节点对应的主节点异常(例如主节点无响应)导致虚拟节点无法通信时,所述从节点也可以删除对应的虚拟节点。当然,在一些实施例中,所述从节点也可以在创建的虚拟节点通信失败且所述从节点与对应的主节点断开连接的情况下,才删除所述虚拟节点,从而降低误操作率。采用上述技术方案,根据应用场景的不同可以创建和删除虚拟节点,从而通过虚拟节点实现了从节点之间的通信,也实现了针对虚拟节点的管理。
针对所述从节点通过虚拟节点进行通信的过程,在一种可能的实施方式中,所述方法还包括:
所述从节点通过虚拟节点对待写入的数据添加标记信息,得到标记后的待写入数据,所述标记信息包括源主节点的标识、目的主节点的标识、所述待写入数据待写入的目标从节点的子链编号,其中,所述源主节点的标识是所述从节点对应的主节点的标识;
将所述标记后的待写入数据发送给所述从节点对应的主节点;
所述主节点响应于接收到所述从节点发送的所述标记后的待写入数据,根据所述标记信息中的目的主节点的标识,将所述标记后的待写入数据发送给与所述主节点连接的所述目的主节点。
参照图1,以及图5所示出的一种数据写入的流程图的步骤S51至S58。以从节点C1和A1通信为例,从节点C1可以将待写入的数据发送至虚拟节点VA1,虚拟节点VA1在监听到所述待写入数据之后可以对所述待写入数据添加所述标记信息。其中,所述标记信息包括源主节点标识C、目的主节点标识A、待写入的目标从节点编号。值得说明的是,所述目标从节点编号可以包括所述目标从节点所对应的子链编号1以及该目标从节点在对应子链上的编号ID(本实施例中以A1在子链1上的编号ID为N为例示意,因此目标从节点A1的编号为1-N)。这样,所述虚拟节点在标记完成后还可以将标记后的待写入数据转发给所述从节点C1对应的主节点C。
相应的,所述主节点C可以响应于接收到所述从节点C1发送的所述标记后的待写入数据,根据所述标记信息中的目的主节点的标识,将所述标记后的待写入数据发送给与所述主节点连接的所述目的主节点。
此外,当所述主节点作为数据接收方时,所述方法还包括:
所述主节点响应于接收到所述另一主节点发送的标记后的待写入数据,所述标记后的待写入数据包括作为目标节点标识的所述主节点的节点标识、作为源主节点标识的所述另一主节点的节点标识以及待写入所述待写入数据的目标从节点的子链编号;
根据所述目标从节点的子链编号将所述标记后的待写入数据发送给所述目标从节点;
所述目标从节点接收所述主节点发送的所述标记后的待写入数据,根据所述源主节点标识以及所述目标从节点的子链编号,将所述待写入数据注入对应的虚拟节点,并从所述虚拟节点读取所述待写入数据。
沿用上述例子并参照图6所示出的一种数据读取流程图(步骤S61~S610),当主节点A接收到来自与主节点C的标记后的待写入数据之后,可以对所述待写入数据中的子链编号对所述待写入数据的类型进行判断。其中,当确定待写入数据为主链消息时,所述主节点A可以自行处理所述数据。当所述待写入数据为子链消息时,所述主节点A可以根据所述待写入数据中的子链编号(1-N)确定对应的目标从节点为A1并为所述待写入数据标记真实节点ID(即C),以便于所述从节点A1能够根据所述真实节点ID以及子链编号与对应的从节点A1进行通信。此外,所述主节点还可以在确定所述目标从节点A1的虚拟节点已经启动的情况下将所述标记后的待写入数据发送至所述目标从节点A1。相应的,所述目标从节点A1可以将所述标记后的待写入数据注入到虚拟节点VC1上。这样,目标从节点A1能够从所述虚拟节点中读取到所述待写入数据。
采用上述技术方案,不同从节点能够基于建立的虚拟节点进行通信。并且,在通信的过程中,主节点无需了解从节点的业务逻辑也无需为从节点进行复杂的数据处理,因此采用上述技术方案还能够降低主节点的负担。
在一些场景中,所述从节点在通过对应的虚拟节点进行业务活动前,虚拟节点之间还可以进行握手验证。也就是说,上述实施例中的待写入的数据也可以是握手数据,这样,所述从节点通过虚拟节点对待写入的数据添加标记信息,得到标记后的待写入数据,包括:
在基于所述另一主节点的节点标识和子链编号成功创建虚拟节点的情况下,生成握手数据,并对所述握手数据添加所述标记信息,得到标记后的握手数据,其中,所述标记后的握手数据用于与所述另一主节点的从节点创建的虚拟节点建立连接。
可选地,所述方法还包括:
所述主节点在根据所述目标从节点的子链编号将所述标记后的待写入数据发送给所述目标从节点之前,判断所述待写入数据是否为握手数据;
在所述待写入数据为握手数据的情况下,判断所述主节点对应的从节点是否运行有根据所述另一主节点的节点标识和所述子链编号创建的目标虚拟节点;
在确定所述从节点未运行所述目标虚拟节点的情况下,开始计时;
在计时达到预设时长时,若所述从节点仍未运行所述目标虚拟节点,则丢弃所述握手数据。
沿用上述例子并参照图6所示出的一种虚拟节点数据读取流程图(步骤S65、S7~S9),在主节点A接收到所述待写入数据之后,可以对所述待写入数据进行判断。其中,在确定所述待写入数据为握手数据的情况下,所述主节点A可以判断所述主节点对应的从节点是否运行有根据所述另一主节点的节点标识C和所述子链编号创建的目标虚拟节点VC1。
在一些实施例中,所述主节点A的从节点未运行所述目标虚拟节点VC1,在这种情况下,所述主节点A可以开始计时。并,在计时达到预设时长时,若所述主节点A的从节点仍未运行所述目标虚拟节点VC1,则所述主节点A可以丢弃所述握手数据。其中,所述预设时长例如可以为一个握手周期,如5秒等。
在另一些实施例中,所述主节点A的从节点运行有所述目标虚拟节点VC1,则所述主节点A可以根据所述目标从节点的子链编号将所述标记后的待写入数据发送给所述目标从节点A1。
在另一些实施例中,在计时达到预设时长之前,所述从节点启动运行了所述目标虚拟节点。在这种情况下,所述根据所述目标从节点的子链编号将所述标记后的待写入数据发送给所述目标从节点,包括:
在计时达到预设时长之前,若所述从节点运行所述目标虚拟节点,则根据所述目标从节点的子链编号将所述标记后的待写入数据发送给所述目标从节点。
申请人发现,对于两个主节点建立连接且均未启动从节点的情况下,若所述两个主节点在小于一个握手周期的阈值时间内先后启动从节点,则所述两个从节点的虚拟节点可能握手失败。例如,先启动的从节点在建立第一虚拟节点后可以向后启动的从节点的第二虚拟节点发送握手数据,在这种情况下,由于所述第二虚拟节点还未启动,因此无法收到这个握手数据。此外,第二虚拟节点启动时,也可以发出握手数据,此时由于第一虚拟节点还在等待握手数据(等待时间小于一个握手周期),所以第一虚拟节点能够收到第二虚拟节点发送的握手数据并判断握手成功。相应的,第二虚拟节点此时就可能握手失败,即便所述第二虚拟节点可以请求第一虚拟节点再次与己方握手,但由于此时第一虚拟节点已经判断握手成功,因此可能拒绝再次进行握手的请求,最终导致第二虚拟节点握手失败。
这样,采用上述技术方案,主节点在进行待写入数据的转发前还可以对所述待写入数据进行判断。当所述待写入数据为握手数据时,则可以等待阈值时间再判断是否丢弃所述握手数据,从而能够避免上述的握手失败的情况。
本公开还提供一种电子设备,所述电子设备作为上述的区块链多链系统中的区块链节点,所述电子设备包括:
存储器,其上存储有计算机程序;
处理器,用于执行所述存储器中的所述计算机程序,以实现上述实施例中所述方法中的主节点所执行的步骤。
本公开还提供一种电子设备,所述电子设备作为上述实施例中所述的区块链多链系统中的区块链节点,所述电子设备包括:
存储器,其上存储有计算机程序;
处理器,用于执行所述存储器中的所述计算机程序,以实现上述实施例中所述方法中的从节点所执行的步骤。
图7是根据一示例性实施例示出的一种电子设备700的框图。如图7所示,该电子设备700可以包括:处理器701,存储器702。该电子设备700还可以包括多媒体组件703,输入/输出(I/O)接口704,以及通信组件705中的一者或多者。
其中,处理器701用于控制该电子设备700的整体操作,以完成上述的用于区块链多链系统的方法中主节点执行的全部或部分步骤。存储器702用于存储各种类型的数据以支持在该电子设备700的操作,这些数据例如可以包括用于在该电子设备700上操作的任何应用程序或方法的指令,以及应用程序相关的数据,例如收发的消息、图片、音频、视频等等。该存储器702可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,例如静态随机存取存储器(Static Random Access Memory,简称SRAM),电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,简称EEPROM),可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,简称EPROM),可编程只读存储器(Programmable Read-Only Memory,简称PROM),只读存储器(Read-Only Memory,简称ROM),磁存储器,快闪存储器,磁盘或光盘。多媒体组件703可以包括屏幕和音频组件。其中屏幕例如可以是触摸屏,音频组件用于输出和/或输入音频信号。例如,音频组件例如可以包括一个麦克风,麦克风用于接收外部音频信号。所接收的音频信号可以被进一步存储在存储器702或通过通信组件705发送。音频组件还可以包括至少一个扬声器,用于输出音频信号。I/O接口704为处理器701和其他接口模块之间提供接口,上述其他接口模块可以是键盘,鼠标,按钮等。这些按钮可以是虚拟按钮或者实体按钮。通信组件705用于该电子设备700与其他设备之间进行有线或无线通信。无线通信,例如Wi-Fi,蓝牙,近场通信(NearField Communication,简称NFC),2G、3G、4G、NB-IOT、eMTC、或其他5G等等,或它们中的一种或几种的组合,在此不做限定。因此相应的该通信组件705可以包括:Wi-Fi模块,蓝牙模块,NFC模块等等。
在一示例性实施例中,电子设备700可以被一个或多个应用专用集成电路(Application Specific Integrated Circuit,简称ASIC)、数字信号处理器(DigitalSignal Processor,简称DSP)、数字信号处理设备(Digital Signal Processing Device,简称DSPD)、可编程逻辑器件(Programmable Logic Device,简称PLD)、现场可编程门阵列(Field Programmable Gate Array,简称FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述的用于区块链多链系统的方法中主节点执行的全部或部分步骤。
在另一示例性实施例中,还提供了一种包括程序指令的计算机可读存储介质,该程序指令被处理器执行时实现上述的用于区块链多链系统的方法中主节点执行的全部或部分步骤。例如,该计算机可读存储介质可以为上述包括程序指令的存储器702,上述程序指令可由电子设备700的处理器701执行以完成上述的用于区块链多链系统的方法中主节点执行的全部或部分步骤。
图8是根据一示例性实施例示出的一种电子设备800的框图。如图8所示,该电子设备800可以包括:处理器801,存储器802。该电子设备800还可以包括多媒体组件803,输入/输出(I/O)接口804,以及通信组件805中的一者或多者。
其中,处理器801用于控制该电子设备800的整体操作,以完成上述的用于区块链多链系统的方法中从节点执行的全部或部分步骤。存储器802用于存储各种类型的数据以支持在该电子设备800的操作,这些数据例如可以包括用于在该电子设备800上操作的任何应用程序或方法的指令,以及应用程序相关的数据,例如收发的消息、图片、音频、视频等等。该存储器802可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,例如静态随机存取存储器(Static Random Access Memory,简称SRAM),电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,简称EEPROM),可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,简称EPROM),可编程只读存储器(Programmable Read-Only Memory,简称PROM),只读存储器(Read-Only Memory,简称ROM),磁存储器,快闪存储器,磁盘或光盘。多媒体组件803可以包括屏幕和音频组件。其中屏幕例如可以是触摸屏,音频组件用于输出和/或输入音频信号。例如,音频组件可以包括一个麦克风,麦克风用于接收外部音频信号。所接收的音频信号可以被进一步存储在存储器802或通过通信组件805发送。音频组件还包括至少一个扬声器,用于输出音频信号。I/O接口804为处理器801和其他接口模块之间提供接口,上述其他接口模块可以是键盘,鼠标,按钮等。这些按钮可以是虚拟按钮或者实体按钮。通信组件805用于该电子设备800与其他设备之间进行有线或无线通信。无线通信,例如Wi-Fi,蓝牙,近场通信(Near FieldCommunication,简称NFC),2G、3G、4G、NB-IOT、eMTC、或其他5G等等,或它们中的一种或几种的组合,在此不做限定。因此相应的该通信组件805可以包括:Wi-Fi模块,蓝牙模块,NFC模块等等。
在一示例性实施例中,电子设备800可以被一个或多个应用专用集成电路(Application Specific Integrated Circuit,简称ASIC)、数字信号处理器(DigitalSignal Processor,简称DSP)、数字信号处理设备(Digital Signal Processing Device,简称DSPD)、可编程逻辑器件(Programmable Logic Device,简称PLD)、现场可编程门阵列(Field Programmable Gate Array,简称FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述的用于区块链多链系统的方法中从节点执行的全部或部分步骤。
在另一示例性实施例中,还提供了一种包括程序指令的计算机可读存储介质,该程序指令被处理器执行时实现上述的用于区块链多链系统的方法中从节点执行的全部或部分步骤。例如,该计算机可读存储介质可以为上述包括程序指令的存储器802,上述程序指令可由电子设备800的处理器801执行以完成上述的用于区块链多链系统的方法中从节点执行的全部或部分步骤。
在另一示例性实施例中,还提供一种计算机程序产品,该计算机程序产品包含能够由可编程的装置执行的计算机程序,该计算机程序具有当由该可编程的装置执行时用于执行上述的用于区块链多链系统的方法中主节点执行的全部或部分步骤的代码部分。
在另一示例性实施例中,还提供一种计算机程序产品,该计算机程序产品包含能够由可编程的装置执行的计算机程序,该计算机程序具有当由该可编程的装置执行时用于执行上述的用于区块链多链系统的方法中从节点执行的全部或部分步骤的代码部分。
以上结合附图详细描述了本公开的优选实施方式,但是,本公开并不限于上述实施方式中的具体细节,在本公开的技术构思范围内,可以对本公开的技术方案进行多种简单变型,这些简单变型均属于本公开的保护范围。
另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合,为了避免不必要的重复,本公开对各种可能的组合方式不再另行说明。
此外,本公开的各种不同的实施方式之间也可以进行任意组合,只要其不违背本公开的思想,其同样应当视为本公开所公开的内容。
实施例
1、一种区块链多链系统,包括多个区块链节点以及保存在所述多个区块链节点中的多个区块链,所述多个区块链包括主链以及至少一个子链,每一所述区块链节点保存有所述主链,或者保存有所述主链以及任意所述子链,并且所述多个区块链节点包括主节点,每一所述主节点连接有从节点集合,针对任一所述从节点集合,所述从节点集合中的区块链节点保存有相同的子链;其中,对于所述多个区块链节点中的任一主节点,所述主节点用于在与另一主节点建立连接的情况下,向与所述主节点对应的从节点发送所述另一主节点的标识信息,所述标识信息包括所述另一主节点的节点标识以及所述另一主节点启用的子链的子链编号;所述主节点对应的任一从节点用于,在接收到所述主节点发送的所述标识信息时,若确定所述从节点保存有与所述另一主节点启用的子链的子链编号相同的子链,则为所述另一主节点创建对应所述同一子链编号的子链的虚拟节点;其中,在任意两个从节点互相建立有对应同一子链编号的子链的虚拟节点的情况下,所述两个从节点之间能够基于所述虚拟节点进行针对所述同一子链编号的子链的数据读写操作。
2、根据实施例1所述的区块链多链系统,其中,所述主节点还用于,响应于与所述另一主节点成功建立连接,向所述另一主节点发送连接通知消息,所述连接通知消息包括所述主节点的节点标识以及所述主节点已启用的子链的子链编号;所述主节点在与另一区块链节点建立连接的情况下,向与所述主节点对应的从节点发送所述另一主节点的标识信息包括:响应于接收到所述另一主节点发送的连接通知消息,根据所述连接通知消息内的节点标识和子链编号,向所述从节点发送所述标识信息。
3、根据实施例1所述的区块链多链系统,其中,所述主节点在与另一区块链节点建立连接的情况下,向与所述主节点对应的从节点发送所述另一主节点的标识信息包括:在所述主节点与所述另一主节点已建立连接的情况下,响应于所述另一主节点创建新的子链节点的创建通知消息,根据所述创建通知消息内的节点标识和子链编号,向所述从节点发送所述标识信息;所述主节点还用于:响应于创建新的子链节点,向所述另一主节点以及所述主节点对应的从节点发送创建通知消息,所述创建通知消息包括所述主节点的节点标识以及新创建的子链节点的子链编号。
4、根据实施例1-3任一项所述的区块链多链系统,其中,所述主节点还用于:在所述主节点与所述另一主节点断开连接时,向所述主节点对应的从节点发送删除消息,所述删除消息用于所述从节点删除为所述另一主节点创建的虚拟节点;所述从节点还用于,在与对应的主节点断开连接时,删除所创建的所有虚拟节点;和/或,在所述从节点创建的任一虚拟节点通信失败时,删除该虚拟节点。
5、根据实施例1-3任一项所述的区块链多链系统,其中,所述从节点还用于:通过虚拟节点对待写入的数据添加标记信息,得到标记后的待写入数据,所述标记信息包括源主节点的标识、目的主节点的标识、所述待写入数据待写入的目标从节点的子链编号,其中,所述源主节点的标识是所述从节点对应的主节点的标识;将所述标记后的待写入数据发送给所述从节点对应的主节点;所述主节点还用于,响应于接收到所述从节点发送的所述标记后的待写入数据,根据所述标记信息中的目的主节点的标识,将所述标记后的待写入数据发送给与所述主节点连接的所述目的主节点。
6、根据实施例1-3任一项所述的区块链多链系统,其中,所述主节点还用于:响应于接收到所述另一主节点发送的标记后的待写入数据,所述标记后的待写入数据包括作为目标节点标识的所述主节点的节点标识、作为源主节点标识的所述另一主节点的节点标识以及待写入所述待写入数据的目标从节点的子链编号;根据所述目标从节点的子链编号将所述标记后的待写入数据发送给所述目标从节点;所述目标从节点还用于,接收所述主节点发送的所述标记后的待写入数据,根据所述源主节点标识以及所述目标从节点的子链编号,将所述待写入数据注入对应的虚拟节点,并从所述虚拟节点读取所述待写入数据。
7、根据实施例5所述的区块链多链系统,其中,所述从节点通过虚拟节点对待写入的数据添加标记信息,得到标记后的待写入数据具体包括:在基于所述另一主节点的节点标识和子链编号成功创建虚拟节点的情况下,生成握手数据,并对所述握手数据添加所述标记信息,得到标记后的握手数据,其中,所述标记后的握手数据用于与所述另一主节点的从节点创建的虚拟节点建立连接。
8、根据实施例6所述的区块链多链系统,其中,所述主节点还用于:在根据所述目标从节点的子链编号将所述标记后的待写入数据发送给所述目标从节点之前,判断所述待写入数据是否为握手数据;在所述待写入数据为握手数据的情况下,判断所述主节点对应的从节点是否运行有根据所述另一主节点的节点标识和所述子链编号创建的目标虚拟节点;在确定所述从节点未运行所述目标虚拟节点的情况下,开始计时;在计时达到预设时长时,若所述从节点仍未运行所述目标虚拟节点,则丢弃所述握手数据;所述主节点根据所述目标从节点的子链编号将所述标记后的待写入数据发送给所述目标从节点具体包括:在计时达到预设时长之前,若所述从节点运行所述目标虚拟节点,则根据所述目标从节点的子链编号将所述标记后的待写入数据发送给所述目标从节点。
9、一种用于区块链多链系统的方法,应用于实施例1至8任一项所述的区块链多链系统,所述方法包括:在所述主节点与另一主节点建立连接的情况下,向与所述主节点对应的从节点发送所述另一主节点的标识信息,所述标识信息包括所述另一主节点的节点标识以及所述另一主节点启用的子链的子链编号;所述从节点在接收到所述主节点发送的所述标识信息时,若确定所述从节点保存有与所述另一主节点启用的子链的子链编号相同的子链,则为所述另一主节点创建对应所述同一子链编号的子链的虚拟节点;其中,在任意两个从节点互相建立有对应同一子链编号的子链的虚拟节点的情况下,所述两个从节点之间能够基于所述虚拟节点进行针对所述同一子链编号的子链的数据读写操作。
10、根据实施例9所述的方法,其中,所述方法还包括:
主节点响应于与所述另一主节点成功建立连接,向所述另一主节点发送连接通知消息,所述连接通知消息包括所述主节点的节点标识以及所述主节点已启用的子链的子链编号;所述向与所述主节点对应的从节点发送所述另一主节点的标识信息包括:响应于接收到所述另一主节点发送的连接通知消息,根据所述连接通知消息内的节点标识和子链编号,向所述从节点发送所述标识信息。
11、根据实施例9所述的方法,其中,所述向与所述主节点对应的从节点发送所述另一主节点的标识信息包括:响应于所述另一主节点创建新的子链节点的创建通知消息,根据所述创建通知消息内的节点标识和子链编号,向所述从节点发送所述标识信息;
所述方法还包括:所述主节点响应于创建新的子链节点,向所述另一主节点以及所述主节点对应的从节点发送创建通知消息,所述创建通知消息包括所述主节点的节点标识以及新创建的子链节点的子链编号。
12、根据实施例9-11任一项所述的方法,其中,还包括:所述主节点在与所述另一主节点断开连接时,向所述主节点对应的从节点发送删除消息,所述删除消息用于所述从节点删除为所述另一主节点创建的虚拟节点;所述从节点在与对应的主节点断开连接时,删除所创建的所有虚拟节点;和/或,在所述从节点创建的任一虚拟节点通信失败时,删除该虚拟节点。
13、根据实施例9-11任一项所述的方法,其中,还包括:所述从节点通过虚拟节点对待写入的数据添加标记信息,得到标记后的待写入数据,所述标记信息包括源主节点的标识、目的主节点的标识、所述待写入数据待写入的目标从节点的子链编号,其中,所述源主节点的标识是所述从节点对应的主节点的标识;将所述标记后的待写入数据发送给所述从节点对应的主节点;所述主节点响应于接收到所述从节点发送的所述标记后的待写入数据,根据所述标记信息中的目的主节点的标识,将所述标记后的待写入数据发送给与所述主节点连接的所述目的主节点。
14、根据实施例9-11任一项所述的方法,其中,还包括:所述主节点响应于接收到所述另一主节点发送的标记后的待写入数据,所述标记后的待写入数据包括作为目标节点标识的所述主节点的节点标识、作为源主节点标识的所述另一主节点的节点标识以及待写入所述待写入数据的目标从节点的子链编号;根据所述目标从节点的子链编号将所述标记后的待写入数据发送给所述目标从节点;所述目标从节点接收所述主节点发送的所述标记后的待写入数据,根据所述源主节点标识以及所述目标从节点的子链编号,将所述待写入数据注入对应的虚拟节点,并从所述虚拟节点读取所述待写入数据。
15、根据实施例13所述的方法,其中,所述从节点通过虚拟节点对待写入的数据添加标记信息,得到标记后的待写入数据,包括:在基于所述另一主节点的节点标识和子链编号成功创建虚拟节点的情况下,生成握手数据,并对所述握手数据添加所述标记信息,得到标记后的握手数据,其中,所述标记后的握手数据用于与所述另一主节点的从节点创建的虚拟节点建立连接。
16、根据实施例14所述的方法,其中,还包括:所述主节点在根据所述目标从节点的子链编号将所述标记后的待写入数据发送给所述目标从节点之前,判断所述待写入数据是否为握手数据;在所述待写入数据为握手数据的情况下,判断所述主节点对应的从节点是否运行有根据所述另一主节点的节点标识和所述子链编号创建的目标虚拟节点;在确定所述从节点未运行所述目标虚拟节点的情况下,开始计时;在计时达到预设时长时,若所述从节点仍未运行所述目标虚拟节点,则丢弃所述握手数据;所述根据所述目标从节点的子链编号将所述标记后的待写入数据发送给所述目标从节点,包括:在计时达到预设时长之前,若所述从节点运行所述目标虚拟节点,则根据所述目标从节点的子链编号将所述标记后的待写入数据发送给所述目标从节点。
Claims (18)
1.一种区块链多链系统,其特征在于,包括多个区块链节点以及保存在所述多个区块链节点中的多个区块链,所述多个区块链包括主链以及至少一个子链,每一所述区块链节点保存有所述主链,或者保存有所述主链以及任意所述子链,并且所述多个区块链节点包括主节点,每一所述主节点连接有从节点集合,针对任一所述从节点集合,所述从节点集合中的区块链节点保存有相同的子链;其中,
对于所述多个区块链节点中的任一主节点,所述主节点用于在与另一主节点建立连接的情况下,向与所述主节点对应的从节点发送所述另一主节点的标识信息,所述标识信息包括所述另一主节点的节点标识以及所述另一主节点启用的子链的子链编号;
所述主节点对应的任一从节点用于,在接收到所述主节点发送的所述标识信息时,若确定所述从节点保存有与所述另一主节点启用的子链的子链编号相同的子链,则为所述另一主节点创建对应所述同一子链编号的子链的虚拟节点;
其中,在任意两个从节点互相建立有对应同一子链编号的子链的虚拟节点的情况下,所述两个从节点之间能够基于所述虚拟节点进行针对所述同一子链编号的子链的数据读写操作。
2.根据权利要求1所述的区块链多链系统,其特征在于,所述主节点还用于,响应于与所述另一主节点成功建立连接,向所述另一主节点发送连接通知消息,所述连接通知消息包括所述主节点的节点标识以及所述主节点已启用的子链的子链编号;
所述主节点在与另一区块链节点建立连接的情况下,向与所述主节点对应的从节点发送所述另一主节点的标识信息包括:响应于接收到所述另一主节点发送的连接通知消息,根据所述连接通知消息内的节点标识和子链编号,向所述从节点发送所述标识信息。
3.根据权利要求1所述的区块链多链系统,其特征在于,所述主节点在与另一区块链节点建立连接的情况下,向与所述主节点对应的从节点发送所述另一主节点的标识信息包括:
在所述主节点与所述另一主节点已建立连接的情况下,响应于所述另一主节点创建新的子链节点的创建通知消息,根据所述创建通知消息内的节点标识和子链编号,向所述从节点发送所述标识信息;
所述主节点还用于:响应于创建新的子链节点,向所述另一主节点以及所述主节点对应的从节点发送创建通知消息,所述创建通知消息包括所述主节点的节点标识以及新创建的子链节点的子链编号。
4.根据权利要求1-3任一项所述的区块链多链系统,其特征在于,所述主节点还用于:在所述主节点与所述另一主节点断开连接时,向所述主节点对应的从节点发送删除消息,所述删除消息用于所述从节点删除为所述另一主节点创建的虚拟节点;
所述从节点还用于,在与对应的主节点断开连接时,删除所创建的所有虚拟节点;和/或,在所述从节点创建的任一虚拟节点通信失败时,删除该虚拟节点。
5.根据权利要求1-3任一项所述的区块链多链系统,其特征在于,所述从节点还用于:
通过虚拟节点对待写入的数据添加标记信息,得到标记后的待写入数据,所述标记信息包括源主节点的标识、目的主节点的标识、所述待写入数据待写入的目标从节点的子链编号,其中,所述源主节点的标识是所述从节点对应的主节点的标识;
将所述标记后的待写入数据发送给所述从节点对应的主节点;
所述主节点还用于,响应于接收到所述从节点发送的所述标记后的待写入数据,根据所述标记信息中的目的主节点的标识,将所述标记后的待写入数据发送给与所述主节点连接的所述目的主节点。
6.根据权利要求1-3任一项所述的区块链多链系统,其特征在于,所述主节点还用于:
响应于接收到所述另一主节点发送的标记后的待写入数据,所述标记后的待写入数据包括作为目标节点标识的所述主节点的节点标识、作为源主节点标识的所述另一主节点的节点标识以及待写入所述待写入数据的目标从节点的子链编号;
根据所述目标从节点的子链编号将所述标记后的待写入数据发送给所述目标从节点;
所述目标从节点还用于,接收所述主节点发送的所述标记后的待写入数据,根据所述源主节点标识以及所述目标从节点的子链编号,将所述待写入数据注入对应的虚拟节点,并从所述虚拟节点读取所述待写入数据。
7.根据权利要求5所述的区块链多链系统,其特征在于,所述从节点通过虚拟节点对待写入的数据添加标记信息,得到标记后的待写入数据具体包括:
在基于所述另一主节点的节点标识和子链编号成功创建虚拟节点的情况下,生成握手数据,并对所述握手数据添加所述标记信息,得到标记后的握手数据,其中,所述标记后的握手数据用于与所述另一主节点的从节点创建的虚拟节点建立连接。
8.根据权利要求6所述的区块链多链系统,其特征在于,所述主节点还用于:在根据所述目标从节点的子链编号将所述标记后的待写入数据发送给所述目标从节点之前,判断所述待写入数据是否为握手数据;
在所述待写入数据为握手数据的情况下,判断所述主节点对应的从节点是否运行有根据所述另一主节点的节点标识和所述子链编号创建的目标虚拟节点;
在确定所述从节点未运行所述目标虚拟节点的情况下,开始计时;
在计时达到预设时长时,若所述从节点仍未运行所述目标虚拟节点,则丢弃所述握手数据;
所述主节点根据所述目标从节点的子链编号将所述标记后的待写入数据发送给所述目标从节点具体包括:
在计时达到预设时长之前,若所述从节点运行所述目标虚拟节点,则根据所述目标从节点的子链编号将所述标记后的待写入数据发送给所述目标从节点。
9.一种用于区块链多链系统的方法,其特征在于,应用于权利要求1至8任一项所述的区块链多链系统,所述方法包括:
在所述主节点与另一主节点建立连接的情况下,向与所述主节点对应的从节点发送所述另一主节点的标识信息,所述标识信息包括所述另一主节点的节点标识以及所述另一主节点启用的子链的子链编号;
所述从节点在接收到所述主节点发送的所述标识信息时,若确定所述从节点保存有与所述另一主节点启用的子链的子链编号相同的子链,则为所述另一主节点创建对应所述同一子链编号的子链的虚拟节点;
其中,在任意两个从节点互相建立有对应同一子链编号的子链的虚拟节点的情况下,所述两个从节点之间能够基于所述虚拟节点进行针对所述同一子链编号的子链的数据读写操作。
10.根据权利要求9所述的方法,其特征在于,所述方法还包括:
主节点响应于与所述另一主节点成功建立连接,向所述另一主节点发送连接通知消息,所述连接通知消息包括所述主节点的节点标识以及所述主节点已启用的子链的子链编号;
所述向与所述主节点对应的从节点发送所述另一主节点的标识信息包括:响应于接收到所述另一主节点发送的连接通知消息,根据所述连接通知消息内的节点标识和子链编号,向所述从节点发送所述标识信息。
11.根据权利要求9所述的方法,其特征在于,所述向与所述主节点对应的从节点发送所述另一主节点的标识信息包括:
响应于所述另一主节点创建新的子链节点的创建通知消息,根据所述创建通知消息内的节点标识和子链编号,向所述从节点发送所述标识信息;
所述方法还包括:
所述主节点响应于创建新的子链节点,向所述另一主节点以及所述主节点对应的从节点发送创建通知消息,所述创建通知消息包括所述主节点的节点标识以及新创建的子链节点的子链编号。
12.根据权利要求9-11任一项所述的方法,其特征在于,还包括:
所述主节点在与所述另一主节点断开连接时,向所述主节点对应的从节点发送删除消息,所述删除消息用于所述从节点删除为所述另一主节点创建的虚拟节点;
所述从节点在与对应的主节点断开连接时,删除所创建的所有虚拟节点;和/或,在所述从节点创建的任一虚拟节点通信失败时,删除该虚拟节点。
13.根据权利要求9-11任一项所述的方法,其特征在于,还包括:
所述从节点通过虚拟节点对待写入的数据添加标记信息,得到标记后的待写入数据,所述标记信息包括源主节点的标识、目的主节点的标识、所述待写入数据待写入的目标从节点的子链编号,其中,所述源主节点的标识是所述从节点对应的主节点的标识;
将所述标记后的待写入数据发送给所述从节点对应的主节点;
所述主节点响应于接收到所述从节点发送的所述标记后的待写入数据,根据所述标记信息中的目的主节点的标识,将所述标记后的待写入数据发送给与所述主节点连接的所述目的主节点。
14.根据权利要求9-11任一项所述的方法,其特征在于,还包括:
所述主节点响应于接收到所述另一主节点发送的标记后的待写入数据,所述标记后的待写入数据包括作为目标节点标识的所述主节点的节点标识、作为源主节点标识的所述另一主节点的节点标识以及待写入所述待写入数据的目标从节点的子链编号;
根据所述目标从节点的子链编号将所述标记后的待写入数据发送给所述目标从节点;
所述目标从节点接收所述主节点发送的所述标记后的待写入数据,根据所述源主节点标识以及所述目标从节点的子链编号,将所述待写入数据注入对应的虚拟节点,并从所述虚拟节点读取所述待写入数据。
15.根据权利要求13所述的方法,其特征在于,所述从节点通过虚拟节点对待写入的数据添加标记信息,得到标记后的待写入数据,包括:
在基于所述另一主节点的节点标识和子链编号成功创建虚拟节点的情况下,生成握手数据,并对所述握手数据添加所述标记信息,得到标记后的握手数据,其中,所述标记后的握手数据用于与所述另一主节点的从节点创建的虚拟节点建立连接。
16.根据权利要求14所述的方法,其特征在于,还包括:
所述主节点在根据所述目标从节点的子链编号将所述标记后的待写入数据发送给所述目标从节点之前,判断所述待写入数据是否为握手数据;
在所述待写入数据为握手数据的情况下,判断所述主节点对应的从节点是否运行有根据所述另一主节点的节点标识和所述子链编号创建的目标虚拟节点;
在确定所述从节点未运行所述目标虚拟节点的情况下,开始计时;
在计时达到预设时长时,若所述从节点仍未运行所述目标虚拟节点,则丢弃所述握手数据;
所述根据所述目标从节点的子链编号将所述标记后的待写入数据发送给所述目标从节点,包括:
在计时达到预设时长之前,若所述从节点运行所述目标虚拟节点,则根据所述目标从节点的子链编号将所述标记后的待写入数据发送给所述目标从节点。
17.一种电子设备,其特征在于,所述电子设备作为如权利要求1至8中任一项所述的区块链多链系统中的区块链节点,所述电子设备包括:
存储器,其上存储有计算机程序;
处理器,用于执行所述存储器中的所述计算机程序,以实现权利要求9-16中任一项所述方法中的主节点所执行的步骤。
18.一种电子设备,其特征在于,所述电子设备作为如权利要求1至8中任一项所述的区块链多链系统中的区块链节点,所述电子设备包括:
存储器,其上存储有计算机程序;
处理器,用于执行所述存储器中的所述计算机程序,以实现权利要求9-16中任一项所述方法中的从节点所执行的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010623241.7A CN111901388B (zh) | 2020-06-30 | 2020-06-30 | 区块链多链系统、用于区块链多链系统的方法、电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010623241.7A CN111901388B (zh) | 2020-06-30 | 2020-06-30 | 区块链多链系统、用于区块链多链系统的方法、电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111901388A CN111901388A (zh) | 2020-11-06 |
CN111901388B true CN111901388B (zh) | 2022-12-20 |
Family
ID=73191362
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010623241.7A Active CN111901388B (zh) | 2020-06-30 | 2020-06-30 | 区块链多链系统、用于区块链多链系统的方法、电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111901388B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110535969A (zh) * | 2019-09-16 | 2019-12-03 | 腾讯科技(深圳)有限公司 | 基于区块链网络的数据存储方法、装置、存储介质和设备 |
CN111010394A (zh) * | 2019-08-15 | 2020-04-14 | 腾讯科技(深圳)有限公司 | 区块链多链管理方法和装置 |
CN111311013A (zh) * | 2020-02-27 | 2020-06-19 | 南京师范大学 | 一种基于区块链技术的综合能源系统调度交易方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11941588B2 (en) * | 2015-11-06 | 2024-03-26 | Cable Television Laboratories, Inc. | Systems and methods for blockchain virtualization and scalability |
CN110730204B (zh) * | 2019-09-05 | 2022-09-02 | 创新先进技术有限公司 | 区块链网络中删除节点的方法和区块链系统 |
-
2020
- 2020-06-30 CN CN202010623241.7A patent/CN111901388B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111010394A (zh) * | 2019-08-15 | 2020-04-14 | 腾讯科技(深圳)有限公司 | 区块链多链管理方法和装置 |
CN110535969A (zh) * | 2019-09-16 | 2019-12-03 | 腾讯科技(深圳)有限公司 | 基于区块链网络的数据存储方法、装置、存储介质和设备 |
CN111311013A (zh) * | 2020-02-27 | 2020-06-19 | 南京师范大学 | 一种基于区块链技术的综合能源系统调度交易方法 |
Non-Patent Citations (2)
Title |
---|
基于联盟链的多链式区块链共识性能研究;孙一蓬;《中国优秀硕士学位论文全文数据库 信息科技辑》;20200115;全文 * |
面向智能制造的区块链共识和多链策略研究;乔静炜;《中国优秀硕士学位论文全文数据库 信息科技辑》;20200215;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN111901388A (zh) | 2020-11-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110035002B (zh) | 即时通信的实现方法,终端设备及存储介质 | |
JP5065482B2 (ja) | 無線環境においてデータセットを同期するための方法および機器 | |
EP2445149B1 (en) | System and method for enabling applications to communicate using a peer-to-peer (P2P) system | |
CN108881354B (zh) | 一种推送信息存储方法、装置、服务器和计算机存储介质 | |
KR101871383B1 (ko) | 계층적 데이터 구조의 노드 상에서 재귀적 이벤트 리스너를 사용하기 위한 방법 및 시스템 | |
KR102248393B1 (ko) | 인스턴트 메시징 그룹 관리 방법 및 장치 | |
CN112615753A (zh) | 一种链路异常追踪方法、第一节点、第二节点以及链路 | |
JP2009212550A (ja) | 端末機能管理サーバ、通信システム及び通信方法 | |
CN111708834A (zh) | 一种业务配置数据同步的方法、系统、设备及介质 | |
CN113453229B (zh) | 一种远距离的无线安全自动化测试方法、装置及设备 | |
CN112069154B (zh) | etcd分布式数据库自动运维方法及相关装置 | |
CN112905364A (zh) | 微服务的调用方法与电子设备 | |
CN112087475B (zh) | 一种云平台组件应用的消息推送方法、装置及消息服务器 | |
CN114926163A (zh) | 资源跨链转移方法及装置 | |
CA3065729A1 (en) | Business rules processing framework | |
CN111901388B (zh) | 区块链多链系统、用于区块链多链系统的方法、电子设备 | |
CN104901829A (zh) | 基于动作编码的路由数据转发行为一致性验证方法及装置 | |
US9043274B1 (en) | Updating local database and central database | |
US11070659B2 (en) | Incoming voice calling method and terminal | |
CN110620695A (zh) | 一种数据处理方法及相关设备 | |
CN113064906B (zh) | 一种Binlog日志数据适配迁移方法和系统 | |
CN113626850B (zh) | 基于联盟链的请求处理方法、装置、设备和存储介质 | |
CN108206823B (zh) | 一种处理报文的方法、系统及网络设备 | |
CN111787093B (zh) | 应用管理方法、应用管理装置、相关设备及介质 | |
CN114500651A (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 | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: 201111 Building 8, No. 207, Zhongqing Road, Minhang District, Shanghai Applicant after: Dayu robot Co.,Ltd. Address before: 200245 2nd floor, building 2, no.1508, Kunyang Road, Minhang District, Shanghai Applicant before: Dalu Robot Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |