掌桥专利:专业的专利平台
掌桥专利
首页

一种请求消息处理方法及装置

文献发布时间:2023-06-19 10:57:17


一种请求消息处理方法及装置

技术领域

本申请涉及区块链技术领域,尤其涉及一种请求消息处理方法及装置。

背景技术

在基于区块链技术的虚拟货币交易过程中,为了确保交易的合法性与安全性,可对交易请求消息进行背书签名。即通过特定的背书节点,对发起节点发出的请求消息进行签名认证,从而批准交易的产生。

通常,背书节点的数量可以是多个。而针对具体的某一笔交易,往往仅需要一个或一部分背书节点进行背书签名。当一个请求消息需经由一定数量的背书节点进行背书签名,方可认为签名认证成功,进而实现后续交易。一些情况下,上述的背书签名方式可能影响交易过程的效率。

发明内容

本申请提供一种请求消息处理方法及装置。

第一方面,本申请提供一种请求消息处理方法,所述方法应用于区块链网络中的第一背书节点,包括:

接收请求消息,根据所述请求消息确定第一签名信息;

接收至少一个第二背书节点根据所述请求消息确定的第二签名信息,对各所述第二背书节点对应的第二签名信息进行验证;

当通过验证的所述第二签名信息的数量满足预设的门限阈值,根据所述第一签名信息和各通过验证的所述第二签名信息,确定第三签名信息。

优选的,所述根据所述请求消息确定第一签名信息包括:

确定签名数据;

根据所述签名数据和所述请求消息,确定所述第一签名信息。

优选的,所述接收至少一个第二背书节点根据所述请求消息确定的第二签名信息包括:

接收各所述第二背书节点广播发送的所述第二签名信息和所述第二背书节点的承诺信息。

优选的,所述对各所述第二背书节点对应的第二签名信息进行验证包括:

根据所述第二背书节点的承诺信息,确定所述第二签名信息中的验证数值是否有效;

当所述第二签名信息中的验证数值有效,确定所述第二签名信息通过验证。

优选的,所述对各所述第二背书节点对应的第二签名信息进行验证包括:

根据所述区块链网络中的配置表,确定所述第二背书节点的节点信息是否有效;

当所述第二背书节点的节点信息有效,确定所述第二背书节点对应的第二签名信息通过验证。

优选的,所述当通过验证的所述第二签名信息的数量满足预设的门限阈值,根据所述第一签名信息和各通过验证的所述第二签名信息,确定第三签名信息包括:

根据所述区块链网络中的配置表,确定所述门限阈值;

当通过验证的所述第二签名信息的数量满足预设的门限阈值,根据所述第一签名信息、各通过验证的所述第二签名信息、以及所述第一背书节点和各所述第二背书节点的公钥,确定所述第三签名信息。

优选的,所述根据所述第一签名信息、各通过验证的所述第二签名信息、以及所述第一背书节点和各所述第二背书节点的公钥,确定所述第三签名信息包括:

根据所述第一签名信息、各通过验证的所述第二签名信息、所述第一背书节点和各所述第二背书节点的公钥、以及第三背书节点的公钥,确定所述第三签名信息。

优选的,确定第一签名信息之前还包括:

获取签名数据,根据所述签名数据确定第一背书节点对应的节点信息;

将所述节点信息储存至所述区块链网络的配置表中。

优选的,所述区块链网络的配置表包括:

根据所述第一背书节点对应的节点信息、所述第二背书节点对应的节点信息、和预先设定的配置参数;

所述配置参数包括,所述门限阈值。

第二方面,本申请提供一种请求消息处理装置,包括:

第一签名信息确定模块,用于接收请求消息,根据所述请求消息确定第一签名信息;

第二签名信息验证模块,用于接收至少一个第二背书节点根据所述请求消息确定的第二签名信息,对各所述第二背书节点对应的第二签名信息进行验证;

第三签名信息确定模块,用于在通过验证的所述第二签名信息的数量满足预设的门限阈值时,根据所述第一签名信息和各通过验证的所述第二签名信息,确定第三签名信息。

与相关技术相比,本申请提供的一种请求消息处理方法及装置,提供了一种全新的背书签名方式。

附图说明

图1示出了本申请一实施例所述的一种请求消息处理方法的流程示意图;

图2示出了本申请另一实施例所述的一种请求消息处理方法的流程示意图;

图3示出了本申请另一实施例所述的一种请求消息处理方法的流程示意图;

