消息传输方法及装置
技术领域
本说明书一个或多个实施例涉及区块链技术领域,尤其涉及一种消息传输方法及装置。
背景技术
区块链技术(也被称之为,分布式账本技术)是一种去中心化的分布式数据库技术,具有去中心化、公开透明、不可篡改、可信任等多种特点,适用于诸多对数据可靠性具有高需求的应用场景中。
发明内容
有鉴于此,本说明书一个或多个实施例提供一种消息传输方法及装置。
为实现上述目的,本说明书一个或多个实施例提供技术方案如下:
根据本说明书一个或多个实施例的第一方面,提出了一种消息传输方法,应用于区块链中继通信网络中的中继节点,所述方法包括:
接收各个区块链节点发送的数字证书,所述数字证书中包含各个区块链节点的身份信息和所属区块链网络的网络标识信息;
通过签发所述数字证书的CA认证中心的公钥对所述数字证书进行验签,并在验签通过的情况下关联记录各个区块链节点的身份信息与相应的网络标识信息的映射关系;
在接收到任一区块链节点发送的区块链消息的情况下,确定所述区块链消息的接收方身份信息和所述任一区块链节点的目标网络标识信息,并根据所述映射关系确定匹配于所述目标网络标识信息和所述接收方身份信息的目标区块链节点;
向所述目标区块链节点传输所述区块链消息。
根据本说明书一个或多个实施例的第二方面,提出了一种消息传输方法,应用于区块链节点,所述方法包括:
获取CA认证中心向所述区块链节点签发的数字证书,所述数字证书中包含所述区块链节点的身份信息和所属区块链网络的网络标识信息;
向区块链中继通信网络中的中继节点发送所述数字证书,所述中继节点用于根据所述CA认证中心的公钥对各个区块链节点发送的数字证书进行验签,并在验签通过的情况下关联记录各个区块链节点的身份信息与相应的网络标识信息的映射关系;以及,在接收到任一区块链节点发送的区块链消息的情况下,确定所述区块链消息的接收方身份信息和所述任一区块链节点的目标网络标识信息,并根据所述映射关系确定匹配于所述目标网络标识信息和所述接收方身份信息的目标区块链节点,以向所述目标区块链节点传输所述区块链消息。
根据本说明书一个或多个实施例的第三方面,提出了一种消息传输装置,应用于区块链中继通信网络中的中继节点,所述装置包括:
接收单元,接收各个区块链节点发送的数字证书,所述数字证书中包含各个区块链节点的身份信息和所属区块链网络的网络标识信息;
验证单元,通过签发所述数字证书的CA认证中心的公钥对所述数字证书进行验签,并在验签通过的情况下关联记录各个区块链节点的身份信息与相应的网络标识信息的映射关系;
确定单元,在接收到任一区块链节点发送的区块链消息的情况下,确定所述区块链消息的接收方身份信息和所述任一区块链节点的目标网络标识信息,并根据所述映射关系确定匹配于所述目标网络标识信息和所述接收方身份信息的目标区块链节点;
传输单元,向所述目标区块链节点传输所述区块链消息。
根据本说明书一个或多个实施例的第四方面,提出了一种消息传输装置,应用于区块链节点,所述装置包括:
获取单元,获取CA认证中心向所述区块链节点签发的数字证书,所述数字证书中包含所述区块链节点的身份信息和所属区块链网络的网络标识信息;
发送单元,向区块链中继通信网络中的中继节点发送所述数字证书,所述中继节点用于根据所述CA认证中心的公钥对各个区块链节点发送的数字证书进行验签,并在验签通过的情况下关联记录各个区块链节点的身份信息与相应的网络标识信息的映射关系;以及,在接收到任一区块链节点发送的区块链消息的情况下,确定所述区块链消息的接收方身份信息和所述任一区块链节点的目标网络标识信息,并根据所述映射关系确定匹配于所述目标网络标识信息和所述接收方身份信息的目标区块链节点,以向所述目标区块链节点传输所述区块链消息。
根据本说明书一个或多个实施例的第五方面,提出了一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器通过运行所述可执行指令以实现如第一方面或第二方面所述的方法。
根据本说明书一个或多个实施例的第六方面,提出了一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如第一方面或第二方面所述方法的步骤。
附图说明
图1是一示例性实施例提供的一种区块链节点与区块链中继通信网络的交互示意图。
图2是一示例性实施例提供的一种消息传输场景的示意图。
图3是一示例性实施例提供的一种消息传输方法的流程图。
图4是一示例性实施例提供的一种树状路由表的示意图。
图5是一示例性实施例提供的另一种消息传输方法的流程图。
图6是一示例性实施例提供的一种设备的结构示意图。
图7是一示例性实施例提供的一种消息传输装置的框图。
图8是一示例性实施例提供的另一种消息传输装置的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。
需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
图1是一示例性实施例提供的一种区块链节点与区块链中继通信网络的交互示意图。如图1所示,假定区块链中继通信网络包含中继11、中继12、中继13和中继14等若干中继节点。以中继11为例,该中继11可以通过网关101与区块链网络中的节点21相连;类似地,其他中继节点也可以与区块链网络中的其他区块链节点相连。网关101用于协助节点21接入区块链中继通信网络,该网关101在逻辑上相当于区块链网络中的一个区块链节点,但该网关101本身并不参与区块链共识,这样节点21可以通过区块链网络所采用的通信协议与该网关101进行通信,并且该网关101不会对区块链网络中的共识等过程产生负面影响。网关101本质上是节点21接入区块链中继通信网络的适配程序,该适配程序可以部署在节点21上,也可以部署在中继11上,还可以部署在独立于中继11和节点21的另一设备中,本说明书并不对此进行限制。
区块链网络中包含若干区块链节点,区块链节点之间需要实现诸如共识、交易传输、区块同步等通信操作。在相关技术中,各个区块链节点之间直接采用P2P(Peer toPeer,点对点)技术进行通信,以传输交易、区块等,但由于各种网络因素导致通信时延高、稳定性差,无法满足应用需求。因此,类似于上述的节点21,每个区块链节点都可以分别接入区块链中继通信网络中的中继节点,这样区块链节点之间就可以通过区块链中继通信网络来实现通信。由于区块链中继通信网络是面向区块链实时传输的骨干中继通信网络,各个中继节点之间能够通过高QoS保障的优质带宽进行通信交互,因而由区块链中继通信网络接管区块链节点之间通信的中间链路,能够降低通信时延、提高稳定性,从而显著提升区块链节点之间的通信质量。
区块链中继通信网络可以适用于各种类型的区块链网络,包括公有链、私有链和联盟链等。譬如,应用于公有链的区块链中继通信网络主要包括Falcon、Fast BitcoinRelay Network(FBRN)、Fast Internet Bitcoin Relay Engine(FIBRE)等,而应用于联盟链的区块链中继通信网络主要包括BloXRoute、Blockchain Transmission Network (BTN)等。
在相关技术中,区块链中继通信网络可同时接入多个区块链网络,即支持多条区块链同时进行消息的传输。其中,由于中继节点接入了分别属于不同区块链网络的多个区块链节点,为了防止各个区块链网络内的消息泄露至其他区块链网络,中继节点必须保证待传输的消息在属于同一区块链网络内的区块链节点之间传输,而不会传输至其他区块链网络。
以图2所示的消息传输场景为例。节点21与区块链中继通信网络中的中继11相连、节点22与中继12相连、节点23-24与中继13相连;当然,也可能是中继11分别与节点21-24相连。其中,为了便于理解,此处省去了前文所述的网关(如网关101)。假定节点21-24在区块链网络中的分布情况如表1所示:
如表1所示,节点21为区块链网络1中的节点a,节点22同时作为区块链网络1和区块链网络2中的区块链节点(比如,节点22同时维护区块链网络1和区块链网络2的数据,区块链网络1和区块链网络2之间的数据隔离存储),节点23与节点24分别属于区块链网络1和区块链网络2中的区块链节点,但是两节点的节点id均为节点c。
在一种情况下,节点21作为区块链网络1中的节点a,需要向同属于区块链网络1的节点b传输消息,因此指示区块链中继通信网络向节点b传输消息。假设节点b在逻辑层面上作为区块链网络1中的区块链节点b1,以及在逻辑层面上作为区块链网络2中的区块链节点b2。那么,区块链中继通信网络中的中继节点无法确认待传输的消息是传输至区块链节点b1还是传输至区块链节点b2;比如,中继节点无法确认是与节点b建立用于传输区块链网络1中消息的通道1,还是与节点b建立用于传输区块链网络2中消息的通道2。
在另一种情况下,节点21作为区块链网络1中的节点a,需要向同属于区块链网络1的节点c传输消息,因此指示区块链中继通信网络向节点c传输消息。那么,区块链中继通信网络中的中继节点无法确认待传输的消息是传输至属于区块链网络1中的节点c(即节点23),还是传输至属于区块链网络2中的节点c(即节点24);比如,中继节点无法确认是与区块链网络1中的节点c建立用于传输区块链网络1中消息的通道1,还是与区块链网络2中的节点c建立用于传输区块链网络2中消息的通道2。
由此可见,在上述情况下,中继节点存在将某一区块链网络内的消息泄露至其他区块链网络的风险。而为了避免该风险,保证待传输的消息在属于同一区块链网络内的区块链节点之间传输,本说明书提供了新的消息传输方案。
图3是一示例性实施例提供的一种消息传输方法的流程图。如图3所示,该方法应用于区块链中继通信网络中的中继节点,该方法可以包括:
步骤302,接收各个区块链节点发送的数字证书,所述数字证书中包含各个区块链节点的身份信息和所属区块链网络的网络标识信息。
当区块链网络申请接入区块链中继通信网络时,该区块链网络中的区块链节点需先向区块链中继通信网络的CA(Certificate Authority)认证中心申请数字证书。换言之,由CA认证中心向各个区块链节点(可属于同一区块链网络,也可属于不同区块链网络)签发数字证书,所签发的数字证书中包含各个区块链节点的身份信息和所属区块链网络的网络标识信息,该网络标识信息作为区块链网络的唯一性标识,用于标明区块链网络的身份,以与其他区块链网络区分开。比如,CA认证中心可针对每个区块链网络生成相应的链id,即同一区块链网络内的区块链节点拥有相同的链id,而属于不同区块链网络的区块链节点的链id也随之不同。
作为一示例性实施例,各个区块链节点所属区块链网络的网络标识信息可由CA认证中心基于相应区块链节点维护的创世块生成。对于属于同一区块链网络内的不同区块链节点,其维护的创世块必然相同,那么基于创世块生成的网络标识信息即可作为该区块链网络的网络标识信息。也即,CA认证中心通过基于区块链节点维护的创世块来生成网络标识信息,可使得针对属于同一区块链网络的区块链节点生成相同的网络标识信息,而针对属于不同区块链网络的区块链节点,生成的网络标识信息也不同。因此,后续可基于网络标识信息来区分不同区块链网络内的区块链节点。当然,也可基于其他预先指定的区块来生成网络标识信息,比如该预先指定的区块可以是第10个区块、第100个区块、第166个区块等等,只要保证基于统一的指定区块来生成网络标识信息即可,本说明书并不对此进行限制。
以创世块的情况为例进行说明。可在区块链网络的链代码中定义用于生成该区块链网络的创世块的代码逻辑。在该情况下,对于新加入某一区块链网络的区块链节点,该区块链节点配置有对应于区块链网络的链代码,那么可由该区块链节点通过执行上述代码逻辑来生成创世块,以完成后续接入区块链中继通信网络的过程。或者,对于新加入某一区块链网络的区块链节点,该区块链节点可从区块链网络的其他区块链节点处拷贝区块数据(比如,可仅拷贝创世块的数据,或者可拷贝所有区块的数据)以获得创世块,从而基于创世块完成后续接入区块链中继通信网络的过程。
进一步的,各个区块链节点可对自身维护的创世块进行哈希计算得到相应的创世块哈希值,然后将生成的创世块哈希值、自身的节点公钥和节点id(即节点标识信息)发送至CA认证中心,以由CA认证中心对上述数据进行认证。其中,CA认证中心可配置针对区块链节点的认证规则,该认证规则用于判定区块链节点是否具备申请获得数字证书的资格。当然,认证规则的具体内容可根据实际需求灵活设定,本说明书并不对此进行限制。进一步的,CA认证中心可根据创世块哈希值生成链id,从而根据链id、节点公钥和节点id生成数字证书,并向相应的区块链节点返回该数字证书。比如,CA认证中心可采用自身的私钥对数字证书中包含的链id、节点公钥和节点id进行签名,并将签名记录在数字证书中。同时,CA认证中心可在本地记录生成的链id。
需要说明的是,可将区别于区块链中继通信网络中所有中继节点的其他设备配置为CA认证中心,从而面向各个区块链节点提供数字证书的签发服务。或者,可将区块链中继通信网络中的一个或多个中继节点配置为CA认证中心。比如,每个中继节点均可以内置证书授权服务(即CA服务),但通常只有网络内的部分中继节点会启动CA服务,较为典型的,可以仅有一台中继节点启动CA服务,从而面向各个区块链节点提供数字证书的签发服务。
步骤304,通过签发所述数字证书的CA认证中心的公钥对所述数字证书进行验签,并在验签通过的情况下关联记录各个区块链节点的身份信息与相应的网络标识信息的映射关系。
区块链节点在获得CA认证中心为其签发的数字证书后,可请求与区块链中继通信网络建立连接,以向区块链中继通信网络出示自身的数字证书以供中继节点验证,从而完成与区块链中继通信网络的接入。比如,区块链节点可通过SSL(Secure Sockets Layer,安全套接字协议)连接至区块链中继通信网络中的中继节点,并与中继节点建立连接以传输数据。
由于CA认证中心在为区块链节点签发数字证书时,采用自身的私钥对数字证书包含的内容进行签名,中继节点在获取区块链节点提供的数字证书后,可通过CA认证中心的公钥对该数字证书进行验签,从而确认是否允许区块链节点接入区块链中继通信网络。在验证通过后,可关联记录各个区块链节点的节点标识信息与相应的网络标识信息的映射关系,从而后续可利用该映射关系来准确查找待传输的区块链消息的接收方。当然,若验证失败,则禁止区块链节点接入区块链中继通信网络。
为了防止区块链节点假冒其他区块链节点,可进一步验证提供数字证书的区块链节点的身份。具体而言,数字证书中包含的身份信息可包括相应的区块链节点的节点标识信息和/或节点公钥。其中,针对区块链节点提供的数字证书中包含自身的节点公钥和节点标识信息(即节点id)的情况(即身份信息包括节点标识信息和节点公钥的情况),区块链节点通过自身的节点私钥对节点标识信息进行了签名。那么,中继节点在针对区块链节点的数字证书验签通过的情况下,可通过数字证书中包含的节点公钥对数字证书中包含的节点标识信息进行验签。当验签通过时,判定区块链节点的身份无误。进一步的,在针对节点标识信息验签通过的情况下,中继节点可与相应的区块链节点建立传输通道,该传输通道用于在中继节点与该区块链节点之间传输区块链消息。例如,中继节点可与区块链节点建立长连接以用于后续传输区块链消息。
除上述中继节点对区块链节点进行验证以外,区块链节点也可相应地对中继节点进行验证,从而防止其他设备假冒中继节点。也即,中继节点与区块链节点之间可相互交换数字证书进行验证。具体而言,与区块链节点申请数字证书类似的,中继节点也可向CA认证中心申请数字证书,比如中继节点可向CA认证中心提供自身的描述信息(节点id、节点公钥、区块链中继通信网络的网络标识、软件版本等等)以由CA认证中心进行验证。在验证通过后,CA认证中心可向中继节点签发数字证书。同理,中继节点可向各个区块链节点发送自身的数字证书。那么,区块链节点在获取中继节点的数字证书后,可通过CA认证中心的公钥对该数字证书进行验签。若验签通过,则判定中继节点的身份无误,从而向中继节点提供自身的数字证书。
步骤306,在接收到任一区块链节点发送的区块链消息的情况下,确定所述区块链消息的接收方身份信息和所述任一区块链节点的目标网络标识信息,并根据所述映射关系确定匹配于所述目标网络标识信息和所述接收方身份信息的目标区块链节点。
同一区块链网络内的区块链节点之间传输的区块链消息可以包括以下至少之一:区块同步消息、共识消息、交易同步消息。比如,当区块链网络内新加入一区块链节点时,该区块链节点可向其他区块链节点获取当前已有的区块数据,以实现区块数据的同步。那么,其他区块链节点向该区块链节点传输的区块数据则为上述区块同步消息。又如,区块链网络内各个区块链节点之间在进行共识时,各个区块链节点之间进行共识所需互相传输的数据则为上述共识消息。又如,区块链网络内各个区块链节点之间在对交易进行共识时,由接收到客户端提交的交易的区块链节点向其他区块链节点传输该交易,从而完成后续的共识过程;在该情况下,该交易则为上述交易同步消息。
任一区块链节点发送的区块链消息中可记录该区块链消息的接收方的身份信息(下文简称为接收方身份信息)和该区块链节点(即区块链消息的发送方)所属区块链网络的网络标识信息(下文简称为目标网络标识信息)。那么,中继节点在获取区块链消息后,可读取接收方身份信息和目标网络标识信息,进而根据记录的映射关系,从中查找同时与接收方身份信息和目标网络标识信息相匹配的区块链节点作为目标区块链节点。
可见,基于关联记录有各个区块链节点的身份信息与相应的网络标识信息的映射关系,可同时从节点层面和网络层面共同来标记区块链节点的身份,即可通过节点标识和网络标识共同来定位区块链节点,从而避免上述中继节点存在将某一区块链网络内的消息泄露至其他区块链网络的风险,实现区块链网络之间的数据隔离,保证待传输的消息在属于同一区块链网络内的区块链节点之间传输。
步骤308,向所述目标区块链节点传输所述区块链消息。
中继节点在确定出目标区块链节点后,可进一步确定区块链中继通信网络中与该目标区块链节点相连的目标中继节点,从而通过目标中继节点将区块链消息传输至目标区块链节点。
中继节点可同时采用节点id和相应的链id来共同标记区块链节点的身份。承接于上述图2和表1的举例进行说明,如表2所示:
如表2所示,对于节点22,同时作为区块链网络1和区块链网络2中的区块链节点,因此节点22存在两个身份,分别为“区块链网络1—节点b(即上述区块链节点b1)”和“区块链网络2—节点b(即上述区块链节点b2)”,可从链id上区分两者。对于节点23与节点24,虽然两者的节点id相同,但是分别属于区块链网络1和区块链网络2,因此也可从链id上区分两者。
比如,节点21作为区块链网络1中的节点a,需要向同属于区块链网络1的节点b(即逻辑层面上的区块链节点b1)传输区块链消息,可在区块链消息中记录自身的链id“区块链网络1”以及目标区块链节点的节点id“节点b”。那么,中继节点在接收到节点a发送的区块链消息后,可读取上述链id“区块链网络1”和节点id“节点b”,进而在记录的映射关系中查找同时匹配于链id“区块链网络1”和节点id“节点b”的区块链节点以作为目标区块链节点。例如,中继节点可匹配命中映射关系“区块链网络1—节点b”,进而确定目标区块链节点为属于区块链网络1的节点b(即逻辑层面上的区块链节点b1),进而与节点b建立与区块链网络1对应的传输通道(比如为长连接),该传输通道专用于在中继节点与节点a之间传输区块链网络1内的区块链消息,而无法传输区块链网络2内的区块链消息,即传输通道与区块链网络为“一一对应”的关系。
又如,节点21作为区块链网络1中的节点a,需要向同属于区块链网络1的节点c传输区块链消息,可在区块链消息中记录自身的链id“区块链网络1”以及目标区块链节点的节点id“节点c”。那么,中继节点在接收到节点a发送的区块链消息后,可读取上述链id“区块链网络1”和节点id“节点c”,进而在记录的映射关系中查找同时匹配于链id“区块链网络1”和节点id“节点c”的区块链节点以作为目标区块链节点。例如,中继节点可匹配命中映射关系“区块链网络1—节点c”,进而确定目标区块链节点为属于区块链网络1的节点c(即节点23),而非属于区块链网络2的节点c(即节点24),进而与节点23建立与区块链网络1对应的传输通道,该传输通道专用于在中继节点与节点23之间传输区块链网络1内的区块链消息。
在本说明书的消息传输方案中,还可定义区块链节点集合以节省通讯资源,通过区块链中继通信网络实现更为高效的通信过程。下面进行详细说明。
以图2所示的消息传输场景为例。当节点21需要向节点22和节点23发送消息时,节点21首先将消息发送至中继11,由中继11将该消息转发至中继12。中继12一方面将该消息转发至节点22、另一方面将该消息转发至中继13。中继13分别将该消息转发至节点23和节点24。那么,最终节点22和节点23收到来自节点21的消息,但是节点24也同样收到了该消息,实际上中继13向节点24转发消息的操作并非必要,该操作造成了对通讯资源的浪费。
为此,区块链中继通信网络中可以在控制面和数据面上实现分层,通过把网络数据的转发控制策略和数据传输过程分离,使得转发控制策略可自由定义,而数据传输也能够更加通用和高效。对于区块链中继通信网络而言,控制面可以理解为消息路由的策略,而数据面是指区块链消息在区块链中继通信网络中的传输。而区块链节点通过提交注册请求,可以根据应用(或业务)上的需求而自由配置自身所属的区块链节点集合,进而调整与该区块链节点相关的消息路由。
通过采用上述方式,区块链消息在区块链中继通信网络中的传输过程得以优化。仍以上文所述的节点21-24为例:假定节点21希望将区块链消息发送至节点22和节点23,如果节点22和节点23预先加入了同一区块链节点集合,那么节点21只要将该区块链消息的发送目标标注为该区块链节点集合,就可以确保区块链中继通信网络仅将该区块链消息发送至归属于该区块链节点集合的节点22和节点23,比如节点21将区块链消息发送至中继11、中继11将该区块链消息转发至中继12、中继12分别将区块链消息转发至节点22和中继13、中继13将该区块链消息转发至节点23,而避免将该区块链消息发送至其他的中继节点和区块链节点,以避免通信资源的浪费。
在一实施例中,可由区块链节点通过预先向中继节点发送注册请求来加入区块链节点集合。那么,中继节点可根据各个区块链节点提交的注册请求,分别将各个区块链节点注册至相应的注册请求所指示的区块链节点集合中。
如果注册请求中包含集合标识,中继节点可以将发起该注册请求的区块链节点注册至该集合标识对应的区块链节点集合中;其中,如果该集合标识对应的区块链节点集合事先已经创建,那么相当于将该区块链节点加入该区块链节点集合,如果该集合标识对应的区块链节点集合事先并未创建,那么相当于创建该区块链节点集合,并将该区块链节点加入该区块链节点集合。
如果注册请求中未包含集合标识,中继节点可以将发起注册请求的区块链节点注册至默认区块链节点集合。默认区块链节点集合可以包括发起注册请求的区块链节点所属区块链网络中的所有区块链节点;或者,默认区块链节点集合可以为其他预定义的区块链节点集合,这取决于区块链中继通信网络采用的预定义策略。
在另一实施例中,可由CA认证中心来划分区块链节点集合,即在区块链节点向CA认证中心申请数字证书的阶段,将区块链节点加入相应的区块链节点集合。在一种情况下,可类似于上述注册请求的方式将区块链节点注册至注册请求指示的区块链节点集合,可参考上述描述,在此不再赘述。在另一种情况下,可由CA认证中心根据预定义的划分策略来将申请数字证书的区块链节点进行划分;当然,该划分策略可根据实际需求灵活设定,本说明书并不对此进行限制。
无论是上述哪种情况,在划分好区块链节点集合后,CA认证中心在向区块链节点签发数字证书时,可在各个区块链节点的数字证书中记录相应的区块链节点所属区块链节点集合的集合标识。那么,后续区块链节点在向中继节点提供数字证书以完成接入区块链中继通信网络时,中继节点可在针对数字证书验签通过的情况下,分别将各个区块链节点注册至相应数字证书包含的集合标识所指示的区块链节点集合中,即中继节点维护区块链节点集合中的节点成员。
在区块链节点并未加入任何区块链节点集合时,该区块链节点在区块链中继通信网络中对应的路由策略仅涉及该区块链节点的节点id和与该区块链节点相连的中继节点的中继id,比如图2中的节点21对应的路由策略为“节点21-中继11”、节点22对应的路由策略为“节点22-中继12”等。而在区块链节点加入区块链节点集合后,该区块链节点在区块链中继通信网络中对应的路由策略中会增加与该区块链节点集合相关的信息。比如,当节点21加入了区块链节点集合SID1时,该节点21对应的路由策略可以由上述的“节点21-中继11”更新为“SID1/节点21-中继11”,表明该节点21归属于区块链节点集合SID1。
区块链节点集合之间可以存在一定的层级关系,基于该层级关系以及区块链节点所属的区块链节点集合、区块链节点与中继节点之间的连接关系,可以将各个区块链节点在区块链中继通信网络中对应的路由策略形成一树状结构,即树状路由表。例如图4所示,假定节点21和节点22归属于区块链节点集合SID1,节点23和节点24归属于区块链节点集合SID2,而区块链节点集合SID1和区块链节点集合SID2均归属于区块链节点集合CID1(因此,节点21-24实际上均归属于区块链节点集合CID1),因此区块链节点集合CID1在该树状路由表中对应于根节点41,区块链节点集合SID1和区块链节点集合SID2在该树状路由表中分别对应于根节点41的子节点42-43,节点21和节点22在该树状路由表中分别对应于节点42的子节点44-45,节点23和节点24在该树状路由表中分别对应于节点43的子节点46-47,且节点44-47为该树状路由表的叶子节点,而这些叶子节点的取值为相连的中继节点的中继id,比如节点21与中继11相连,因而叶子节点44的取值为中继11,等等。
当然,图4所示的树状路由表是逻辑层面的路由关系,中继节点实际在记录这些路由关系时往往采用其他形式。例如,对于每个区块链节点而言,中继节点可以按照从根节点至该区块链节点对应的叶子节点的路径,生成该区块链节点对应的路由策略,并通过预定义的分隔符对相邻节点予以分隔,那么节点21对应的路由策略可以为CID1/SID1/Node1:tn1,其中Node1为节点21的节点id、tn1为中继11的中继id。类似地,节点23对应的路由策略可以为CID1/SID2/Node3:tn3,其中Node3为节点23的节点id、tn3为中继13的中继id,等等。
通过在路由策略中对区块链节点所处的整条路径上的节点予以描述,使得低层级的区块链节点集合的集合标识可以更加灵活。例如,在上述的区块链节点集合SID1和SID2的基础上,进一步包含了下一层级的区块链节点集合,比如归属于区块链节点集合SID1的区块链节点集合1、归属于区块链节点集合SID2的区块链节点集合2,那么即便区块链节点集合1和区块链节点集合2采用相同的集合标识,也可以通过区块链节点集合SID1和SID2之间的差异予以区分。
同一区块链节点可以根据应用需求而加入一个或多个区块链节点集合,即不同区块链节点集合所含的区块链节点可能存在重叠,比如区块链节点集合C1可以包括节点21、节点22和节点23,区块链节点集合C2可以包括节点22、节点23、节点24和节点25,那么节点22和节点23就同时归属于这2个区块链节点集合C1和C2。
中继节点可以从相连的区块链节点处接收到针对目标区块链节点集合发送的区块链消息,并通过本说明书的技术方案传输该区块链消息,比如该中继节点仅将该区块链消息转发至目标中继节点,而并不转发至其他的中继节点。当然,该中继节点也可以是从区块链中继通信网络中的其他中继节点处接收到针对目标区块链节点集合发送的区块链消息,此时该中继节点可能是目标中继节点之一,或者该中继节点也可能并非目标中继节点,但需要通过该中继节点将区块链消息转发至目标中继节点。譬如在图2所示的实施例中,假定节点21希望将区块链消息发送至目标区块链节点集合,该目标区块链节点集合的成员为节点24:中继11首先从节点21处收到区块链消息,并确定出目标中继节点为与节点24相连的中继13,且中继11与中继13之间的路由转发路径为“中继11-中继12-中继13”,因此中继11将该区块链消息转发至中继12;中继12收到区块链消息后,发现目标中继节点为中继13,因此中继12将区块链消息转发至中继13;中继13收到区块链消息后,发现目标中继节点为自己、目标区块链节点为节点24,因此中继14将区块链消息转发至节点24。
区块链节点可以通过在区块链消息中添加集合标识,以指示目标区块链节点集合。相应地,中继节点在接收到区块链消息后,可以从该区块链消息中读取集合标识,并将该集合标识对应的区块链节点集合,确定为区块链消息对应的目标区块链节点集合。如果采用如前所述的树状路由表,区块链消息所含的集合标识最好能够包含目标区块链节点对应路径中的所有区块链节点集合的信息,比如对于图4中的节点21而言,区块链消息所含的集合标识可以表达为“CID1/SID1”,这样即便存在其他的诸如“CID2/SID1”等,也可以明确予以区分。当然,如果能够确保所有层级的各个区块链节点集合的集合标识都具有唯一性,也可以仅包含目标区块链节点集合本身的集合标识,比如将上述的“CID1/SID1”调整为“SID1”。
如前所述,中继节点可以生成路由表,以用于记录各个区块链节点所属的区块链节点集合,以及各个区块链节点与中继节点之间的连接关系;比如该路由表可以采用上述的树状路由表或其他形式的路由表。相应地,中继节点可以通过查询该路由表,确定已注册至目标区块链节点集合的目标区块链节点,以及区块链中继通信网络中与目标区块链节点相连的目标中继节点,进而通过目标中继节点将区块链消息传输至各个目标区块链节点。
中继节点在确定出目标中继节点后:如果该中继节点自身属于目标区块链节点,那么该中继节点根据与自身相连的目标区块链节点,将区块链消息传输至该目标区块链节点;如果该中继节点并非目标区块链节点,或者除了该中继节点之外还存在其他的目标中继节点,那么该中继节点将区块链消息传输至目标中继节点,以由该目标中继节点转发至相连的目标区块链节点。中继节点将区块链消息传输至目标中继节点时,如果该中继节点可以直接与目标中继节点相连,则可以直接将区块链消息传输至该目标中继节点,如果该中继节点并未直接与目标中继节点相连,则可以规划自身与该目标中继节点之间的传输路径,并将区块链消息发送至该传输路径中位于下一跳的中继节点,使得该区块链消息能沿该传输路径到达目标中继节点。
基于上述对区块链节点集合的设定,区块链节点可在待传输的区块链消息中添加目标区块链节点集合的集合标识,目标区块链节点集合中的区块链节点即为该区块链消息的指定接收方。那么,中继节点在接收到区块链消息后,可从区块链消息中读取集合标识,并将该集合标识对应的区块链节点集合,确定为区块链消息对应的目标区块链节点集合。在确定出目标区块链节点集合之后,可在目标区块链节点集合中确定出实际的目标区块链节点,即区块链消息的接收方。需要注意的是,对于目标区块链节点集合中的区块链节点,仍然存在上述“中继节点将某一区块链网络内的消息泄露至其他区块链网络”的风险。因此,仍然需要利用上述映射关系来查询目标区块链节点,即根据映射关系确定目标区块链节点集合中匹配于目标网络标识信息和接收方身份信息的目标区块链节点。其中,上述查询匹配的过程,与上述图3所示实施例中的查询匹配过程的原理相同,在此不再赘述。
对应于上述中继节点侧的实施例,本说明书还提出了区块链节点侧的实施例,在中继节点侧实施例中所涉及的描述同样可以适用于区块链节点侧的实施例,下文中不再对此进行赘述。
相应地,图5是一示例性实施例提供的一种消息传输方法的流程图。如图5所示,该方法可以包括以下步骤:
步骤502,获取CA认证中心向所述区块链节点签发的数字证书,所述数字证书中包含所述区块链节点的身份信息和所属区块链网络的网络标识信息;
步骤504,向区块链中继通信网络中的中继节点发送所述数字证书,所述中继节点用于根据所述CA认证中心的公钥对各个区块链节点发送的数字证书进行验签,并在验签通过的情况下关联记录各个区块链节点的身份信息与相应的网络标识信息的映射关系;以及,在接收到任一区块链节点发送的区块链消息的情况下,确定所述区块链消息的接收方身份信息和所述任一区块链节点的目标网络标识信息,并根据所述映射关系确定匹配于所述目标网络标识信息和所述接收方身份信息的目标区块链节点,以向所述目标区块链节点传输所述区块链消息。
如前所述,各个区块链节点所属区块链网络的网络标识信息由所述CA认证中心基于相应区块链节点维护的创世块生成。
如前所述,区块链节点的身份信息包括相应的区块链节点的节点标识信息和/或节点公钥。
如前所述,在身份信息包括节点标识信息和节点公钥的情况下,若所述中继节点针对所述数字证书验签通过,则所述数字证书中包含的节点标识信息被所述中继节点通过所述数字证书中包含的节点公钥进行验签。
如前所述,在针对所述节点标识信息验签通过的情况下,所述中继节点与所述区块链节点建立传输通道,所述传输通道用于在所述中继节点与所述区块链节点之间传输区块链消息。
如前所述,区块链节点还可获取所述中继节点的数字证书,并通过所述CA认证中心的公钥对所述中继节点的数字证书进行验签,以在验签通过的情况下向所述中继节点发送自身的数字证书。
如前所述,所述区块链消息中包含目标区块链节点集合的集合标识;其中,所述中继节点用于确定与所述集合标识对应的目标区块链节点集合,并根据所述映射关系确定所述目标区块链节点集合中匹配于所述目标网络标识信息和所述接收方身份信息的目标区块链节点。
如前所述,区块链节点还可向所述中继节点提交注册请求,所述注册请求用于指示所述中继节点分别将提交注册请求的各个区块链节点注册至相应的注册请求所指示的区块链节点集合中。
如前所述,各个区块链节点的数字证书中包含相应的区块链节点所属区块链节点集合的集合标识;其中,所述中继节点用于在针对所述数字证书验签通过的情况下,分别将各个区块链节点注册至所述数字证书包含的集合标识所指示的区块链节点集合中。
如前所述,所述区块链消息包括以下至少之一:
区块同步消息、共识消息、交易同步消息。
与上述方法实施例相对应,本说明书还提供了一种消息传输装置的实施例。
图6是一示例性实施例提供的一种设备的示意结构图。请参考图6,在硬件层面,该设备包括处理器602、内部总线604、网络接口606、内存608以及非易失性存储器610,当然还可能包括其他业务所需要的硬件。处理器602从非易失性存储器610中读取对应的计算机程序到内存608中然后运行,在逻辑层面上形成消息传输装置。当然,除了软件实现方式之外,本说明书一个或多个实施例并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
请参考图7,在一软件实施方式中,该消息传输装置应用于区块链中继通信网络中的中继节点,可以包括:
接收单元71,接收各个区块链节点发送的数字证书,所述数字证书中包含各个区块链节点的身份信息和所属区块链网络的网络标识信息;
验证单元72,通过签发所述数字证书的CA认证中心的公钥对所述数字证书进行验签,并在验签通过的情况下关联记录各个区块链节点的身份信息与相应的网络标识信息的映射关系;
确定单元73,在接收到任一区块链节点发送的区块链消息的情况下,确定所述区块链消息的接收方身份信息和所述任一区块链节点的目标网络标识信息,并根据所述映射关系确定匹配于所述目标网络标识信息和所述接收方身份信息的目标区块链节点;
传输单元74,向所述目标区块链节点传输所述区块链消息。
可选的,各个区块链节点所属区块链网络的网络标识信息由所述CA认证中心基于相应区块链节点维护的创世块生成。
可选的,区块链节点的身份信息包括相应的区块链节点的节点标识信息和/或节点公钥。
可选的,所述验证单元72还用于:
在身份信息包括节点标识信息和节点公钥的情况下,若针对所述数字证书验签通过,则通过所述数字证书中包含的节点公钥对所述数字证书中包含的节点标识信息进行验签。
可选的,还包括:
建立单元75,在针对节点标识信息验签通过的情况下,与相应的区块链节点建立传输通道,所述传输通道用于在所述中继节点与该区块链节点之间传输区块链消息。
可选的,还包括:
发送单元76,向各个区块链节点发送所述中继节点的数字证书;
其中,在所述中继节点的数字证书被各个区块链节点通过所述CA认证中心的公钥验签通过的情况下,各个区块链节点的数字证书被发送至所述中继节点。
可选的,所述区块链消息中包含目标区块链节点集合的集合标识;
所述确定单元73还用于:确定与所述集合标识对应的目标区块链节点集合;以及,根据所述映射关系确定所述目标区块链节点集合中匹配于所述目标网络标识信息和所述接收方身份信息的目标区块链节点。
可选的,还包括:
第一注册单元77,根据各个区块链节点提交的注册请求,分别将各个区块链节点注册至所述注册请求所指示的区块链节点集合中。
可选的,各个区块链节点的数字证书中包含相应的区块链节点所属区块链节点集合的集合标识;所述装置还包括:
第二注册单元78,在针对所述数字证书验签通过的情况下,分别将各个区块链节点注册至所述数字证书包含的集合标识所指示的区块链节点集合中。
可选的,所述区块链消息包括以下至少之一:
区块同步消息、共识消息、交易同步消息。
请参考图8,在另一软件实施方式中,该消息传输装置应用于区块链节点,可以包括:
获取单元81,获取CA认证中心向所述区块链节点签发的数字证书,所述数字证书中包含所述区块链节点的身份信息和所属区块链网络的网络标识信息;
发送单元82,向区块链中继通信网络中的中继节点发送所述数字证书,所述中继节点用于根据所述CA认证中心的公钥对各个区块链节点发送的数字证书进行验签,并在验签通过的情况下关联记录各个区块链节点的身份信息与相应的网络标识信息的映射关系;以及,在接收到任一区块链节点发送的区块链消息的情况下,确定所述区块链消息的接收方身份信息和所述任一区块链节点的目标网络标识信息,并根据所述映射关系确定匹配于所述目标网络标识信息和所述接收方身份信息的目标区块链节点,以向所述目标区块链节点传输所述区块链消息。
可选的,各个区块链节点所属区块链网络的网络标识信息由所述CA认证中心基于相应区块链节点维护的创世块生成。
可选的,区块链节点的身份信息包括相应的区块链节点的节点标识信息和/或节点公钥。
可选的,在身份信息包括节点标识信息和节点公钥的情况下,若所述中继节点针对所述数字证书验签通过,则所述数字证书中包含的节点标识信息被所述中继节点通过所述数字证书中包含的节点公钥进行验签。
可选的,在针对所述节点标识信息验签通过的情况下,所述中继节点与所述区块链节点建立传输通道,所述传输通道用于在所述中继节点与所述区块链节点之间传输区块链消息。
可选的,获取单元81还用于:
获取所述中继节点的数字证书,并通过所述CA认证中心的公钥对所述中继节点的数字证书进行验签,以在验签通过的情况下向所述中继节点发送自身的数字证书。
可选的,所述区块链消息中包含目标区块链节点集合的集合标识;其中,所述中继节点用于确定与所述集合标识对应的目标区块链节点集合,并根据所述映射关系确定所述目标区块链节点集合中匹配于所述目标网络标识信息和所述接收方身份信息的目标区块链节点。
可选的,还包括:
注册单元83,向所述中继节点提交注册请求,所述注册请求用于指示所述中继节点分别将提交注册请求的各个区块链节点注册至相应的注册请求所指示的区块链节点集合中。
可选的,各个区块链节点的数字证书中包含相应的区块链节点所属区块链节点集合的集合标识;其中,所述中继节点用于在针对所述数字证书验签通过的情况下,分别将各个区块链节点注册至所述数字证书包含的集合标识所指示的区块链节点集合中。
可选的,所述区块链消息包括以下至少之一:
区块同步消息、共识消息、交易同步消息。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
在一个典型的配置中,计算机包括一个或多个处理器 (CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器 (RAM) 和/或非易失性内存等形式,如只读存储器 (ROM) 或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存 (PRAM)、静态随机存取存储器 (SRAM)、动态随机存取存储器 (DRAM)、其他类型的随机存取存储器 (RAM)、只读存储器 (ROM)、电可擦除可编程只读存储器 (EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘 (DVD) 或其他光学存储、磁盒式磁带、磁盘存储、量子存储器、基于石墨烯的存储介质或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
在本说明书一个或多个实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。