用于推送信息的方法和装置与流程

文档序号:16276873发布日期:2018-12-14 22:38阅读:163来源:国知局
用于推送信息的方法和装置与流程

本申请实施例涉及计算机技术领域,具体涉及用于推送信息的方法和装置。

背景技术

在目前的许多区块链应用系统中,当有特定事件(例如区块生成)发生时,通常会将该事件的相关信息广播至与区块链应用系统通信连接的所有客户端。由于区块链应用系统的网络连接一般较复杂,所连接的客户端数量庞大,因此,对于区块链应用系统的信息传输方法或机制的研究是区块链应用系统的一个研究和不断发展地方向。



技术实现要素:

本申请实施例提出了用于推送信息的方法和装置。

第一方面,本申请实施例提供了一种用于推送信息的方法,该方法包括:接收客户端发送的交易信息,其中,交易信息包括用于标识客户端所属的客户端组的标识符;基于交易信息,生成区块;基于区块的区块信息,生成广播信息,其中,广播信息包括标识符;获取客户端组包括的客户端的连接地址;向连接地址推送广播信息。

在一些实施例中,该方法还包括:对于客户端组中的客户端,定时向该客户端发送反向心跳信息;响应于在预定时间范围内没有接收到该客户端返回的对应于反向心跳信息的响应信息,从客户端组中删除该客户端。

在一些实施例中,该方法还包括:接收目标客户端发送的心跳信息;响应于确定在客户端组中不存在目标客户端,在客户端组中添加目标客户端。

在一些实施例中,在接收客户端发送的交易信息之前,还包括:接收客户端发送的交易提案,其中,交易提案包括标识符,交易编号,链码信息,提案签名信息和提案公钥信息;响应于验证标识符存在,并且验证交易编号不存在,基于提案公钥信息,验证提案签名信息是否正确;响应于验证正确,基于链码信息,生成链码操作结果;基于交易提案和链码操作结果,生成提案结果,其中,提案结果包括提案结果签名信息和提案结果公钥信息;向客户端返回提案结果。

在一些实施例中,交易信息还包括交易签名信息和交易公钥信息;以及基于交易信息,生成区块,包括:基于交易公钥信息,验证交易签名信息是否正确;响应于验证正确,基于预设的结块规则,生成区块。

在一些实施例中,区块信息包括交易信息、区块的区块高度和区块的前置哈希值;以及在基于交易信息,生成区块之后,还包括:基于标识符和区块高度,获取区块的上个区块的哈希值;响应于确定前置哈希值和上个区块的哈希值相同,在本地账本中存储区块信息。

在一些实施例中,区块信息还包括:区块的区块生成时间,区块的哈希值。

第二方面,本申请实施例提供了一种用于推送信息的装置,该装置包括:接收单元,被配置成接收客户端发送的交易信息,其中,交易信息包括用于标识客户端所属的客户端组的标识符;区块生成单元,被配置成基于交易信息,生成区块;广播信息生成单元,被配置成基于区块的区块信息,生成广播信息,其中,广播信息包括标识符;连接地址获取单元,被配置成获取客户端组包括的客户端的连接地址;推送单元,被配置成向连接地址推送广播信息。

在一些实施例中,该装置还包括:反向心跳信息发送单元,被配置成对于客户端组中的客户端,定时向该客户端发送反向心跳信息;删除单元,被配置成响应于在预定时间范围内没有接收到该客户端返回的对应于反向心跳信息的响应信息,从客户端组中删除该客户端。

在一些实施例中,该装置还包括:心跳信息接收单元,被配置成接收目标客户端发送的心跳信息;添加单元,被配置成响应于确定在客户端组中不存在目标客户端,在客户端组中添加目标客户端。

在一些实施例中,该装置还包括:交易提案接收单元,被配置成接收客户端发送的交易提案,其中,交易提案包括标识符,交易编号,链码信息,提案签名信息和提案公钥信息;验证单元,被配置成响应于验证标识符存在,并且验证交易编号不存在,基于提案公钥信息,验证提案签名信息是否正确;提案结果返回单元,被配置成响应于验证正确,基于链码信息,生成链码操作结果;基于交易提案和链码操作结果,生成提案结果,其中,提案结果包括提案结果签名信息和提案结果公钥信息;向客户端返回提案结果。

在一些实施例中,交易信息还包括交易签名信息和交易公钥信息;以及区块生成单元进一步被配置成:基于交易公钥信息,验证交易签名信息是否正确;响应于验证正确,基于预设的结块规则,生成区块。

在一些实施例中,区块信息包括交易信息、区块的区块高度和区块的前置哈希值;以及装置还包括:哈希值获取单元,被配置成基于标识符和区块高度,获取区块的上个区块的哈希值;存储单元,被配置成响应于确定前置哈希值和上个区块的哈希值相同,在本地账本中存储区块信息。

在一些实施例中,区块信息还包括:区块的区块生成时间,区块的哈希值。

第三方面,本申请实施例提供了一种电子设备,该电子设备包括:一个或多个处理器;存储装置,其上存储有一个或多个程序;当一个或多个程序被一个或多个处理器执行,使得一个或多个处理器实现如第一方面中任一实现方式描述的方法。