图4示出了本申请一实施例所述的一种请求消息处理装置的流程示意图。

具体实施方式

为使本申请的目的、特征、优点能够更加的明显和易懂,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而非全部实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

在虚拟货币的交易系统涉及的区块链网络中,背书节点的本质可以是区块链网络的特定“成员”,其数量可以是多个。背书节点可对发起节点发出的请求消息进行签名认证,从而批准交易的产生。针对具体的某一笔交易,可能仅需要一个或一部分背书节点进行背书签名。

在一些情况下,需由多个背书节点对请求消息进行签名认证。假设在交易系统中设定,一个请求消息需经由m个背书节点进行背书签名,方可实现后续交易。则在相关技术中,需要区块链网络中任意的m个背书节点分别对请求消息进行背书签名,并将签名后得到的签名信息返回到发起节点。当发起节点收到m个签名信息之后,即可认为签名认证成功,进而完成虚拟货币的交易。

在上述的背书签名方案中,发起节点必须等待直到接收到m个签名信息,才可认为签名认证成功。而实际情况下不同背书节点的算力有所区别,所以部分算力较低的背书节点需要较长的运算时间,方可返回签名信息。这导致了一些情况下,发起节点的等待时间较长,交易出现延迟,实时性不理想。并且上述方案中,各个背书节点分别将自身得到的签名信息返回发起节点,不利于保护背书节点的身份,无法满足要求背书节点匿名的场景需求。

因此,本申请实施例将提供一种请求消息处理方法。如图1所示,本实施例中方法应用于区块链网络中的第一背书节点。该第一背书节点,可以是区块链网络中的任一背书节点。所述方法包括以下步骤:

步骤101、接收请求消息,根据请求消息确定第一签名信息。

当区块链网络中的发起节点需要发起交易时,将会生成相应的请求消息。第一背书节点接收该请求消息之后,将会对于该请求消息进行背书签名,也就是根据请求消息确定第一签名信息。第一签名信息,即为第一背书节点对于该请求消息背书签名后得到的结果。

需要说明的是,在确定第一签名信息之前,第一背书节点还需从区块链网络中获取签名数据。具体可以是,从区块链网络的证书颁发机构中获取签名数据。该签名数据可以包括第一背书节点的数字证书、公钥、私钥、签名参数等与背书签名有关的各类数据。

进一步的,还可根据签名数据确定第一背书节点对应的节点信息;将节点信息储存至区块链网络的配置表中。该节点信息,可用于表明第一背书节点的身份。也可认为,区块链网络中各背书节点(包括第一背书节点,和第一背书节点之外的其他背书节点)均可按照上述方式确定对应的节点信息,并储存至该配置表中。即配置表中包括各背书节点的节点信息,可用于对背书节点进行管理和身份认证。

另外,配置表中还可包括预先设定的配置参数,该配置参数主要是对于进行背书签名的背书节点数量设置的门限阈值。也就是说,如果对于该请求消息进行背书签名的背书节点数量满足门限阈值,可认为签名认证成功。本实施例中涉及的第一背书节点,可以是其中任意一个对请求消息进行背书签名的背书节点。

确定签名数据后;根据签名数据和请求消息,确定第一签名信息。在本实施例中,确定第一签名信息可采用本领域中的环签名技术。也就是基于环签名算法,对签名数据和请求消息进行特定的运算,以确定第一签名信息。本实施例中对于环签名算法的种类不做限定,本领域中任何同类算法均可结合在本实施例整体技术方案中。例如,可以选择基本的ring-sign环签名算法、使用不同签名方案产生的公钥来构造1-out-of-n签名算法、或者基于身份的密码体制和双线性对用于构造基于身份的环签名等。

步骤102、接收至少一个第二背书节点根据请求消息确定的第二签名信息,对各第二背书节点对应的第二签名信息进行验证。

第二背书节点,是指除第一背书节点之外,其他参与背书签名的背书节点。第二背书节点对同一请求消息进行背书签名,可确定第二签名信息。确定第二签名信息与确定第一背书签名原理一致,在此不重复叙述。

第二背书节点确定了第二签名信息之后,可通过特定的广播协议将第二签名信息广播发送,以使其他背书节点获得该第二签名信息。第一背书节点接收到第二签名信息之后,便会对第二签名信息进行验证,以判断第二签名信息是否有效。若第二签名信息有效,则可认为第二签名信息通过验证。

