CN114338795B - 一种区块链客户端的数据通信方法及装置 - Google Patents
一种区块链客户端的数据通信方法及装置 Download PDFInfo
- Publication number
- CN114338795B CN114338795B CN202111589913.8A CN202111589913A CN114338795B CN 114338795 B CN114338795 B CN 114338795B CN 202111589913 A CN202111589913 A CN 202111589913A CN 114338795 B CN114338795 B CN 114338795B
- Authority
- CN
- China
- Prior art keywords
- grpc
- request
- blockchain
- node
- identity
- 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
- 230000006854 communication Effects 0.000 title claims abstract description 96
- 238000004891 communication Methods 0.000 title claims abstract description 92
- 238000000034 method Methods 0.000 title claims abstract description 65
- 238000012795 verification Methods 0.000 claims abstract description 26
- 238000004590 computer program Methods 0.000 claims description 27
- 238000010586 diagram Methods 0.000 description 6
- 230000004044 response Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 239000004744 fabric Substances 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000003993 interaction Effects 0.000 description 2
- 230000002427 irreversible effect Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
Abstract
本申请实施例适用于区块链技术领域,提供了一种区块链客户端的数据通信方法及装置,所述方法包括:接收来自区块链客户端的Grpc请求;若所述Grpc请求包括请求头,则从所述请求头中获取所述Grpc请求的节点标志和身份标志;从所述Grpc请求的请求体中获取所述Grpc请求的数据签名;根据所述数据签名和所述身份标志,对所述Grpc请求进行身份验证;若所述Grpc请求通过身份验证,则根据所述节点标志,建立所述区块链客户端与对应的目标区块链节点之间的通信连接;通过所述通信连接将所述Grpc请求转发至所述目标区块链节点。通过上述方法,能够利用Grpc代理实现区块链客户端与区块链节点之间的数据通信。
Description
技术领域
本申请属于区块链技术领域,特别是涉及一种区块链客户端的数据通信方法及装置。
背景技术
区块链客户端向区块链节点发送请求,可以实现与区块链的数据交互。区块链客户端可以通过Grpc代理实现与区块链节点的数据通讯。
但是,目前区块链客户端在通过Grpc代理与区块链节点进行数据通讯时,只支持常规Grpc请求的转发,对于双工流模式下的Grpc请求,难以支持身份校验功能;或者一般需要区块链客户端通过配置IP地址来实现转发,但是对于区块链场景下,用户一般不关心节点的IP,如果仍然使用IP将增加用户的使用难度。
发明内容
有鉴于此,本申请实施例提供了一种区块链客户端的数据通信方法及装置,用以利用Grpc代理实现区块链客户端与区块链节点之间的数据通信。
本申请实施例的第一方面提供了一种区块链客户端的数据通信方法,应用于Grpc代理服务器,所述方法包括:
接收来自区块链客户端的Grpc请求;
若所述Grpc请求包括请求头,则从所述请求头中获取所述Grpc请求的节点标志和身份标志;
从所述Grpc请求的请求体中获取所述Grpc请求的数据签名,所述数据签名为所述区块链客户端根据所述身份标志对所述请求体进行加密得到;
根据所述数据签名和所述身份标志,对所述Grpc请求进行身份验证;
若所述Grpc请求通过身份验证,则根据所述节点标志,建立所述区块链客户端与对应的目标区块链节点之间的通信连接;
通过所述通信连接将所述Grpc请求转发至所述目标区块链节点。
本申请实施例的第二方面提供了一种区块链客户端的数据通信方法,其特征在于,应用于区块链客户端,所述方法包括:
当向目标区块链节点发送数据通信的首个Grpc请求时,确定所述Grpc请求的节点标志和身份标志,所述节点标志用于表征所述目标区块链节点;
将所述节点标志和所述身份标志写入所述Grpc请求的请求头中;
根据所述身份标志,对所述Grpc请求的请求体进行加密,得到所述Grpc请求的数据签名;
将所述数据签名写入所述请求体中;
将所述Grpc请求发送至Grpc代理服务器,所述Grpc代理服务器用于将所述Grpc请求转发至所述目标区块链节点。
本申请实施例的第三方面提供了一种区块链客户端的数据通信装置,应用于Grpc代理服务器,所述装置包括:
接收模块,用于接收来自区块链客户端的Grpc请求;
第一获取模块,用于若所述Grpc请求包括请求头,则从所述请求头中获取所述Grpc请求的节点标志和身份标志;
第二获取模块,用于从所述Grpc请求的请求体中获取所述Grpc请求的数据签名,所述数据签名为所述区块链客户端根据所述身份标志对所述请求体进行加密得到;
身份验证模块,用于根据所述数据签名和所述身份标志,对所述Grpc请求进行身份验证;
连接建立模块,用于若所述Grpc请求通过身份验证,则根据所述节点标志,建立所述区块链客户端与对应的目标区块链节点之间的通信连接;
转发模块,用于通过所述通信连接将所述Grpc请求转发至所述目标区块链节点。
本申请实施例的第四方面提供了一种区块链客户端的数据通信装置,应用于区块链客户端,所述装置包括:
确定模块,用于当向目标区块链节点发送数据通信的首个Grpc请求时,确定所述Grpc请求的节点标志和身份标志,所述节点标志用于表征所述目标区块链节点;
第一写入模块,用于将所述节点标志和所述身份标志写入所述Grpc请求的请求头中;
加密模块,用于根据所述身份标志,对所述Grpc请求的请求体进行加密,得到所述Grpc请求的数据签名;
第二写入模块,用于将所述数据签名写入所述请求体中;
发送模块,用于将所述Grpc请求发送至Grpc代理服务器,所述Grpc代理服务器用于将所述Grpc请求转发至所述目标区块链节点。
本申请实施例的第五方面提供了一种服务器,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述第一方面所述的方法。
本申请实施例的第六方面提供了一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述第二方面所述的方法。
本申请实施例的第七方面提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如上述第一方面所述的方法。
本申请实施例的第八方面提供了另一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如上述第二方面所述的方法。
本申请实施例的第九方面提供了一种计算机程序产品,当所述计算机程序产品在服务器上运行时,使得所述服务器执行上述第一方面所述的方法。
本申请实施例的第十方面提供了另一种计算机程序产品,当所述计算机程序产品在服务器上运行时,使得所述服务器执行上述第二方面所述的方法。
与现有技术相比,本申请实施例包括以下优点:
本申请实施例中,区块链客户端和区块链节点之间可以通过Grpc代理服务器进行数据通信。Grpc代理服务器接收到来自区块链客户端的Grpc请求时,可以先确定该Grpc请求是否有请求头;若Grpc请求具有请求头,说明该Grpc请求为区块链客户端在此次数据通信过程中发送的第一个Grpc请求,此时可以从请求头中提取出身份标志、节点标志;从请求体中获取数据签名;再采用身份标志和数据签名对Grpc请求进行身份验证;若Grpc请求通过身份验证之后,则可以建立区块链客户端和目标区块链节点之间的通信连接,从而利用通信连接将Grpc请求转发至对应的目标区块链节点。本申请实施例中,通过在Grpc请求的请求头中增加身份标志和节点标志,在请求体中增加数据签名,从而实现在区块链客户端与区块链节点之间利用代理服务实现数据通信。在数据通信过程中,区块链客户端只需知道节点标志就可以发送请求,不需要关心区块链的IP,降低了用户的使用难度;同时保障了区块链客户端的轻量化,便于区块链客户端的开发使用。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍。显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请一个实施例提供的一种区块链客户端的数据通信方法的步骤流程示意图;
图2是本申请一个实施例提供的另一种区块链客户端的数据通信方法的步骤流程示意图;
图3是本申请一个实施例提供的再一种区块链客户端的数据通信方法的流程示意图;
图4是本申请一个实施例提供的一种区块链客户端的数据通信装置的示意图;
图5是本申请一个实施例提供的另一种区块链客户端的数据通信装置的示意图;
图6是本申请一个实施例提供的一种服务器的示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定***结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域技术人员应当清楚,在没有这些具体细节的其他实施例中也可以实现本申请。在其他情况中,省略对众所周知的***、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。
应当理解,当在本申请说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本申请说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
另外,在本申请说明书和所附权利要求书的描述中,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
在本申请说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
下面通过具体实施例来说明本申请的技术方案。
参照图1,示出了本申请一个实施例的一种区块链客户端的数据通信方法的步骤流程示意图,具体可以包括如下步骤:
S101,接收来自区块链客户端的Grpc请求。
本实施例的执行主体为代理服务器,在本申请中代理服务器具体可以为Grpc代理服务器。本实施例中的方法可以应用于区块链业务中。区块链是去中心化分布式共享账本,由多个区块链节点组成。用户可以通过集成了对应区块链软件开发工具包(SoftwareDevelopment Kit,SDK)的区块链客户端,向区块链节点发送Grpc请求来和区块链进行交互。本实施例中的数据通信可以指区块链客户端与区块链节点之间进行数据交互。
Grpc是一种高性能、开源和通用的远程过程调用(Remote Procedure Call,RPC)框架。特别地,对于那些支持Grpc的区块链(例如HyperLedger Fabric区块链),区块链客户端需要发送Grpc请求来和该区块链进行交互。
Grpc代理是客户端和服务端之间的桥梁,接收客户端的Grpc请求,并将该请求转发给服务端。针对区块链业务,Grpc代理的客户端就是区块链客户端,服务端就是区块链节点。有了Grpc代理,就可以更灵活地保护区块链节点,减少区块链节点受到攻击的可能;可以更有效的分配资源,提高请求的响应速度等。
区块链客户端可以根据用户需求生成Grpc请求,然后将Grpc请求通过代理服务器发送至对应的区块链节点。在这一过程中,代理服务器可以接收到区块链客户端发送的Grpc请求,然后对该Grpc请求进行处理,再将其发送至对应的区块链节点。
S102,若所述Grpc请求包括请求头,则从所述请求头中获取所述Grpc请求的节点标志和身份标志。
具体地,利用Grpc请求进行通讯时,首个Grpc请求具有请求头和请求体,之后的Grpc请求一般只包括请求体。请求头中包括身份标志和节点标志,请求体中包括数据签名。
在本申请实施例中,可以预先对区块链客户端软件开发工具包进行改造,从而使得区块链客户端生成的Grpc请求的请求头中可以包括节点标志和身份标志,请求体中包括数据签名。上述节点标志为目标区块链节点的唯一标识信息;身份标志是指用户的身份信息;数据签名可以根据身份标志对请求体进行加密得到。
S103,从所述Grpc请求的请求体中获取所述Grpc请求的数据签名,所述数据签名为所述区块链客户端根据所述身份标志对所述请求体进行加密得到。
具体地,Grpc请求的请求体中包括一个预设的信息字段,代理服务器从请求体的该信息字段中可以获取到数据签名。
S104,根据所述数据签名和所述身份标志,对所述Grpc请求进行身份验证。
具体地,Grpc代理服务器和区块链客户端可以事先约定加密算法,例如MD5算法。Grpc代理服务器获取到数据签名之后,可以采用事先约定的加密算法对身份标志和请求体进行加密,得到待验证签名;然后将该待验证签名与请求头中提取出来的数据签名相比较,若二者相同,则确定Grpc请求通过身份验证。
此步骤,一方面对Grpc请求进行了身份验证,另一方面可以保证请求体中的数据不被篡改,从而保障了数据通信过程中的数据安全。
S105,若所述Grpc请求通过身份验证,则根据所述节点标志,建立所述区块链客户端与对应的目标区块链节点之间的通信连接。
具体地,根据节点标志,代理服务器可以确定对应的目标区块链节点;代理服务器可以在区块链客户端和目标区块链节点之间建立通信连接,通信连接可以使区块链客户端与目标区块链节点之间进行数据通信。
S106,通过所述通信连接将所述Grpc请求转发至所述目标区块链节点。
具体地,通过该通信连接,代理服务器可以将Grpc请求转发至目标区块链节点。
对于没有请求头的Grpc请求,代理服务器可以确定该请求对应的通信连接,然后采用该通信连接对应的身份标志以及请求体中的数据签名进行身份验证;若Grpc请求通过身份验证,则代理服务器可以将Grpc请求通过该通信连接发送至目标区块链节点。
当目标区块链节点接收到Grpc请求后,可以通过该通信连接向代理服务器返回结果;代理服务器可以利用该通信连接向区块链客户端返回结果。
当区块链客户端确认完成数据通信之后,可以释放该通信连接。
在一种可能的实现方式中,目标区块链节点在进行数据通信时,需要使用证书。代理服务器在接收到Grpc请求后,可以获取该目标区块链节点的证书信息;然后根据该证书信息加载对应的证书,将该证书随同Grpc请求发送至目标区块链节点。
在本实施例中,区块链客户端通过Grpc代理与区块链节点进行数据通信时,区块链客户端不需要知道区块链的ip,也不需要知道区块链节点是否需要证书,只需要在请求头中增加身份标志和节点标志,就可以将Grpc请求发送至目标区块链节点,从而实现了区块链客户端的轻量化。
参照图2,示出了本申请一个实施例的另一种区块链客户端的数据通信方法的步骤流程示意图,具体可以包括如下步骤:
S201,当向目标区块链节点发送数据通信的首个Grpc请求时,确定所述Grpc请求的节点标志和身份标志,所述节点标志用于表征所述目标区块链节点。
本实施例的执行主体为区块链客户端。区块链客户端中包括客户端软件开发工具包。
具体地,上述首个Grpc请求是指区块链客户端在一次数据通信过程中向目标区块链节点的多个请求数据中的第一个请求数据,该首个Grpc请求具有请求头和请求体。
具体地,区块链客户端可以安装于终端设备上,用户可以通过终端设备登录区块链客户端,然后向区块链发送Grpc请求。节点标志可以为该Grpc请求的目标区块链节点的唯一标识信息;身份标志可以为用户的标识信息。示例性地,节点标志可以为node1;身份标志可以为user1。
S202,将所述节点标志和所述身份标志写入所述Grpc请求的请求头中。
在本实施例中,Grpc请求的请求头中可以包括身份标志和节点标志,代理服务器可以通过节点标志确定该Grpc请求需要发送到的目标区块链节点;可以通过身份标志识别该区块链客户端。比如,节点标志字段Node-ID=node1和身份标志字段User-ID=user1可以标识用户user1要与区块链节点node1进行通信。
为了实现本实施例中的方法,可以对Grpc的源码进行改造。具体地,可以改造Grpc字节流,占用请求体的第n个string类型的字段,作为信息字段。该信息字段用于存放数据签名。该信息字段由标签、字段长度和数据签名三部分组成。其中,标签的值为(n<<3)|2(遵循Grpc标签规范),字段长度为数据签名的字节大小。
同时需要改造客户端软件开发工具包。在客户端软件开发工具包中发送Grpc请求的入口方法中,传递Grpc代理可以识别的节点标志和身份标志,并将它们放入Grpc请求头中。
基于以上改造,区块链客户端在生成Grpc请求时,会包括存放节点标志和身份标志的对应位置;然后将节点标志和身份标志分别写入对应的位置。例如,请求头中的数据可以以key-value的形式存在,即请求头中可以包括节点标志字段和身份标志字段,然后将节点标志和身份标志作为对应字段的值写入请求头中。
S203,根据所述身份标志,对所述Grpc请求的请求体进行加密,得到所述Grpc请求的数据签名。
本实施例中,数据签名可以用来检测Grpc请求是否被篡改。具体地,可以按照预设的加密方式结合身份标志对请求体进行加密,得到数据签名。
该预设加密方式可以由区块链客户端和代理服务器事先约定。代理服务器在接收到Grpc请求后采用相同的加密方式获得待验证签名,将待验证签名预设数据签名进行对比,从而对Grpc请求进行身份验证。
具体地,区块链客户端向目标区块链节点发送数据通信的Grpc请求时,可以确定Grpc请求对应的身份标志;根据身份标志,对Grpc请求的请求体进行加密,得到Grpc请求的数据签名。
在本申请实施例中,区块链客户端和代理服务器均可以采用不可逆算法对请求体进行加密,得到数据签名。不可逆算法具体可以包括MD5算法、SHS算法等。
比如,区块链客户端可以将身份标志和请求体共同进行MD5加密得到数据签名;代理服务器将同样的身份标志和请求体共同进行MD5加密得到待验证签名。这样的数据签名和待验证签名才是相同的。若代理服务在获得待验证签名时,采用的身份标志不同或者请求体不同,获得的待验证签名均与数据签名不同。
S204,将所述数据签名写入所述请求体中。
由于Grpc请求一定有请求体,不一定有请求头,为了对每个请求进行验证,可以将数据签名写入请求体中。比如,可以将数据签名写入请求体的一个预设字段中。本申请实施例中,由于对请求体中增加了存放数据签名的信息字段,故该预设字段可以为上述信息字段。
S205,将所述Grpc请求发送至Grpc代理服务器,所述Grpc代理服务器用于将所述Grpc请求转发至所述目标区块链节点。
具体地,区块链客户端生成Grpc请求后,可以将该Grpc请求发送至Grpc代理服务器,Grpc代理服务器接收到Grpc请求后,可以根据首个Grpc请求建立区块链客户端和目标区块链节点之间的通信连接。通过该通信连接,区块链客户端可以不断地向目标区块链节点发送Grpc请求。当区块链客户端结束此次数据通信时,可以断开该通信连接,从而释放掉区块链客户端和目标区块链节点之间的通信连接。
在本实施例中,通过在请求头中增加身份标志和节点标志,使得代理服务器能够根据节点标志确定目标区块链节点;还可以通过身份标志实现区块链业务中Grpc代理的身份验证,保障了数据通信的安全性。
需要说明的是,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
参照图3,示出了本申请一个实施例提供的再一种区块链客户端的数据通信方法的流程示意图。如图3所示,区块链客户端中包括客户端SDK,区块链客户端可以发送Grpc请求给Grpc代理;Grpc代理可以将接收来自区块链客户端的Grpc请求,并转发该Grpc请求至对应的区块链。区块链可以针对Grpc请求向Grpc代理返回结果,Grpc代理可以接收来自区块链的返回结果,并将返回结果发送至对应的区块链客户端。
若用户user1向区块链节点node1发送Grpc请求为例对本实施例中的方法进行说明如下:
首先改造Grpc源码:假设用户具有身份标志user1,区块链客户端发送的Grpc请求体为{"name":"a"},将该请求体和身份标志采用MD5加密算法加密,得到数据签名94F80D6FB486CC1FD846666219E07E49。占用请求体中的第1个string类型的字段,作为信息字段。该信息字段的标签值为(1<<3)|2=10,字段长度为数据签名的字节大小为128,所以该信息字段最终为:
10 128 94F80D6FB486CC1FD846666219E07E49
然后改造客户端SDK:假设用户需要访问区块链节点node1,该节点的节点标志为node1。使用Hyperledger Fabric提供的Java语言的SDK,在其发送Grpc请求的入口方法HFClient.newPeer、HFClient.newEventHub和HFClient.newOrderer中,传递Grpc代理可以识别的节点标志node1和身份标志user1,并将它们放入Grpc请求头中,即请求头包含Node-ID=node1,User-ID=user1。
区块链客户端可以将生成的Grpc请求发送至代理服务器。
代理服务器根据Grpc接口,实现自定义的Grpc代理服务:
从Grpc请求头Node-ID=node1,User-ID=user1中获取节点标志node1和身份标志user1,从而识别出请求的目标节点为node1。
从Grpc请求体中截取出信息字段,获取数据签名94F80D6FB486CC1FD846666219E07E49,并根据身份标志user1,对请求体数据{"name":"a"}进行验签。
如果Grpc请求需要证书,加载对应证书。假设该Hyperledger Fabric区块链节点node1使用了服务端证书service.cert,则在Grpc代理中加载该证书。
将Grpc请求转发到目标节点node1,并将结果返回给区块链客户端。
参照图4,示出了本申请一个实施例提供的一种区块链客户端的数据通信装置的示意图,具体可以包括接收模块41、第一获取模块42、第二获取模块43、身份验证模块44、连接建立模块45和转发模块46,其中:
接收模块41,用于接收来自区块链客户端的Grpc请求;
第一获取模块42,用于若所述Grpc请求包括请求头,则从所述请求头中获取所述Grpc请求的节点标志和身份标志;
第二获取模块43,用于从所述Grpc请求的请求体中获取所述Grpc请求的数据签名,所述数据签名为所述区块链客户端根据所述身份标志对所述请求体进行加密得到;
身份验证模块44,用于根据所述数据签名和所述身份标志,对所述Grpc请求进行身份验证;
连接建立模块45,用于若所述Grpc请求通过身份验证,则根据所述节点标志,建立所述区块链客户端与对应的目标区块链节点之间的通信连接;
转发模块46,用于通过所述通信连接将所述Grpc请求转发至所述目标区块链节点。
在一种可能的实现方式中,上述身份验证模块44包括:
生成子模块,用于根据所述身份标志,对所述请求体进行加密,生成所述Grpc请求的待验证签名;
判断子模块,用于若所述待验证签名与所述数据签名相同,则确定所述Grpc请求通过身份验证。
在一种可能的实现方式中,上述装置还包括:
通信连接确定模块,用于若所述Grpc请求不包括请求头,则确定所述Grpc请求对应的通信连接;
身份标志确定模块,用于根据所述通信连接,确定所述Grpc请求的身份标志。
在一种可能的实现方式中,上述装置还包括:
返回结果接收模块,用于接收所述目标区块链节点针对所述Grpc请求的返回结果;
返回结果转发模块,用于通过所述通信连接将所述返回结果转发至所述区块链客户端。
参照图5,示出了本申请一个实施例提供的另一种区块链客户端的数据通信装置的示意图,具体可以包括确定模块51、第一写入模块52、加密模块53、第二写入模块54和发送模块55,其中:
确定模块51,用于当向目标区块链节点发送数据通信的首个Grpc请求时,确定所述Grpc请求的节点标志和身份标志,所述节点标志用于表征所述目标区块链节点;
第一写入模块52,用于将所述节点标志和所述身份标志写入所述Grpc请求的请求头中;
加密模块53,用于根据所述身份标志,对所述Grpc请求的请求体进行加密,得到所述Grpc请求的数据签名;
第二写入模块54,用于将所述数据签名写入所述请求体中;
发送模块55,用于将所述Grpc请求发送至Grpc代理服务器,所述Grpc代理服务器用于将所述Grpc请求转发至所述目标区块链节点。
在一种可能的实现方式中,上述装置还包括:
身份标志确定模块,用于当向目标区块链节点发送数据通信的非首个Grpc请求时,确定所述Grpc请求对应的身份标志;
非首个Grpc请求加密模块,用于根据所述身份标志,对所述Grpc请求的请求体进行加密,得到所述Grpc请求的数据签名;
第三写入模块,用于将所述数据签名写入所述请求体的预设字段中,所述数据签名用于对所述Grpc请求进行身份验证。
在一种可能的实现方式中,上述装置还包括:
返回结果接收模块,用于接收来自所述Grpc代理服务器的返回结果;
连接释放模块,用于若所述Grpc代理服务器完成与所述目标区块链节点之间的数据通信,则释放所述区块链客户端与所述目标区块链节点之间的通信连接。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述得比较简单,相关之处参见方法实施例部分的说明即可。
图6为本申请一实施例提供的一种服务器的结构示意图。如图6所示,该实施例的服务器6包括:至少一个处理器60(图6中仅示出一个)处理器、存储器61以及存储在所述存储器61中并可在所述至少一个处理器60上运行的计算机程序62,所述处理器60执行所述计算机程序62时实现上述任意各个方法实施例中的步骤。
所述服务器6可以是云端服务器等计算设备。该服务器可包括,但不仅限于,处理器60、存储器61。本领域技术人员可以理解,图6仅仅是服务器6的举例,并不构成对服务器6的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如还可以包括输入输出设备、网络接入设备等。
所称处理器60可以是中央处理单元(Central Processing Unit,CPU),该处理器60还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述存储器61在一些实施例中可以是所述服务器6的内部存储单元,例如服务器6的硬盘或内存。所述存储器61在另一些实施例中也可以是所述服务器6的外部存储设备,例如所述服务器6上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,所述存储器61还可以既包括所述服务器6的内部存储单元也包括外部存储设备。所述存储器61用于存储操作***、应用程序、引导装载程序(BootLoader)、数据以及其他程序等,例如所述计算机程序的程序代码等。所述存储器61还可以用于暂时地存储已经输出或者将要输出的数据。
本申请实施例还提供了一种终端设备,该终端设备包括:至少一个处理器、存储器以及存储在所述存储器中并可在所述至少一个处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述方法实施例中应用于区块链客户端的一种区块链客户端的数据通信方法的步骤。
本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现可实现上述各个方法实施例中的应用于代理服务器的一种区块链客户端的数据通信方法的步骤。
本申请实施例还提供了另一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现可实现上述各个方法实施例中的应用于区块链客户端的一种区块链客户端的数据通信方法的步骤。
本申请实施例提供了一种计算机程序产品,当计算机程序产品在终端设备上运行时,使得终端设备执行时实现可实现上述各个方法实施例中应用于区块链客户端的一种代理服务器的数据通信方法的步骤。
本申请实施例提供了另一种计算机程序产品,当计算机程序产品在终端设备上运行时,使得终端设备执行时实现可实现上述各个方法实施例中应用于区块链客户端的一种区块链客户端的数据通信方法的步骤。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质至少可以包括:能够将计算机程序代码携带到拍照装置/终端设备的任何实体或装置、记录介质、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、电载波信号、电信信号以及软件分发介质。例如U盘、移动硬盘、磁碟或者光盘等。在某些司法管辖区,根据立法和专利实践,计算机可读介质不可以是电载波信号和电信信号。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的实施例中,应该理解到,所揭露的装置/终端设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/终端设备实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
以上所述实施例仅用以说明本申请的技术方案,而非对其限制。尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。
Claims (9)
1.一种区块链客户端的数据通信方法,其特征在于,应用于Grpc代理服务器,所述方法包括:
接收来自区块链客户端的Grpc请求;
若所述Grpc请求包括请求头,则从所述请求头中获取所述Grpc请求的节点标志和身份标志;
从所述Grpc请求的请求体中获取所述Grpc请求的数据签名,所述数据签名为所述区块链客户端根据所述身份标志对所述请求体进行加密得到;
根据所述数据签名和所述身份标志,对所述Grpc请求进行身份验证;
若所述Grpc请求通过身份验证,则根据所述节点标志,建立所述区块链客户端与对应的目标区块链节点之间的通信连接;
通过所述通信连接将所述Grpc请求转发至所述目标区块链节点;
其中,所述根据所述数据签名和所述身份标志,对所述Grpc请求进行身份验证,包括:
根据所述身份标志,对所述请求体进行加密,生成所述Grpc请求的待验证签名;
若所述待验证签名与所述数据签名相同,则确定所述Grpc请求通过身份验证。
2.如权利要求1所述的方法,其特征在于,在所述从所述Grpc请求的请求体中获取所述Grpc请求的数据签名之前,所述方法还包括:
若所述Grpc请求不包括请求头,则确定所述Grpc请求对应的通信连接;
根据所述通信连接,确定所述Grpc请求的身份标志。
3.如权利要求1或2所述的方法,其特征在于,所述方法还包括:
接收所述目标区块链节点针对所述Grpc请求的返回结果;
通过所述通信连接将所述返回结果转发至所述区块链客户端。
4.一种区块链客户端的数据通信方法,其特征在于,应用于区块链客户端,所述方法包括:
当向目标区块链节点发送数据通信的首个Grpc请求时,确定所述Grpc请求的节点标志和身份标志,所述节点标志用于表征所述目标区块链节点;
将所述节点标志和所述身份标志写入所述Grpc请求的请求头中;
根据所述身份标志,对所述Grpc请求的请求体进行加密,得到所述Grpc请求的数据签名;
将所述数据签名写入所述请求体中;
将所述Grpc请求发送至Grpc代理服务器,所述Grpc代理服务器用于将所述Grpc请求转发至所述目标区块链节点;
其中,所述Grpc代理服务器具体用于:
根据所述身份标志,对所述请求体进行加密,生成所述Grpc请求的待验证签名;
若所述待验证签名与所述数据签名相同,则确定所述Grpc请求通过身份验证;
若所述Grpc请求通过身份验证,则根据所述节点标志,建立所述区块链客户端与对应的目标区块链节点之间的通信连接;
通过所述通信连接将所述Grpc请求转发至所述目标区块链节点。
5.如权利要求4所述的方法,其特征在于,所述方法还包括:
当向目标区块链节点发送数据通信的非首个Grpc请求时,确定所述Grpc请求对应的身份标志;
根据所述身份标志,对所述Grpc请求的请求体进行加密,得到所述Grpc请求的数据签名;
将所述数据签名写入所述请求体的预设字段中,所述数据签名用于对所述Grpc请求进行身份验证。
6.如权利要求4所述的方法,其特征在于,所述方法还包括:
接收来自所述Grpc代理服务器的返回结果;
若所述Grpc代理服务器完成与所述目标区块链节点之间的数据通信,则释放所述区块链客户端与所述目标区块链节点之间的通信连接。
7.一种区块链客户端的数据通信装置,其特征在于,应用于Grpc代理服务器,所述装置包括:
接收模块,用于接收来自区块链客户端的Grpc请求;
第一获取模块,用于若所述Grpc请求包括请求头,则从所述请求头中获取所述Grpc请求的节点标志和身份标志;
第二获取模块,用于从所述Grpc请求的请求体中获取所述Grpc请求的数据签名,所述数据签名为所述区块链客户端根据所述身份标志对所述请求体进行加密得到;
身份验证模块,用于根据所述数据签名和所述身份标志,对所述Grpc请求进行身份验证;
连接建立模块,用于若所述Grpc请求通过身份验证,则根据所述节点标志,建立所述区块链客户端与对应的目标区块链节点之间的通信连接;
转发模块,用于通过所述通信连接将所述Grpc请求转发至所述目标区块链节点;
其中,所述身份验证模块具体用于执行:
根据所述身份标志,对所述请求体进行加密,生成所述Grpc请求的待验证签名;
若所述待验证签名与所述数据签名相同,则确定所述Grpc请求通过身份验证。
8.一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1-3或权利要求4-6任一项所述的方法。
9.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-3或权利要求4-6任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111589913.8A CN114338795B (zh) | 2021-12-23 | 2021-12-23 | 一种区块链客户端的数据通信方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111589913.8A CN114338795B (zh) | 2021-12-23 | 2021-12-23 | 一种区块链客户端的数据通信方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114338795A CN114338795A (zh) | 2022-04-12 |
CN114338795B true CN114338795B (zh) | 2024-06-14 |
Family
ID=81055063
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111589913.8A Active CN114338795B (zh) | 2021-12-23 | 2021-12-23 | 一种区块链客户端的数据通信方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114338795B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115243080B (zh) * | 2022-09-21 | 2022-12-20 | 腾讯科技(深圳)有限公司 | 一种数据处理方法、装置、设备及存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU2019204712B2 (en) * | 2019-03-29 | 2020-08-13 | Advanced New Technologies Co., Ltd. | Managing sensitive data elements in a blockchain network |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106650344B (zh) * | 2016-12-07 | 2019-05-31 | 清华大学 | 一种基于区块链的有第三方认证的数据存储方法 |
CN108076063A (zh) * | 2017-12-25 | 2018-05-25 | 天津理工大学 | 基于区块链的网络运维审计方法、服务器终端及客户端 |
CN109727032A (zh) * | 2018-12-29 | 2019-05-07 | 杭州趣链科技有限公司 | 一种基于身份标识密码的联盟区块链访问控制方法 |
KR102116235B1 (ko) * | 2019-03-15 | 2020-05-28 | 주식회사 코인플러그 | 블록체인 네트워크를 이용하여 사용자의 아이덴티티를 관리하는 방법 및 서버, 그리고, 블록체인 네트워크 기반의 사용자 아이덴티티를 이용하여 사용자를 인증하는 방법 및 단말 |
CN112398798B (zh) * | 2019-08-19 | 2022-10-14 | ***通信有限公司研究院 | 一种网络电话处理方法、装置及终端 |
CN110661812A (zh) * | 2019-10-10 | 2020-01-07 | 国网山东省电力公司信息通信公司 | 一种基于区块链的级联认证*** |
CN110958229A (zh) * | 2019-11-20 | 2020-04-03 | 南京理工大学 | 一种基于区块链的可信身份认证方法 |
CN111277577B (zh) * | 2020-01-14 | 2022-06-07 | 北京百度网讯科技有限公司 | 数字身份验证方法、装置、设备和存储介质 |
CN111815321A (zh) * | 2020-05-21 | 2020-10-23 | 北京金山云网络技术有限公司 | 交易提案的处理方法、装置、***、存储介质和电子装置 |
-
2021
- 2021-12-23 CN CN202111589913.8A patent/CN114338795B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU2019204712B2 (en) * | 2019-03-29 | 2020-08-13 | Advanced New Technologies Co., Ltd. | Managing sensitive data elements in a blockchain network |
Non-Patent Citations (1)
Title |
---|
基于SSL的HTTP安全日志;曹岗, 李***, 黄庆怀;计算机工程与应用(第24期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN114338795A (zh) | 2022-04-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110995759A (zh) | 物联网的接入方法以及装置 | |
CN112948802B (zh) | 单点登录方法、装置、设备及存储介质 | |
CN109981680B (zh) | 一种访问控制实现方法、装置、计算机设备及存储介质 | |
CN108769743B (zh) | 一种视频播放控制方法、***、节点和计算机存储介质 | |
CN110096894B (zh) | 一种基于区块链的数据匿名共享***及方法 | |
CN114710351A (zh) | 用于在通信过程中改进数据安全性的方法和*** | |
CN110381075B (zh) | 基于区块链的设备身份认证方法和装置 | |
CN111880919A (zh) | 数据调度方法、***和计算机设备 | |
CN114338795B (zh) | 一种区块链客户端的数据通信方法及装置 | |
CN112632573A (zh) | 智能合约执行方法、装置、***、存储介质及电子设备 | |
CN111901287A (zh) | 一种为轻应用提供加密信息的方法、装置和智能设备 | |
US11227032B1 (en) | Dynamic posture assessment to mitigate reverse engineering | |
CN110602051B (zh) | 基于共识协议的信息处理方法及相关装置 | |
CN115982247B (zh) | 基于区块链的账户信息查询方法和装置、设备和介质 | |
CN110620776B (zh) | 一种数据转移信息传输方法及其装置 | |
CN114616563A (zh) | 用于加密密钥生成的安全环境 | |
CN114338036A (zh) | 一种区块链客户端的数据通信方法及装置 | |
CN109995534B (zh) | 一种对应用程序进行安全认证的方法和装置 | |
US20230351028A1 (en) | Secure element enforcing a security policy for device peripherals | |
CN114172923B (zh) | 数据传输方法、通信***及通信装置 | |
CN113098685B (zh) | 一种基于云计算的安全验证方法、装置及电子设备 | |
CN115549984A (zh) | 跨链交易方法、装置、设备和存储介质 | |
CN112511565B (zh) | 请求响应方法、装置、计算机可读存储介质及电子设备 | |
CN110995756B (zh) | 调用服务的方法和装置 | |
CN114168909A (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 |