第四方面,本申请实施例提供了一种计算机可读介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如第一方面中任一实现方式描述的方法。

本申请实施例提供的用于推送信息的方法和装置,通过接收客户端发送的带有标识该客户端所属的客户端组的标识符的交易信息,并基于该交易信息,生成区块。然后,基于该区块的区块信息,生成带有上述标识符的广播信息。之后,向上述客户端组包括的客户端的连接地址推送上述广播信息,从而实现了有针对性的、只向该客户端所属的客户端组中的客户端推送广播信息,同时由于其它客户端组中的客户端不能接收到广播信息,提高了信息的安全性。

附图说明

通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:

图1是本申请可以应用于其中的示例性系统架构图;

图2是本申请的用于推送信息的方法的一个实施例的流程图;

图3是根据本申请的用于推送信息的法的一个应用场景的示意图;

图4是根据本申请的用于推送信息的方法的又一个实施例的流程图;

图5是根据本申请的用于推送信息的方法的又一个实施例的时序图;

图6是根据本申请的用于推送信息的装置的一个实施例的结构示意图;

图7是适于用来实现本申请实施例的服务器的计算机系统的结构示意图。

具体实施方式

下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。

需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。

图1示出了可以应用本申请的用于推送信息的方法或用于推送信息的装置的示例性架构100。

如图1所示,系统架构100可以包括终端设备101、102、103,网络104和区块链系统105。区块链系统105可以包括一个或多个节点,节点之间可以通信连接。网络104用以在终端设备101、102、103和区块链系统105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。

终端设备101、102、103通过网络104与区块链系统105交互,以接收或发送消息等。终端设备101、102、103上可以安装有各种通讯客户端应用,例如消息处理类应用、搜索类应用等。

终端设备101、102、103可以是硬件,也可以是软件。当终端设备101、102、103为硬件时,可以是支持消息处理的各种电子设备,包括但不限于智能手机、平板电脑、电子书阅读器、膝上型便携计算机和台式计算机等等。当终端设备101、102、103为软件时,可以安装在上述所列举的电子设备中。其可以实现成多个软件或软件模块(例如用来提供分布式服务),也可以实现成单个软件或软件模块。在此不做具体限定。

区块链系统105中的一个或多个节点可以提供各种服务,例如为终端设备101、102、103上发送的信息进行处理,并将处理后的信息发送给终端设备101、102、103的服务器。

需要说明的是,本申请实施例所提供的用于推送信息的方法一般由区块链系统105执行,相应地,用于推送信息的装置一般设置于区块链系统105中。需要指出的是,执行主体可以是区块链系统105中的一个节点,也可以是区块链系统105中的两个或两个以上个节点。

需要指出的是,区块链系统105中的节点可以是单一服务器,也可以由多个服务器或多个服务器集群构成。其中,上述服务器可以是硬件,也可以是软件。当服务器为硬件时,可以实现成多个服务器组成的分布式服务器集群,也可以实现成单个服务器。当服务器为软件时,可以实现成多个软件或软件模块(例如用来提供分布式服务),也可以实现成单个软件或软件模块。在此不做具体限定。

应该理解,图1中的终端设备、网络和区块链系统的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和区块链系统。

继续参考图2,示出了根据本申请的用于推送信息的方法的一个实施例的流程200。该用于推送信息的方法包括以下步骤:

步骤201,接收客户端发送的交易信息。

在本实施例中,用于推送信息的方法的执行主体(如图1所示的区块链系统105)可以接收客户端发送的交易信息。其中,交易信息可以包括用于标识该客户端所属的客户端组的标识符。交易可以指用户之间产生的一些对物品、服务或货币进行互通有无的行为。其中,用户可以通过客户端与区块链系统连接。例如,区块链系统可以提供一个客户端应用软件,用户通过在本地的客户端上安装对应的应用软件就可以与区块链系统连接,并且与接入区块链系统的其它用户进行交互或交易。交易信息可以包括与交易相关的任何信息。例如交易编号,交易时间,交易内容,交易双方的用户名等。之后,客户端可以利用上述其安装的应用软件向区块链系统发送交易信息。

实践中,在不同的区块链系统中,具体涉及的交易和交易信息可能有所不同。举例来说,在比特币系统中,交易可以指比特币交易事件。例如,一个交易可以指用户a向用户b支付了一个比特币。对应的,交易信息可以包括交易内容“用户a向用户b支付了一个比特币”。在以太坊系统中,交易可以指以太币交易事件。例如,一个交易可以指用户c向用户d支付了三个以太币。对应的,交易信息可以包括交易内容“用户c向用户d支付了三个以太币”。在一个电商类的区块链应用系统中,交易就可以指一个普通的网络交易。例如,一个交易可以指用户e向用户f购买十本书,并向用户f支付400人民币。对应的,交易信息可以包括交易内容“用户e向用户f购买十本书,并向用户f支付400人民币”。