具体的,可验证第二签名信息的验证数值是否正确、验证第二签名信息的数据格式和内容是否符合标准、或通过第二签名信息验证第二背书节点的身份是否合法。本实施例中验证的具体方式不做限定,本领域中相关的验证手段均可结合在本实施例整体技术方案中。

需要说明的是,本实施例中第二背书节点的数量为至少一个,通常情况下为多个。一般每个第二背书节点会确定出一个对应的第二签名信息,供第一背书节点进行验证。

步骤103、当通过验证的第二签名信息的数量满足预设的门限阈值,根据第一签名信息和各通过验证的第二签名信息,确定第三签名信息。

上述已知,门限阈值是有关进行背书签名的背书节点的数量限值。也就是,当对于该请求消息进行背书签名的背书节点数量达到一定数量,才可认为签名认证成功。

假设通过配置表设定,进行背书签名的背书节点数量至少为m个(m为大于1的正整数),则门限阈值可以是m-1。也就是,当通过验证的第二签名信息的数量达到m-1个时,加之第一背书节点进行背书签名得到的第一签名信息,此时恰好有m个背书节点有效的进行了背书签名;也就是,第一背书签名和第二背书签名的数量之和为m个,可认为签名认证成功。

在上述情况下,可根据第一签名信息和各通过验证的第二签名信息,确定第三签名信息。第三签名信息,即是针对请求消息的完整签名信息,也就是本领域中所谓的环签名信息。至此,本实施例中完成了对于请求消息的背书签名。

另外需要说明的是,本实施例中涉及的第一背书节点和第二背书节点,同为区块链网络中的背书节点,二者在本质上并无差别。从区块链网络整体的角度来看,每个参与背书签名的背书节点(包括第一背书节点和第二背书节点)均会在接收请求消息之后,进行签名并得到相应的部分签名信息(包括第一签名信息和第二签名信息);并且均会将该部分签名信息广播发送,供其他背书节点接收。进一步的,每个背书节点均会对其他背书节点的部分签名信息进行验证。

不过由于各个背书节点的算力不同,所以其进行背书签名,并进行验证的效率也不尽相同。其中可能有某一背书节点执行效率较高,致使其在最短的时间内,验证成功的其他背书节点的部分签名信息数量满足了门限阈值。则意味着,该背书节点可率先确定出上述的m个部分签名信息,也就是可率先根据该m个部分签名信息确定出环签名信息(第三签名信息)。此时,该最先得到第三签名信息的背书节点,便可被定义为第一背书节点,而其他参与背书签名的背书节点,则可被定义为第二背书节点。进而,第一背书节点将第三签名信息返回到发起节点,可开启后续的交易流程。

因此可以理解的是,在上述的方法中发起节点得到的第三签名信息往往来自于算力最高的一个背书节点,由此可避免相关技术中低算力的背书节点造成的发起节点等待,和交易延迟的情况产生。同时,第一背书节点已经对于各个部分签名信息进行了验证,对其有效性予以确认;所以发起节点可无需进行再次验证,可进一步的节约交易流程的耗时,交易提高效率。另外,第一背书节点确定的第三签名信息中,包括了多个背书节点得到的部分签名信息,使得发起节点无法追溯各个部分签名信息的具体来源,由此满足了背书节点匿名性的需求。

通过以上技术方案可知,本实施例存在的有益效果是:提供了一种全新的背书签名方式,在一些情况下能够提高交易过程的执行效率。

图1所示仅为本申请所述方法的基础实施例,在其基础上进行一定的优化和拓展,还能够得到所述方法的其他优选实施例。

如图2所示,为本申请所述请求消息处理方法的另一个具体实施例。本实施例在前述实施例的基础上,进行进一步拓展。所述方法具体包括以下步骤:

步骤201、接收请求消息,根据请求消息确定第一签名信息。

上述步骤与图1所示实施例中内容一致,在此不重复叙述。

步骤202、接收各第二背书节点广播发送的第二签名信息和第二背书节点的承诺信息。

本实施例中,第一背书节点除了接收第二签名信息之外,还将接收第二背书节点的承诺信息。第二签名信息和承诺信息,均为第二背书节点通过特定的广播协议广播发送。其中,承诺信息可在后续的验证中予以应用。

理论上来说,第二签名信息中可包括验证数据。该验证数据可以是,通过第二背书节点的签名数据中的签名参数,基于环签名算法计算得到的特定数值。在一些环签名算法中,签名参数可以是随机数。而承诺信息中具体可包括第二签名信息的验证值。该验证值,可认为是验证数据理论上的正确数值。