实践中,与区块链系统通信连接的客户端可以划分为多个客户端组,并且每个客户端组具有能够标识该客户端组的标识符。标识符可以使用任意的符号、标记、名称或者具体的数字编号等。其中,客户端组的划分可以是由技术人员预先根据实际需求或者数据分析对多个客户端进行的一个分组,也可以是客户端在和区块链系统交互的过程中,依据客户端的交互信息等对客户端进行的一个分组。

分组依据可以依据实际应用而不同,灵活设定。举例来说,可以依据客户端的主要应用属性来划分,例如将主要涉及食品相关业务的客户端划分为同一个客户端组,将主要涉及服装相关业务的客户端划分为同一个客户端组。具体地,对于涉及服装相关业务的客户端还可以进一步将其中涉及奢侈品类或者高定类的服装业务的客户端划分为同一个客户端组,将其中涉及非奢侈品类或者非高定类的服装业务的客户端划分为同一个客户端组。

步骤202,基于交易信息,生成区块。

在本实施例中,上述执行主体可以基于客户端方的交易信息,生成区块。其中,上述执行主体中可以维护多条区块链。每条区块链可以对应于一个客户端组。区块链由至少一个区块依次连接组成。一般地,区块链系统中会不断地产生新的区块,并将新的区块连接到对应区块链中的最后一个区块之后,成为新的区块链的最后的区块。区块可以是对区块链系统中的一些交易数据的记录。实践中,区块可以记录系统中产生的交易的交易信息的一些或全部内容,例如可以包括交易内容、交易时间、交易编号等。

实践中,上述执行主体每秒可能会接收到许多交易信息,那么可以依据预先设置的结块规则来生成区块。其中,结块规则可以包括用于生成区块的规则。结块规则可以是由技术人员依据应用需求预先设定的。举例来说,结块规则可以包括如每二十分钟生成区块。那么,每隔二十分钟,上述执行主体就会将这二十分钟之内接收的交易信息进行记录,以生成区块。具体地,可以首先依据接收的交易信息中的标识符将交易信息划分为不同的客户端组对应的交易信息。然后将每个客户端组对应的交易信息进行记录,以生成该客户端组对应的新的区块。结块规则还可以包括如每个区块记录十笔交易的交易信息。即对于每个客户组对应的交易,当交易的数目不大于十时,可以生成一个区块。当交易的数目大于十并且不大于二十时,可以生成两个区块,其中一个区块中记录有十笔交易的交易信息,另一个区块中记录有其余交易的交易信息。类似地,当交易的数目为其它时,可以按照上述方法类推。结块规则还可以包括如记录交易信息时按照交易编号进行记录等。例如,要将三笔交易的交易信息进行记录,并生成一个区块。其中,三笔交易的交易编号分别为“02”、“10”和“08”,那么就可以先记录交易编号为“02”的交易的交易信息,然后再记录交易编号为“08”的交易的交易信息,最后再记录交易编号为“10”的交易的交易信息。应当可以理解,结块规则可以依据实际的应用需求灵活设定。在生成区块之后,可以将生成的区块连接到该区块对应的客户端组对应的区块链中。

步骤203,基于区块的区块信息,生成广播信息。

在本实施例中,上述执行主体可以基于区块的区块信息,生成广播信息。其中,广播信息可以包括上述标识符,从而可以对各个客户端组对应的区块链中的区块,生成对应于各个客户端组的广播信息。广播信息还可以包括区块信息的一些或全部内容。区块的区块信息可以包括区块中记录的内容,还可以包括区块的一些相关信息,例如区块的生成时间等。

步骤204,获取客户端组包括的客户端的连接地址。

在本实施例中,上述执行主体可以获取客户端组包括的客户端的连接地址。其中,客户端的连接地址可以包括客户端的互联网协议ip地址。实践中,在上述执行主体中可以将每个客户端组包含的客户端的连接地址进行存储。举例来说,上述执行主体中可以存储有表示客户端组对应的标识符与客户端组包含的客户端的连接地址之间的对应关系的一个连接地址表。从而,上述执行主体可以直接根据客户端组对应的标识符查询上述连接地址表,进而得到对应的客户端的连接地址。

步骤205,向连接地址推送广播信息。

在本实施例中,上述执行主体可以向上述步骤204得到的连接地址推送上述步骤203生成的广播信息。

在本实施例的一些可选的实现方式中,在上述步骤201之前,还包括如下步骤:

1)接收客户端发送的交易提案,其中,交易提案包括标识符,交易编号,链码信息,提案签名信息和提案公钥信息。

实践中,客户端对于其完成的一个交易,可以先向上述执行主体发送完成的交易的交易提案。即上述执行主体还可以先接收客户端发送的交易提案。其中,交易提案包括标识符、交易编号、链码信息、提案签名信息和提案公钥信息。交易编号可以是由客户端组对其相关的交易设置的编号。

一般地,链码可以指用于实现一定功能的应用程序。链码可以划分为系统链码和用户链码。系统链码可以用来实现区块链系统层面的功能,例如系统的配置,用户链码的部署、升级,以及交易相关信息的签名和验证等。用户链码可以用于实现用户的应用功能。链码可以由技术人员或相应开发人员进行编写并部署。链码信息可以指与链码相关的一些信息,例如交易提案中的链码是一段用于存储数据的方法的应用程序。那么链码信息就可以包括如链码名称(方法名)、链码版本、方法入参(方法涉及到的参数)等。

另外,客户端在交易提案中还可以设置提案签名信息和提案公钥信息。其中,提案签名信息可以用于标识发送该交易提案的客户端。具体地,发送交易提案的客户端可以首先设置提案私钥信息和提案公钥信息。其中,私钥和公钥可以是通过一定的算法得到的一个密钥对。提案私钥和提案公钥可以是客户端利用一定的算法或者现有的密钥生成相关的软件而生成的私钥和公钥。一般地,私钥和公钥都是字符串,因此,提案公钥信息可以包括生成的公钥的具体内容。

具体地,发送交易提案的客户端可以用其其设置的提案私钥对交易提案的内容进行一个哈希运算,并得到运算结果。一般地,运算结果可以为一个哈希值。该哈希值就可以作为上述提案签名信息。然后可以在交易提案中附上得到的哈希值以及与提案私钥对应的提案公钥的提案公钥信息。

上述执行主体接收到交易提案之后,可以利用提案公钥信息验证提案签名信息是否正确,如果验证正确,则表明该交易提案是设置与提案公钥信息对应的提案私钥的客户端发送的。如果验证不正确,那么则表明接收的交易提案可能是其它客户端发送的虚假信息。具体地,上述执行主体在接收到该交易提案之后可以利用提案公钥信息对交易提案的内容进行和生成提案签名信息时相同的哈希运算,得到一个哈希值。然后,比较该哈希值与交易提案中包含的哈希值是否相同。

2)响应于验证标识符存在,并且验证交易编号不存在,基于提案公钥信息,验证提案签名信息是否正确;响应于验证正确,基于链码信息,生成链码操作结果;基于交易提案和链码操作结果,生成提案结果,其中,提案结果包括提案结果签名信息和提案结果公钥信息;向客户端返回提案结果。

实践中,上述执行主体在接收到交易提案之后,可以首先验证其中包含的标识符是否存在。举例来说,上述执行主体中可以预先存储有标识符表,其中记录有划分的客户端组对应的标识符以及各个标识符对应的客户端组包括的客户端。那么,上述执行主体可以通过遍历该标识符表判断接收到的标识符是否存在。另外,还可以验证交易提案中的交易编号是否存在。举例来说,上述执行主体可以将其已经接收到的交易提案或者交易信息中包含的交易编号进行存储,可以生成一个交易编号表。然后,可以通过遍历该交易编号表确定现在接收到的交易编号是否已经存在。

之后,若判断出接收到的标识符存在,以及交易编号不存在(可以表明上述执行主体之前还没有接收到与该交易编号对应的交易相关的信息),可以进一步地利用接收到的交易提案中的提案公钥信息对其中的提案签名信息进行验证。若验证提案签名信息正确,那么可以执行接收到的交易提案中包含的链码信息,得到链码操作结果。举例来说,如果链码信息对应的链码是一个存储数据的方法的应用程序,那么就可以执行该存储数据的方法,并将该方法的执行结果作为链码操作结果。

接下来,可以基于交易提案和链码操作结果,得到提案结果。一般地,可以将交易提案中的链码信息部分替换为链码操作结果,并附上提案结果签名信息和提案结果公钥信息,从而生成提案结果。其中,提案结果签名信息可以用于标识生成提案结果的上述执行主体。提案结果公钥信息可以包括利用一定的算法或者现有的密钥生成相关的软件而生成的公钥的内容。其中,提案结果签名信息和提案结果公钥信息以及利用提案结果公钥信息验证提案结果签名信息的验证过程可以参考上述关于提案签名信息和提案公钥信息的相关说明,在此不再赘述。之后,上述执行主体可以进一步将生成的提案结果返回给发送交易提案的客户端。

在本实施例的一些可选的实现方式中,交易信息还包括交易签名信息和交易公钥信息;以及上述步骤202还可以包括:基于交易公钥信息,验证交易签名信息是否正确;响应于验证正确,基于预设的结块规则,生成区块。

实践中,客户端发送的交易信息还可以包括交易签名信息和交易公钥信息。那么,上述主体接收到交易信息后,可以先利用其中包含的交易公钥信息对其中包含的交易签名信息进行验证。如果验证交易签名信息正确,那么可以基于预设的结块规则,生成区块。其中,交易签名信息可以用于标识发送交易信息的客户端。交易公钥信息可以包括利用一定的算法或者现有的密钥生成相关的软件而生成的公钥的内容。其中,交易签名信息和交易公钥信息以及利用交易公钥信息验证交易签名信息的验证过程可以参考上述关于提案签名信息和提案公钥信息的相关说明,在此不再赘述。具体的执行过程及利用交易公钥信息的验证过程可以参考上述关于提案签名信息和提案公钥信息的相关说明,在此不再赘述。生成区块的具体执行过程和结块规则可以参考图2对应实施例中的步骤202中的相关说明,在此不再赘述。