步骤203、对各第二背书节点对应的第二签名信息进行验证。

本实施例中,可选择根据第二背书节点的承诺信息,确定第二签名信息中的验证数值是否有效。即确定上述承诺信息中的验证值,与第二签名信息中的验证数据是否相等。若二者相等,则意味着第二签名信息的计算过程正确无误,即第二签名信息中的验证数值有效。当第二签名信息中的验证数值有效,可确定第二签名信息通过验证。

另外优选的,还可对于第二背书节点的身份进行验证,以便于进一步的确保第二签名信息的有效性。具体的,可根据区块链网络中的配置表,确定第二背书节点的节点信息是否有效。上述实施例中涉及的配置表,包括了各背书节点的节点信息,可用于对背书节点进行管理和身份认证。所以第一背书节点可通过配置表获取第二背书节点的节点信息,并与第二签名信息中携带的第二背书节点的节点信息进行对照,从而判断第二签名信息中携带的节点信息是否有效,验证第二背书节点的身份是否合法。当第二背书节点的节点信息有效,确定第二背书节点对应的第二签名信息通过验证。

上述的两种验证方式可相结合的应用在本实施例中。即当第二签名信息中的验证数值有效,且第二背书节点的节点信息有效时,方可确定第二背书节点对应的第二签名信息通过验证。但不排除在其他一些情况,可将二者择一进行应用,或进一步结合其他验证方式进行应用。

步骤204、当通过验证的第二签名信息的数量满足预设的门限阈值,根据第一签名信息和各通过验证的第二签名信息,确定第三签名信息。

上述步骤与图1所示实施例中内容一致,在此不重复叙述。

如图3所示,为本申请所述请求消息处理方法的另一个具体实施例。本实施例所述方法具体包括以下步骤:

步骤301、接收请求消息,根据请求消息确定第一签名信息。

步骤302、接收至少一个第二背书节点根据请求消息确定的第二签名信息,对各第二背书节点对应的第二签名信息进行验证。

上述步骤与图1~图2所示实施例中内容一致,在此不重复叙述。

步骤303、根据区块链网络中的配置表,确定门限阈值。

上述实施例中涉及的配置表,包括了对于进行背书签名的背书节点数量设置的门限阈值。本步骤中,即可获取该门限阈值。

步骤304、当通过验证的第二签名信息的数量满足预设的门限阈值,根据第一签名信息、各通过验证的第二签名信息、以及第一背书节点和各第二背书节点的公钥,确定第三签名信息。

本实施例在确定第三签名信息的过程中,可以使第三签名信息进一步的携带第一背书节点和各第二背书节点的公钥。

一些情况下,第一背书节点的公钥可以预先携带于第一签名信息中,同理第二背书节点的公钥可以预先携带于第二签名信息中。此时结合第一签名信息和第二签名信息确定的第三签名信息中,将自然的携带有第一背书节点和各第二背书节点的公钥。

另一些情况下,可能第一背书节点的公钥未曾携带于第一签名信息中,第二背书节点的公钥也未曾携带于第二签名信息中。此时则可根据结合第一签名信息和第二签名信息确定第四签名信息。再进一步的根据第四签名信息以及第一背书节点和各第二背书节点的公钥,确定第三签名信息。

还需说明的是,区块链网络中的背书节点通常存在多个。而在针对一个请求消息进行背书签名的过程中,往往只需要部分背书节点参与。上述的第一背书节点和第二背书节点均为参与此次背书签名的背书节点。则另外还存在部分背书节点未参与此次背书签名。本实施例中可将未参与此次背书签名的背书节点,称为第三背书节点。

所以优选的,还可在确定第三签名信息时,使其额外的携带第三背书节点的公钥。也就是,根据第一签名信息、各通过验证的第二签名信息、第一背书节点和各第二背书节点的公钥、以及第三背书节点的公钥,确定第三签名信息。

在第三签名信息中包括了区块链网络中多个背书节点的公钥时,则发起节点便难以通过第三签名信息判断,究竟哪些背书节点参与了此次背书签名。若第三签名信息中包括了区块链网络中全部背书节点的公钥,此时发起节点通过各类手段试图追溯背书节点身份的难度也相对较大。由此本实施例中方法更加符合背书节点匿名性的需求,能够更加有效的对于背书节点的身份起到保护。

如图4所示,为本申请所述一种请求消息处理装置的一个具体实施例。本实施例装置,即用于执行图1~3所述方法的实体装置。其技术方案本质上与上述实施例一致,上述实施例中的相应描述同样适用于本实施例中。本实施例中装置包括:

第一签名信息确定模块401,用于接收请求消息,根据请求消息确定第一签名信息。

第二签名信息验证模块402,用于接收至少一个第二背书节点根据请求消息确定的第二签名信息,对各第二背书节点对应的第二签名信息进行验证。

第三签名信息确定模块403,用于在通过验证的第二签名信息的数量满足预设的门限阈值时,根据第一签名信息和各通过验证的第二签名信息,确定第三签名信息。

另外在图4所示实施例的基础上,优选的,还包括:

第一签名信息确定模块401包括:

签名数据确定单元411,用于确定签名数据;

第一签名数据确定单元412,用于根据签名数据和请求消息,确定第一签名信息。

第二签名信息验证模块402包括:

接收单元421,用于接收各第二背书节点广播发送的第二签名信息和第二背书节点的承诺信息。

第一验证单元422,用于根据第二背书节点的承诺信息,确定第二签名信息中的验证数值是否有效;在第二签名信息中的验证数值有效时,确定第二签名信息通过验证。

第二验证单元423,用于根据区块链网络中的配置表,确定第二背书节点的节点信息是否有效;在第二背书节点的节点信息有效时,确定第二背书节点对应的第二签名信息通过验证。

第三签名信息确定模块403包括:

门限阈值确定单元431,用于根据区块链网络中的配置表,确定门限阈值;

第三签名信息确定单元432,用于在通过验证的第二签名信息的数量满足预设的门限阈值时,根据第一签名信息、各通过验证的第二签名信息、第一背书节点和各第二背书节点的公钥、以及第三背书节点的公钥,确定第三签名信息。

还包括:

配置模块404,用于获取签名数据,根据签名数据确定第一背书节点对应的节点信息;将节点信息储存至区块链网络的配置表中。区块链网络的配置表包括:根据第一背书节点对应的节点信息、第二背书节点对应的节点信息、和预先设定的配置参数;配置参数包括,门限阈值。

除了上述方法和设备以外,本申请的实施例还可以是计算机程序产品,其包括计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述“示例性方法”部分中描述的根据本申请各种实施例的方法中的步骤。

所述计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本申请实施例操作的程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如Java、C++等,还包括常规的过程式程序设计语言,诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。

此外,本申请的实施例还可以是计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述“示例性方法”部分中描述的根据本申请各种实施例的方法中的步骤。

所述计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。

以上结合具体实施例描述了本申请的基本原理,但是,需要指出的是,在本申请中提及的优点、优势、效果等仅是示例而非限制,不能认为这些优点、优势、效果等是本申请的各个实施例必须具备的。另外,上述公开的具体细节仅是为了示例的作用和便于理解的作用,而非限制,上述细节并不限制本申请为必须采用上述具体的细节来实现。

本申请中涉及的器件、装置、设备、系统的方框图仅作为例示性的例子并且不意图要求或暗示必须按照方框图示出的方式进行连接、布置、配置。如本领域技术人员将认识到的,可以按任意方式连接、布置、配置这些器件、装置、设备、系统。诸如“包括”、“包含”、“具有”等等的词语是开放性词汇,指“包括但不限于”,且可与其互换使用。这里所使用的词汇“或”和“和”指词汇“和/或”,且可与其互换使用,除非上下文明确指示不是如此。这里所使用的词汇“诸如”指词组“如但不限于”,且可与其互换使用。

还需要指出的是,在本申请的装置、设备和方法中,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本申请的等效方案。

提供所公开的方面的以上描述以使本领域的任何技术人员能够做出或者使用本申请。对这些方面的各种修改对于本领域技术人员而言是非常显而易见的,并且在此定义的一般原理可以应用于其他方面而不脱离本申请的范围。因此,本申请不意图被限制到在此示出的方面,而是按照与在此公开的原理和新颖的特征一致的最宽范围。

为了例示和描述的目的已经给出了以上描述。此外,此描述不意图将本申请的实施例限制到在此公开的形式。尽管以上已经讨论了多个示例方面和实施例,但是本领域技术人员将认识到其某些变型、修改、改变、添加和子组合。

相关技术
  • 请求消息和响应消息的处理方法、装置、设备和介质
  • 一种睡眠请求消息或响应消息的处理方法
技术分类

06120112739272