在本实施例的一些可选的实现方式中,区块信息包括交易信息、区块的区块高度和区块的前置哈希值;以及在上述步骤202之后还包括:基于标识符和区块高度,获取区块的上个区块的哈希值;响应于确定前置哈希值和上个区块的哈希值相同,在本地账本中存储区块信息。

实践中,区块信息还可以包括交易信息、区块的区块高度和区块的前置哈希值。其中,区块高度一般可以指区块是其所在区块链中的第几个区块。每个区块都可以有一个对应的哈希值。一般地,可以对每个区块的内容进行一个哈希运算,并将得到的哈希值作为该区块对应的哈希值。区块的前置哈希值可以指该区块的上一个区块对应的哈希值。

对应地,在图2对应的实施例中的步骤202之后还可以包括:基于标识符和区块高度,获取区块的上个区块的哈希值,并验证得到的上个区块的哈希值与区块信息中的前置哈希值是否相同。如果验证相同,那么可以在上述执行主体的本地账本中存储区块信息。具体地,上述执行主体可以首先根据标识符找到该标识符对应的客户端组对应的区块链。然后,通常将区块高度减1就可以得到区块链中上一个区块的区块高度,并基于上一个区块的区块高度定位上一个区块,然后可以进一步得到上一个区块对应的哈希值。

在本实施例的一些可选的实现方式中,区块信息还包括:区块的区块生成时间,区块的哈希值。

继续参见图3,图3是根据本实施例的用于推送信息的方法的应用场景的一个示意图。在图3的应用场景中,上述执行主体可以接收客户端发送的交易信息301,其中,交易信息301中包含标识符“a”。标识符“a”用于标识发送交易信息301的客户端所属的客户端组。然后,上述执行主体可以基于交易信息301,生成区块。具体地,上述执行主体可以将每二十分钟内接收的交易信息,依据不同的标识符生成对应于各个标识符的区块。因此,可以基于二十分钟之内接收到的包含标识符“a”的交易信息,生成区块。假设包含标识符“a”的交易信息对应的交易包括交易“01”、交易“02”和交易“03”。那么,区块中可以记录交易“01”、交易“02”和交易“03”的相关交易数据(例如,每个交易的交易时间,交易内容。交易编号等)。之后,上述执行主体可以基于区块的区块信息302,生成广播信息303。区块信息302可以包括区块记录的各笔交易相关的交易数据,还可以包括区块相关的一些信息,例如区块高度,区块的哈希值等(图中未示出)。广播信息303可以包括区块信息和标识符“a”。之后,上述执行主体可以通过查询其本地存储有标识符和连接地址的对应关系的连接地址表304,获取到标识符“a”对应的连接地址包括:“ad1”、“ad2”和“ad3”。接着,上述执行主体可以向“ad1”、“ad2”和“ad3”发送上述广播信息303。

本申请的上述实施例提供的方法通过接收客户端发送的带有标识该客户端所属的客户端组的标识符的交易信息,并基于该交易信息,生成区块。然后,基于该区块的区块信息,生成带有上述标识符的广播信息。之后,向上述客户端组包括的客户端的连接地址推送上述广播信息,从而实现了有针对性的、只向该客户端所属的客户端组中的客户端推送广播信息,同时由于其它客户端组中的客户端不能接收到广播信息,提高了信息的安全性。另外,由于同一客户端组中客户端可能涉及的业务相同或类似,从而使得客户端接收的都是与其相关的信息,因此,这种方式还有助于提升推送效率。

进一步参考图4,其示出了用于推送信息的方法的又一个实施例的流程400。该用于推送信息的的流程400,包括以下步骤:

步骤401,接收客户端发送的交易信息。

步骤402,基于交易信息,生成区块。

步骤403,基于区块的区块信息,生成广播信息。

步骤404,获取客户端组包括的客户端的连接地址。

步骤405,向连接地址推送广播信息。

上述步骤401、401、401、401和401的具体的执行过程可参考图2对应实施例中的步骤201、202、203、204和205的相关说明,在此不再赘述。

步骤406,对于客户端组中的客户端,定时向该客户端发送反向心跳信息;响应于在预定时间范围内没有接收到该客户端返回的对应于反向心跳信息的响应信息,从客户端组中删除该客户端。

在本实施例中,上述执行主体可以向客户端组中的每个客户端定时发送反向心跳信息。若在预定时间范围内没有接收到该客户端返回的响应信息,那么可以从客户端组中删除该客户端。其中,反向心跳信息可以是一般地心跳信息。心跳信息可以是指由接收或发送双方自定义的结构体,心跳信息的发送方通过定时向接收方发送心跳信息,并根据是否在预设时间范围内接收到接收方的响应信息来判断其是否还与接收方维持有效连接。通常如果在预设时间范围内没有接收到接收方的响应信息,那么可以认为与接收方的连接出现故障或失效。

实践中,上述执行主体可以存储有客户端表。其中,客户端表中可以存储有客户端组与客户端之间的对应关系。一般地,上述执行主体可以通过每个客户端的连接地址来标识每个客户端。因此,客户端表中实际可以存储客户端组与客户端的连接地址之间的对应关系。从而,上述执行主体可以通过遍历客户端表,然后删除未收到响应信息的客户端的连接地址。应当可以理解,如果上述执行主体中还在其他的数据结构中存储有客户端与其对应的连接地址的对应关系,那么在从客户端组中删除某一客户端时,也可以同时删掉其它数据结构中存储的该客户端与其对应的连接地址的对应关系。

应当可以理解,实践中,上述执行者主体可以向各个客户端组中的客户端发送反向心跳信息。若在预定时间范围内没有接收到客户端返回的响应信息,那么从客户端对应的客户端组中删除客户端。

步骤407,接收目标客户端发送的心跳信息;响应于确定在客户端组中不存在目标客户端,在客户端组中添加目标客户端。

在本实施例中,上述执行主体还可以接收目标客户端发送的心跳信息。然后确定目标客户端是否在客户端组中,如果不在,那么可以在客户端组中添加目标客户端。目标客户端可以是指与上述执行主体通信连接的任一客户端。实践中,上述执行主体还可以遍历上述步骤406中说明的客户端表,若未查找到目标客户端的连接地址,那么可以在上述客户端表中添加目标客户端的连接地址。之后,还可以通过对与目标客户端的数据交互过程中的相关数据的分析,将目标客户端进行类别确定,从而可以将目标客户端划分到对应的客户端组中。

应当可以理解,如果上述执行主体中还在其他的数据结构中存储有客户端与其对应的连接地址的对应关系,那么在客户端表中添加目标客户端的连接地址时,也可以同时在其它数据结构中添加目标客户端与目标客户端的连接地址的对应关系。

从图4中可以看出,与图2对应的实施例相比,本实施例中的信息推送方法的流程400在有针对性的向部分客户端推送广播信息的同时。还可以通过向客户端发送反向心跳信息,从而删除可能存在连接故障的客户端,以及接收目标客户端发送的心跳信息,从而添加存在连接良好的、未存储的目标客户端,从而实现了对存储的客户端组的信息的更新,进而有助于提高选择推送对象时的灵活性,并且有助于提升推送效率。

进一步参考图5,其示出了用于推送信息的方法的又一个实施例的时序图500。该用于推送信息的方法由如图1中所示的区块链系统的两个节点执行。两个节点分别为背书节点和排序节点。具体包括以下步骤:

步骤501,背书节点可以预先对其通信连接的客户端进行分组,划分为多个客户端组,并且可以建立标识符—连接地址对应表。其中,标识符—连接地址对应表中可以存储客户端组的标识符与客户端组包含的客户端的连接地址的对应关系。

步骤502,每组客户端组可以对应一个区块链,因此,排序节点可以预先建立标识符-区块链对应表。其中,标识符-区块链对应表中可以存储有客户端组的标识符与区块链信息的对应关系。实践中,对于每组客户端组对应的区块链,排序节点还可以采用队列等数据结构来存储区块链中的区块的区块信息。

步骤503,背书节点可以定时向连接的客户端发送反向心跳信息,如果在预设时间范围内没有接收到某个客户端返回的响应信息,那么可以删除该客户端在上述标识符-连接地址对应表中对应的连接地址。

步骤504,客户端也可以向背书节点发送心跳信息。背书节点在接收到心跳信息之后,如果在标识符-连接地址对应表中未查找到发送心跳信息的客户端的连接地址,那么可以将该连接地址添加至标识符-连接地址对应表中。

步骤505,背书节点通过上述步骤503和504,可以不断的更新标识符-连接地址对应表。应当可以理解,上述步骤503和504在实践中的具体执行顺序是任意的,不分先后。

步骤506,客户端上如果产生了交易,那么客户端可以针对该交易创建一个交易提案,主要包括如下步骤:

步骤5061,客户端可以首先生成一个交易编号。

步骤5602,客户端可以将交易编号、链码信息、标识符、提案签名信息和提案公钥信息等进行封装,得到交易提案。其中,提案签名信息由客户端利用提案私钥对交易编号、链码信息、标识符等交易提案中的内容进行哈希运算,并将运算结果作为提案签名信息。

步骤507,背书节点接收客户端发送的交易提案。

步骤508,背书节点接收到交易提案之后,可以执行如下步骤:

步骤5081,背书节点可以先验证交易提案中的标识符是否在标识符-连接地址表中存在,然后利用其中的提案公钥信息验证提案签名信息是否正确,还可以进一步验证其中的交易编号是否已经存在。应当可以理解,上述的各个验证的具体执行顺序在实践中可以是任意的。例如,还可以先验证交易编号是否存在,然后验证交易提案中的标识符是否在标识符-连接地址表中存在,最后利用其中的提案公钥信息验证提案签名信息是否正确。

步骤5082,若验证结果是标识符存在,提案签名信息正确以及交易编号不存在,那么背书节点可以基于交易提案中的链码信息,执行链码部分,得到链码操作结果。

步骤509,背书节点向客户端发送提案结果。其中,提案结果包括提案签名信息和提案公钥信息。可以将交易提案中的链码信息部分替换成链码操作结果,得到新的交易提案。然后,背书节点利用背书私钥对新的交易提案内容进行哈希运算,并将运算结果作为背书签名信息。然后,可以将新的交易提案、背书签名信息和背书公钥信息进行封装,得到提案结果。

步骤510,客户端接收到提案结果之后,可以利用客户端的交易私钥对提案结果的内容进行哈希运算,并将运算结果作为交易签名信息。然后将提案结果、交易签名信息和交易公钥信息进行封装,得到交易信息。

步骤511,可以由排序节点接收客户端发送的交易信息。其中,交易信息中可以包含标识符。

步骤512,排序节点可以对接收的交易信息进行验证,若验证正确,那么可以基于交易信息,生成区块。可以包括如下步骤:

步骤5121,排序节点可以首先利用交易信息中的交易公钥信息验证其中的交易签名信息是否正确,然后利用其中的背书公钥信息验证其中的背书签名信息是否正确。应当可以理解,上述的各个验证的具体执行顺序在实践中可以是任意的。

步骤5122,如果上述步骤5121中的验证结果均正确,那么可以基于一定的结块规则生成区块。区块中可以包括一定时间段内接收到的各笔交易信息,还可以包括区块高度,区块生成时间,区块哈希值,区块前置哈希值。

步骤5123,排序节点还可以将与生成的区块相关的信息(例如上述步骤5122中的各笔交易信息,区块高度,区块生成时间,区块哈希值,区块前置哈希值等)添加至上述标识符-区块链对应表中,还可以将上述相关的信息存储到对应的区块链对应的队列中。需要说明的是,根据具体的结块规则,生成的区块可能未多个,那么可以基于结块规则对生成的区块进行排序,然后依次连接到对应的区块链中。

步骤513,背书节点可以接收排序节点发送的区块信息。其中,区块信息可以包括区块签名信息和区块公钥信息。排序节点可以对区块中包含的各笔交易信息,区块高度,区块生成时间,区块哈希值,区块前置哈希值等内容进行哈希运算,并将运算结果作为区块签名信息。

步骤514,背书节点接收到区块信息之后,可以对区块信息进行验证和存储。具体可以包括如下步骤:

步骤5141,排序节点可以首先利用接收到的区块信息中的区块公钥信息验证区块签名信息是否正确,验证其中的区块哈希值是否正确,验证其中的区块前置哈希值是否正确。

步骤5142,排序节点还可以对区块信息中包含的各笔交易的交易信息进行验证。例如,可以利用各笔交易的交易信息中包含的提案公钥信息验证其中的提案签名信息是否正确。

应当可以理解,上述步骤5141和步骤5142中包含的各个验证以及步骤5141和步骤5142本身的具体执行顺序可以是任意的。

步骤5143,若上述步骤5141和5142的验证结果均正确,那么背书节点可以将接收到的区块信息存储到本地账本。

步骤515,背书节点可以基于接收到的区块信息,将区块信息中的部分或全部内容进行封装,得到广播信息。举例来说,可以将区块信息中包含的区块高度、各笔交易的交易信息中包含的交易编号和交易时间、区块生成时间和标识符进行封装,得到广播信息。

步骤516,背书节点可以基于标识符,从上述标识符-连接地址表中获取标识符对应的连接地址。

步骤517,背书节点可以向上述步骤516中得到的连接地址发送上述步骤515中生成的广播信息。

步骤518,上述连接地址对应的客户端接收到广播信息之后,还可以执行如下步骤所示的操作:

步骤5181,验证广播信息中包含的交易编号是否包括客户端产生的交易的交易编号。

步骤5182,如果上述步骤5181确定广播信息中包含客户端产生过的交易的交易编号,那么客户端可以将广播信息在客户端上进行显示、在本地进行存储等操作。

从图5中可以看出,与图2对应的实施例相比,本实施例中的信息推送方法的流程500的执行主体包括两个节点:背书节点和排序节点。而且两个节点可以维护一些关于不同的客户端组对应的表或队列等数据结构,使得所有信息的处理都可以只针对对应的客户端组,提高了信息处理效率和安全性。同时每个客户端组也可以对应一条区块链,从而有助于避免因交易信息太多而存储结构单一而可能引起的网络风暴,提高结块效率。另外,在每次的信息传输过程中,都由发送节点进行签名,之后由接收节点对签名进行验证,从而提升了传输信息准确性和安全性。此外,由于客户端只接收与其同一客户端组相关的信息,从而减轻了客户端在接收信息之后的信息处理负载。

进一步参考图6,作为对上述各图所示方法的实现,本申请提供了用于推送信息的装置的一个实施例,该装置实施例与图2所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。

如图6所示,本实施例提供的用于推送信息的装置600包括接收单元601、区块生成单元602、广播信息生成单元603、连接地址获取单元604和推送单元605。其中,接收单元601被配置成接收客户端发送的交易信息,其中,交易信息包括用于标识客户端所属的客户端组的标识符;区块生成单元602被配置成基于交易信息,生成区块;广播信息生成单元603被配置成基于区块的区块信息,生成广播信息,其中,广播信息包括标识符;连接地址获取单元604被配置成获取客户端组包括的客户端的连接地址;推送单元605被配置成向连接地址推送广播信息。

在本实施例中,用于推送信息的装置600中:接收单元601、区块生成单元602、广播信息生成单元603、连接地址获取单元604和推送单元605的具体处理及其所带来的技术效果可分别参考图2对应实施例中的步骤201、步骤202、步骤203、步骤204和步骤205的相关说明,在此不再赘述。

在本实施例的一些可选的实现方式中,上述用于推送信息的装置600还包括:反向心跳信息发送单元(图中未示出),被配置成对于客户端组中的客户端,定时向该客户端发送反向心跳信息;删除单元(图中未示出),被配置成响应于在预定时间范围内没有接收到该客户端返回的对应于反向心跳信息的响应信息,从客户端组中删除该客户端。

在本实施例的一些可选的实现方式中,上述用于推送信息的装置600还包括:心跳信息接收单元(图中未示出),被配置成接收目标客户端发送的心跳信息;添加单元(图中未示出),被配置成响应于确定在客户端组中不存在目标客户端,在客户端组中添加目标客户端。

在本实施例的一些可选的实现方式中,上述用于推送信息的装置600还包括:交易提案接收单元(图中未示出),被配置成接收客户端发送的交易提案,其中,交易提案包括标识符,交易编号,链码信息,提案签名信息和提案公钥信息;验证单元(图中未示出),被配置成响应于验证标识符存在,并且验证交易编号不存在,基于提案公钥信息,验证提案签名信息是否正确;提案结果返回单元(图中未示出),被配置成响应于验证正确,基于链码信息,生成链码操作结果;基于交易提案和链码操作结果,生成提案结果,其中,提案结果包括提案结果签名信息和提案结果公钥信息;向客户端返回提案结果。

在本实施例的一些可选的实现方式中,交易信息还包括交易签名信息和交易公钥信息;以及区块生成单元602进一步被配置成:基于交易公钥信息,验证交易签名信息是否正确;响应于验证正确,基于预设的结块规则,生成区块。

在本实施例的一些可选的实现方式中,区块信息包括交易信息、区块的区块高度和区块的前置哈希值;以及用于推送信息的装置600还包括:哈希值获取单元(图中未示出),被配置成基于标识符和区块高度,获取区块的上个区块的哈希值;存储单元(图中未示出),被配置成响应于确定前置哈希值和上个区块的哈希值相同,在本地账本中存储区块信息。

在本实施例的一些可选的实现方式中,区块信息还包括:区块的区块生成时间,区块的哈希值。

本申请的上述实施例提供的装置,通过接收单元601接收客户端发送的带有标识该客户端所属的客户端组的标识符的交易信息,并由区块生成单元602基于该交易信息,生成区块。然后,广播信息生成单元603基于该区块的区块信息,生成带有上述标识符的广播信息。之后,推送单元605向连接地址获取单元604获取的上述客户端组包括的客户端的连接地址推送上述广播信息,从而实现了有针对性的、只向该客户端所属的客户端组中的客户端推送广播信息。由于同一客户端组中客户端可能涉及的业务相同或类似,因此,这种方式还有助于提升推送效率。

下面参考图7,其示出了适于用来实现本申请实施例的服务器的计算机系统700的结构示意图。图7示出的服务器仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。

如图7所示,计算机系统700包括中央处理单元(cpu)701,其可以根据存储在只读存储器(rom)702中的程序或者从存储部分708加载到随机访问存储器(ram)703中的程序而执行各种适当的动作和处理。在ram703中,还存储有系统700操作所需的各种程序和数据。cpu701、rom702以及ram703通过总线704彼此相连。输入/输出(i/o)接口705也连接至总线704。

以下部件连接至i/o接口705:包括键盘、鼠标等的输入部分706;包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分707;包括硬盘等的存储部分708;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分709。通信部分709经由诸如因特网的网络执行通信处理。驱动器710也根据需要连接至i/o接口705。可拆卸介质711,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器710上,以便于从其上读出的计算机程序根据需要被安装入存储部分708。

特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分709从网络上被下载和安装,和/或从可拆卸介质711被安装。在该计算机程序被中央处理单元(cpu)701执行时,执行本申请的方法中限定的上述功能。

需要说明的是,本申请的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、rf等等,或者上述的任意合适的组合。

附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

描述于本申请实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元也可以设置在处理器中,例如,可以描述为:一种处理器,包括接收单元、区块生成单元、广播信息生成单元、连接地址获取单元和推送单元。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定,例如,接收单元还可以被描述为“接收客户端发送的交易信息的单元,其中,交易信息包括用于标识客户端所属的客户端组的标识符”。

作为另一方面,本申请还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的装置中所包含的;也可以是单独存在,而未装配入该装置中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该装置执行时,使得该装置:接收客户端发送的交易信息,其中,交易信息包括用于标识客户端所属的客户端组的标识符;基于交易信息,生成区块;基于区块的区块信息,生成广播信息,其中,广播信息包括标识符;获取客户端组包括的客户端的连接地址;向连接地址推送广播信息。

以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1