用于对象分发处理的方法、装置及系统
技术领域
本公开涉及互联网技术领域,具体地,涉及一种用于对象分发处理的方法、装置及系统。
背景技术
在商品秒杀/抢购业务中,商家会将奖品内容通过抢购平台发布出去,而兴趣用户会在约定的时间通过抢购平台(例如拼多多、美团、京东平台等)对商品进行抢购。
但在目前相关技术中,存在商家在发布秒杀商品内容的时候传到抢购平台服务器的商品内容是A(例如苹果手机一个),而在秒杀结束之后商家通过技术手段将传到秒杀服务器的此商品的内容篡改为B(例如苹果一个)。
这样,用户花了很多精力才抢到奖券,却由于商家抵赖行为而使得用户无法兑换到商家所许诺的商品(例如只能抢到一个苹果),使得用户产生被抢购平台欺骗的感觉。并且,用户也无法找到可靠的证据来维护自己的权益,使得抢购平台会遭到用户的投诉和抱怨,致使平台的口碑受损。
因此,如何有效地处理因商家欺诈行为而导致抢购平台的口碑和信誉受损的问题是目前业界亟待解决的问题。
发明内容
鉴于上述问题,本公开提供了一种用于对象分发处理的方法、装置及系统,利用该方法、装置及系统,对象分发服务端从区块链接收针对待分发的对象信息的交易哈希,并为获奖用户发送包括该交易哈希的对象分发消息,利用了区块链中数据不可篡改的特点,为秒杀业务中的商家抵赖提供证据,增强了秒杀业务的公平性,还可提高抢购平台的口碑和信誉。
根据本公开的一个方面,提供了一种用于对象分发处理的方法,所述方法由对象分发服务端执行,所述方法包括:从区块链网络中的区块链节点获取对象分发交易内容,所述对象分发交易内容包括针对待分发对象的对象信息的第一交易哈希值以及对象分发规则,所述对象分发规则包括分发开始时间和对象分发数量;在达到所述分发开始时间后,接收来自至少一个客户端的至少一个对象分发请求,所述对象分发请求包括客户端标识信息;基于所述至少一个对象分发请求的接收时间顺序和所述对象分发数量,确定至少一个对象分发消息,所述对象分发消息包括客户端标识信息和所述第一交易哈希值;以及将所述至少一个对象分发消息中的各个对象分发消息发送给所述各个对象分发消息中的客户端标识信息所指示的客户端。
可选地,在上述方面的一个示例中,所述对象分发交易内容包括原子计数器,基于所述至少一个对象分发请求的接收时间顺序和所述对象分发数量,确定至少一个对象分发消息包括:基于所述至少一个对象分发请求的接收时间顺序,利用所述原子计数器来对所述至少一个对象分发请求进行排序;以及根据排序后的至少一个对象分发请求以及所述对象分发数量,确定所述至少一个对象分发消息。
可选地,在上述方面的一个示例中,所述对象分发规则包括对象获取数目限制,所述对象获取数目限制用于指示每个客户端所获取的对象的对象数目限制,以及基于所述至少一个对象分发请求的接收时间顺序和所述对象分发数量,确定至少一个对象分发消息包括:基于所述至少一个对象分发请求的接收时间顺序、所述对象分发数量和所述对象获取数目限制,确定所述至少一个对象分发消息。
可选地,在上述方面的一个示例中,所述对象分发交易内容包括私钥/公钥对中的公钥,所述第一交易哈希值是针对待分发对象的对象信息和对象信息签名的哈希值,所述对象信息签名是使用所述私钥/公钥对中的私钥来对所述对象信息进行加密后得到的,其中,所述对象分发消息包括所述公钥,以供在所述客户端处进行对象信息验证。
可选地,在上述方面的一个示例中,从区块链节点获取对象分发交易内容包括:从所述区块链节点获取第二交易哈希值,所述第二交易哈希值是针对所述对象分发交易内容的哈希值;以及基于所述第二交易哈希值,从所述区块链节点获取所述对象分发交易内容。
可选地,在上述方面的一个示例中,在基于所述至少一个对象分发请求的接收时间顺序和所述对象分发数量,确定至少一个对象分发消息之前,所述方法还包括:对所述至少一个对象分发请求进行资格过滤处理,以及基于所述至少一个对象分发请求的接收时间顺序和所述对象分发数量,确定至少一个对象分发消息包括:基于所述经过资格过滤处理后的至少一个对象分发请求的接收时间顺序和所述对象分发数量,确定至少一个对象分发消息。
根据本公开的另一个方面,提供了一种用于对象分发处理的装置,包括:分发交易内容获取单元,被配置为从区块链网络中的区块链节点获取对象分发交易内容,所述对象分发交易内容包括针对待分发对象的对象信息的第一交易哈希值以及对象分发规则,所述对象分发规则包括分发开始时间和对象分发数量;对象分发请求接收单元,被配置为在达到所述分发开始时间后,接收来自至少一个客户端的至少一个对象分发请求,所述对象分发请求包括客户端标识信息;对象分发消息确定单元,被配置为基于所述至少一个对象分发请求的接收时间顺序和所述对象分发数量,确定至少一个对象分发消息,所述对象分发消息包括客户端标识信息和所述第一交易哈希值;以及对象分发消息发送单元,被配置为将所述至少一个对象分发消息中的各个对象分发消息发送给所述各个对象分发消息中的客户端标识信息所指示的客户端。
可选地,在上述方面的一个示例中,所述对象分发交易内容包括原子计数器,所述对象分发消息确定单元包括:排序模块,被配置为基于所述至少一个对象分发请求的接收时间顺序,利用所述原子计数器来对所述至少一个对象分发请求进行排序;以及对象分发消息确定模块,被配置为根据排序后的至少一个对象分发请求以及所述对象分发数量,确定所述至少一个对象分发消息。
可选地,在上述方面的一个示例中,所述对象分发规则包括对象获取数目限制,所述对象获取数目限制用于指示每个客户端所获取的对象的对象数目限制,以及所述对象分发消息确定单元被配置为:基于所述至少一个对象分发请求的接收时间顺序、所述对象分发数量和所述对象获取数目限制,确定所述至少一个对象分发消息。
可选地,在上述方面的一个示例中,所述对象分发交易内容包括私钥/公钥对中的公钥,所述第一交易哈希值是针对待分发对象的对象信息和对象信息签名的哈希值,所述对象信息签名是使用所述私钥/公钥对中的私钥来对所述对象信息进行加密后得到的,其中,所述对象分发消息包括所述公钥,以供在所述客户端处进行对象信息验证。
可选地,在上述方面的一个示例中,所述对象分发交易接收单元被配置为:从所述区块链节点获取第二交易哈希值,所述第二交易哈希值是针对所述对象分发交易的哈希值;以及基于所述第二交易哈希值,从所述区块链节点获取所述对象分发交易。
可选地,在上述方面的一个示例中,还包括:资格过滤单元,被配置为对所述至少一个对象分发请求进行资格过滤处理,以及所述对象分发消息确定单元被配置为:基于所述经过资格过滤处理后的至少一个对象分发请求的接收时间顺序和所述对象分发数量,确定至少一个对象分发消息。
根据本公开的另一个方面,提供了一种用于对象分发处理的系统,包括:对象提供方设备,被配置为:向区块链网络中的区块链节点发送待分发对象的对象信息以及对象分发交易内容,以由该区块链节点分别根据所述对象信息和对象分发交易内容生成第一交易哈希值和第二交易哈希值,所述对象分发交易内容包括所述第一交易哈希值以及对象分发规则,所述对象分发规则包括分发开始时间和对象分发数量;对象分发服务端,包括如上文所述的用于对象分发处理的装置;至少一个客户端,被配置为向所述对象分发服务端发送对象分发请求。
可选地,在上述方面的一个示例中,所述对象分发交易内容包括私钥/公钥对中的公钥,所述第一交易哈希值是针对待分发对象的对象信息和对象信息签名的哈希值,所述对象信息签名是在所述对象提供方设备处使用所述私钥/公钥对中的私钥来对所述对象信息进行加密后得到的,其中,所述对象分发消息包括所述公钥,所述客户端被配置为使用所述公钥来进行对象信息验证。
可选地,在上述方面的一个示例中,所述对象提供方设备和/或所述对象分发服务端是所述区块链网络中的区块链节点。
根据本公开的另一方面,还提供一种计算设备,包括:至少一个处理器;以及存储器,所述存储器存储指令,当所述指令被所述至少一个处理器执行时,使得所述至少一个处理器执行如上所述的用于对象分发处理的方法。
根据本公开的另一方面,还提供一种机器可读存储介质,其存储有可执行指令,所述指令当被执行时使得所述机器执行如上所述的用于对象分发处理的方法。
附图说明
通过参照下面的附图,可以实现对于本公开内容的本质和优点的进一步理解。在附图中,类似组件或特征可以具有相同的附图标记。附图是用来提供对本发明实施例的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本公开的实施例,但并不构成对本公开的实施例的限制。在附图中:
图1示出了根据目前相关技术的对象分发业务系统的架构示意图;
图2示出了示出了根据本公开的用于对象分发处理的系统的架构示意图;
图3示出了根据本公开的实施例的用于对象分发处理的方法在一示例中的信号时序图;
图4示出了根据本公开的实施例的对象分发处理方法在一示例中的信号时序图;
图5示出了根据本公开的实施例的对象分发处理方法应用于商品抢购业务场景下在一示例中的信号时序图;
图6示出了根据本公开的实施例的用于对象分发处理的装置的方框图;
图7示出了根据本公开的实施例的对象分发消息确定单元的方框图;
图8示出了根据本公开的实施例的用于对象分发处理的计算设备的硬件结构图。
具体实施方式
以下将参考示例实施方式讨论本文描述的主题。应该理解,讨论这些实施方式只是为了使得本领域技术人员能够更好地理解从而实现本文描述的主题,并非是对权利要求书中所阐述的保护范围、适用性或者示例的限制。可以在不脱离本公开内容的保护范围的情况下,对所讨论的元素的功能和排列进行改变。各个示例可以根据需要,省略、替代或者添加各种过程或组件。另外,相对一些示例所描述的特征在其它例子中也可以进行组合。
如本文中使用的,术语“包括”及其变型表示开放的术语,含义是“包括但不限于”。术语“基于”表示“至少部分地基于”。术语“一个实施例”和“一实施例”表示“至少一个实施例”。术语“另一个实施例”表示“至少一个其他实施例”。术语“第一”、“第二”等可以指代不同的或相同的对象。下面可以包括其他的定义,无论是明确的还是隐含的。除非上下文中明确地指明,否则一个术语的定义在整个说明书中是一致的。
在本文中,术语“对象”表示所指定的物品或商品,另外,术语“对象分发”表示针对物品或商品的分发任务。术语“至少一个”表示一个或多个(两个及两个以上)。
术语“区块链”表示用于存储交易的数据结构,其是一种按照时间顺序来将数据区块顺序相连组合而成的链式数据结构,并且以密码学方式保证数据区块不可篡改和不可伪造。区块链包括一个或多个区块。区块链中的每个区块通过包括该区块链中紧接其之前的前一个区块的加密散列(Hash,即哈希)而链接到该前一个区块。每个区块还包括时间戳、该区块的加密哈希以及一个或多个交易(transaction)。对已经被区块链网络的节点验证的交易进行哈希处理并形成Merkle树。在Merkle树中,对叶节点处的数据进行哈希处理,并且针对Merkle树的每个分支,在该分支的根处级联该分支的所有哈希值。针对Merkle树执行上述处理,直到整个Merkle树的根节点。Merkle树的根节点存储代表该Merkle树中的所有数据的哈希值。当一个哈希值声称是Merkle树中存储的交易时,可以通过判断该哈希值是否与Merkle树的结构一致来进行快速验证。
术语“区块链网络”是用于管理、更新和维护一个或多个区块链结构的计算节点网络。这里,区块链网络可以包括公有区块链网络、私有区块链网络或联盟区块链网络。
现在结合附图来描述本公开的用于对象分发处理的方法、装置及系统。
在对象分发业务中,用户通过客户端访问对象分发平台在约定的时间来参与对象分发业务,而目标用户(例如率先发出对象分发请求的用户)将会得到由对象分发提供方所许诺的物品或商品。
图1示出了根据目前相关技术的对象分发业务系统的架构示意图。
如图1所示,对象分发业务系统包括对象分发提供方设备、对象分发服务端和客户端。这里,对象分发服务端可以是单个服务器,也还可以是由多个服务器所组成的服务器集群(另外,其也可能是非服务器的其他类型的处理设备或终端)。这里,对象分发提供方会将要许诺的对象信息(例如苹果手机)发布在对象分发平台上,也就是,对象分发服务提供方设备将对象信息发送至对象分发服务端。然后,对象分发服务端开展针对对象信息的对象分发活动。这样,用户通过客户端(例如手机或电脑等)向对象分发服务端发送对象分发请求(例如抢购请求)来参与对象分发活动,以由对象分发服务端确定目标用户。这里,对象分发服务端会将对象分发消息(例如奖券消息)发给对应的目标客户端。这样,在目标用户拿到对象分发消息之后,会向对象提供方设备要求其提供相对应的对象(例如苹果手机)。
但是,由于对象提供方设备可能会通过一些技术手段修改在对象分发服务端中其所曾许诺的对象信息,导致目标用户无法得到所预期的对象,也没有证明维权,使得对象分发业务缺乏公平性。
图2示出了根据本公开的用于对象分发处理的系统(下文中也被称为对象分发处理系统)100的架构示意图。
在一些示例中,系统100使得实体能够参与区块链网络102。如图2所示,系统100包括网络104、和计算设备/系统106,108。在一些示例中,网络104可以包括局域网(LAN),广域网(WAN),因特网或其组合,并且连接网站、用户设备(例如,计算设备)和后端系统。在一些示例中,可以通过有线和/或无线通信链路来访问网络104。在一些示例中,计算设备/系统106、108通过网络104相互通信,以及通过网络104实现与区块链网络102之间的通信,以及区块链网络102中的节点(或,节点设备)通过网络104来进行通信。通常,网络104表示一个或多个通信网络。在一些情况下,计算设备/系统106,108可以是云计算系统(未示出)的节点,或者每个计算设备/系统106,108可以是单独的云计算系统,其包括通过网络104互连的多个计算机并且用作分布式处理系统。
在所描绘的示例中,计算设备/系统106,108中的每个可以包括能够参与作为区块链网络102中的节点的任何合适的计算系统。计算设备/系统的示例包括但不限于,服务器,台式计算机,笔记本电脑,平板电脑设备和智能手机等。在一些示例中,计算设备/系统106,108上可以安装有用于与区块链网络102交互的一个或多个计算机实现的服务。例如,计算设备/系统106可以上可以安装有第一实体(例如,用户A)的服务,比如,第一实体用于管理其与一个或多个其他实体(例如,其他用户)的交易的交易管理系统。计算设备/系统108可以上可以安装有第二实体(例如,用户B)的服务,比如,第二实体用于管理其与一个或多个其他实体(例如,其他用户)的交易的交易管理系统。在图2的示例中,区块链网络102被表示为节点的对等网络,并且计算设备/系统106,108分别作为参与区块链网络102的第一实体和第二实体的节点。这里,区块链网络102包括多个节点,其中,节点中的至少一些节点被用于在区块链中记录信息,并且所记录的信息不可更改。
这里,区块链网络102内被用来维护区块链,而区块链是由多个区块所组成的。多个交易的交易数据被哈希化并且存储在区块中。例如,对两个交易数据进行哈希处理得到两个哈希值,然后,对所得到的两个哈希值再次进行哈希处理以得到另一哈希值。重复该过程,直到对于要存储在区块中的所有交易,得到单个哈希值。该哈希值被称为Merkle根哈希,并且被存储在区块的头部。任何交易的更改都会导致其哈希值发生变化,最终导致Merkle根哈希值发生变化。
在本公开的实施例中,计算设备/系统106,108可分别用于表示对象提供方设备(或商品后台服务端)和对象分发服务端(或商品分发服务端)。也就是说,对象提供方设备和/或对象分发服务端可以作为区块链网络的节点来参与到针对对象分发处理的过程中。可附加或可替换地,对象提供方设备和/或对象分发服务端可以是在区块链网络之外的其他服务器或终端,而这些其他服务器或终端可以使用协议(例如,超文本传输协议安全(HTTPS))和/或使用远程过程调用(RPC)来与区块链网络通信,或者通过区块链网络进行通信,从而完成本公开的实施例的对象分发处理的过程。
图3示出了根据本公开的实施例的用于对象分发处理的方法(下文中也被称为对象分发处理方法)在一示例中的信号时序图。
如图3所示的流程300,在块301中,对象提供方设备106将待分发的对象信息发送至区块链节点102。这里,对象信息可以表示待分发商品或物品的信息(例如商品名称等),而对象提供方设备106可以表示许诺要分发商品或物品的商家所运营的服务器。示例性地,可以通过对象提供方的运营人员的操作而将对象信息上传至对象提供方设备106,然后对象提供方设备106将对象信息发送至区块链节点102,以请求将对象信息上链。
另外,对象提供方一般还期望能够自定义在对象分发业务中的诸如对象分发数量和分发开始时间之类的对象分发规则。此时,对象分发提供方可以通过对象提供方设备106向对象分发服务端108发送上述对象分发规则。但是,在本公开的一个示例中,为了提高信息传输安全性并防止信息被篡改,在块301中,对象提供方设备106还将对象分发规则发送至区块链节点102,以由区块链节点102根据对象分发规则生成区块链交易的交易内容,进而对象分发服务端108从区块链交易的交易内容中获得上述的对象分发规则。
接着,在块302中,区块链节点102根据对象信息和对象规则生成区块链交易,如在上下文中所描述的,区块链节点102可以表示在区块链网络中的任意节点(或节点设备)。
这里,区块链节点102可根据对象信息和对象分发规则分别生成不同的交易,例如对象交易和对象分发交易。对象分发交易被对象分发服务端108缓存以执行对应的对象分发任务,且对象交易内容中的对象信息被用于验证初始的对象信息未经篡改。此时,对象交易对应于第一交易哈希,而对象分发交易对应于第二交易哈希,且在对象分发交易的交易内容中可包含该第一交易哈希。
接着,在块303中,对象分发服务端108从区块链节点102获取对象分发交易内容。其中,对象分发交易内容还包括上述的诸如对象分发数量和分发开始时间之类的对象规则。
具体的,一方面,区块链节点102可以直接将对象分发交易的交易内容发送至对象分发服务端108。另一方面,区块链节点102可以将对象分发交易所对应的第二交易哈希值发送至对象分发服务端108,然后对象分发服务端108依据该第二交易哈希值从区块链节点获取对象分发交易内容,具体细节请参照下文相关描述。
接着,在块304中,在达到对象分发交易内容中的分发开始时间后,对象分发服务端108接收来自至少一个客户端40的至少一个对象分发请求。其中,对象分发请求包括客户端标识信息,而客户端标识信息可以表示对客户端或对应的操作用户进行唯一性标识的信息,例如用户ID、MAC地址或IP地址等。
在一些情况下,用户需要满足对象提供方所要求的条件后才具有资格来参与到对象分发业务活动中,例如需要将推广链接转发10次,或者预付定金1元。相应地,对象分发服务端108还可对所接收的至少一个对象分发请求进行资格过滤处理,以将不具有参与资格的非法对象分发请求过滤掉。示例性地,若对应用户的推广链接被转发的次数不足或其尚未预付定金,则对应的对象分发请求会被过滤掉。
接着,在块305中,对象分发服务端108基于至少一个对象分发请求的接收时间顺序和对象分发数量,确定至少一个对象分发消息。其中,对象分发消息包括客户端标识信息和第一交易哈希值,该客户端标识信息用于指示先前发送对象分发请求的多个客户端的其中一者或多者(取决于对象分发数量)。这里,对象分发服务端应也只会为率先到达的对应对象分发数量的请求所对应的客户端发送对象分发消息。在本公开的实施例中,通过对象分发交易内容来确定对象分发规则中的分发开始时间和对象分发数量,基于交易内容的不可篡改的特点能够避免分发开始时间和对象分发数量在对象分发业务的活动开始前遭到篡改,保障了业务能够稳定进行。
在本公开的一个示例中,可以基于至少一个对象分发请求的接收时间顺序,对所接收的至少一个对象分发请求进行排序。示例性地,对象分发服务端108每接收到一个对象分发请求,就为相应的对象分发请求依次进行排序(例如从1开始逐个递增),而若对象分发数量为10个,则确定对应于排序为1-10的对象分发请求所对应的客户端标识信息为目标用户。
这里,可以利用原子计数器来对所接收的对象分发请求按照对应的接收时间顺序进行排序。另外,在对象分发交易内容中可包括原子计数器,以在交易内容中针对各个对象分发请求的排序进行记录,基于交易数据的不可篡改性,更能保障分发业务的公平性。
进一步地,对象分发规则包括对象获取数目限制,而对象获取数目限制用于指示每个客户端所获取的对象的对象数目限制(例如一个客户端标识信息最多只能获得一个对象)。相应地,基于至少一个对象分发请求的接收时间顺序和对象分发数量确定至少一个对象分发消息包括:基于至少一个对象分发请求的接收时间顺序、对象分发数量和对象获取数目限制,确定至少一个对象分发消息。示例性地,若在对应对象分发数量的接收时间顺序内出现针对同一个客户端标识信息的多次对象分发请求,则依然也可只会为该客户端标识信息分配一个对象。
接着,在块306中,对象分发服务端108将至少一个对象分发消息中的各个对象分发消息发送给各个对象分发消息中的客户端标识信息所指示的客户端。另外,该对象分发消息还可以包括其他的获奖约定信息等,例如“恭喜您成功抢到XXX”。
接着,在块307中,在客户端40收到对象分发消息之后,向对象提供方设备106发送客户端标识信息,例如将包括客户端标识信息的对象分发消息发送给对象提供方设备106,以令对象提供方为目标用户提供对象。需说明的是,利用块307的步骤来提供对象的过程仅为示例,也可以利用其他步骤或方式来完成向用户提供对象。示例性地,对象分发服务端108可将各个对象分发消息中的客户端标识信息发送给对象提供方设备106。这样,对象提供方设备106便可根据各个客户端标识信息直接为相应的目标用户提供对象。
需说明的是,在目前相关技术的对象分发平台的服务器集群根据对象分发请求来确定目标用户的过程中,如图1所示,服务器集群中的每个服务器在收到对象分发请求之后均会访问预设置了对象分发数量(例如10个)的数据库,并通过减库存操作来确定对应目标用户的对象分发请求。但是,在发生高并发的对象分发请求的情况下,多个服务器同时对数据库进行减库存操作会增大数据库的压力,容易导致数据库系统宕机。另外,减库存操作对于不同服务器所接收到的对象分发请求的先后问题也无法说清楚,例如在同一时间有超过20个请求来数据库减库存,但库存数量只有10个。此时,数据库系统一般只能通过随机减库存的方式来确定目标用户而导致缺乏公平性,或者通过增加对象分发数量(例如商品库存数量)而导致对象超卖。
如上文中所描述的,在本公开的实施例中,通过排序的方式来标记针对多个对象分发请求的接收时间先后顺序,并根据排序后的多个对象分发请求与对象分发数量的对比来确定对应获奖用户。相比于去减库存来确定获奖用户的方式,本公开的实施例能有效缓解系统压力,另外根据计数来确定目标对象分发请求,也能够避免超卖的问题。
需说明的是,原子计数器(AtomicInteger)能够实现在高并发情况下计数的功能,目前主要被应用于流量控制来防止恶意流量攻击。而在本公开的实施例中,利用原子计数器来对至少一个对象分发请求按照接收时间顺序进行排序,并通过在交易内容中记录对应的计数。另外,当对象分发平台采用具有多台服务器的服务器集群时,则可以在多台服务器之间部署分布式原子计数器,从而实现对服务器集群中各台服务器所接收到的请求统一进行排序和计数。
图4示出了根据本公开的实施例的对象分发处理方法在一示例中的信号时序图。
在一些情况下,对象提供方会对待分发的对象信息进行数字签名加密,以提高信息的安全性。示例性地,可以通过私钥/公钥对中的私钥加密对象信息,并在对象分发消息中设置验证公钥。这样,当对象提供方收到含验证公钥的对象分发消息时,可以利用该验证公钥来解开数字签名,完成验证。
如图4所示的流程400,在块401中,对象提供方设备106获得私钥/公钥对,并利用该私钥/公钥对中的私钥加密对象信息,从而生成对应的数字签名(或对象信息签名)。这里,针对私钥/公钥对的类型或来源在此应不加限制,例如对象提供方设备106可以从任意的数字密钥平台来获得私钥/公钥对或自主创建私钥/公钥对。
接着,在块402中,对象提供方设备106可以将对象信息、对象信息签名、验证公钥和对象分发规则等信息发给区块链节点102。
接着,在块403中,区块链节点102根据从对象提供方设备106所接收的信息,诸如对象信息、对象信息签名、验证公钥和对象分发规则等信息,生成对象分发交易。这里,区块链节点102可根据对象信息签名和对象信息来生成对应于对象交易的第一交易哈希值,该第一交易哈希值是作为对象分发交易内容中的一部分,并且该对象分发交易也具有其所对应的第二交易哈希值。
接着,在块404中,区块链节点102将所生成的第二交易哈希值发送至对象分发服务端108。由此,对象分发服务端108基于第二交易哈希值来获取区块链中对象分发交易的交易内容。
接着,在块405中,对象分发服务端108在分发开始时间接收自至少一个客户端的至少一个对象分发请求。这里,分发开始时间可以是从所接收的对象分发交易内容中而得到的。
接着,在块406中,对象分发服务端108基于至少一个对象分发请求的接收时间顺序和对象分发数量,确定至少一个对象分发消息。这里,对象分发交易的内容中具有诸如对象分发数量和其他规则之类的对象分发规则,因此对象分发服务端108可以根据满足对象分发规则的对象分发请求来确定对象分发消息。
接着,在块407中,对象分发服务端108向目标用户所对应的客户端40发送对象分发消息。这里对象分发消息可以包括对应对象交易的第一交易哈希值和验证公钥。
这里,在客户端40拿到验证公钥之后,可以向对象提供方或对象分发平台请求验证,并提供相应的对象。另外,在对象提供方或对象分发平台所兑换的对象与先前所曾许诺的对象不一致时,用户需要找到合理的证据来维护自己的合法权益。
这样,在块408中,客户端40向区块链节点102发送第一交易哈希值。示例性地,客户端40可发送包含第一交易哈希值的对象交易至区块链节点102。这样,区块链节点102可通过对象分发消息中的交易哈希进行哈希验证找到相匹配的对象交易的交易内容中的对象信息和对象信息签名。
应该理解的是,区块链网络中的每个区块链节点均用于维护相同的针对一个或多个交易的数据,而已经被区块链网络的节点验证的交易通过哈希处理形成Merkle树。并且,当一个哈希值声称是Merkle树中存储的交易时,可以通过判断该哈希值是否与Merkle树的结构一致来进行快速验证。如果存在相匹配的哈希值,则可以通过哈希值找到对应的在Merkle树中所存储的对应交易的数据。
这样,当区块链节点102收到了第一交易哈希值时,可以通过快速验证找到该第一交易哈希值所对应的在Merkle树下的节点中的对象交易内容,例如对象信息、对象签名信息等(参照上述方式,区块链节点102可基于第二交易哈希值来获取对象分发交易的交易内容)。
接着,在块409中,区块链节点102将相匹配的交易下的对象信息和对象信息签名发给客户端40。
接着,在块410中,客户端可以通过对象分发消息中的验证公钥来对区块链所得到的对象信息签名进行验签,即基于验证公钥来解密对象信息签名,以得到所解密的对象信息。另外,基于从区块链所接收的对象信息,以及针对对象信息签名解密所得到的对象信息,能够有效验证对象提供方最初发布的初始对象信息并确定目标用户有正确的验证公钥。
容易理解的是,区块链能够保证数据区块中的交易内容是不可篡改或伪造的,同时该对象信息就是由对象提供方先前发送给区块链平台的。因此,当目标用户发现所得到的对象与对象提供方先前许诺的对象不一致时,可通过从区块链节点所返回的对象信息来作为证明,维护自己的合法权益,增强了对象分发业务的用户信任感。
在一些实施方式中,对象提供方设备106和/或对象分发服务端108可以是区块链网络中的区块链节点,或者存在分别专门为对象提供方设备106和对象分发服务端108提供区块链服务的区块链节点。这样,在对象提供方需要进行对象分发业务时,对象提供方设备106可以直接根据本地上传的对象信息和对象分发规则来生成对象交易和对象分发交易。这里,对象交易内容包括对象信息(或者,对象信息和对象信息签名),对象交易对应于第一交易哈希。另外,对象分发交易对应于第二交易哈希,且在对象分发交易内容中包括分发开始时间和对象分发数量。进而,对象分发服务端108能够基于对象分发交易而接收对象分发请求,并确定对应的目标用户。因此,对象提供方设备作为区块链节点而能够依据所上传的信息直接来生成区块链交易,且上链的信息数据是不可篡改的,保障了对象分发业务的公平性。
图5示出了根据本公开的实施例的对象分发处理方法500应用于商品抢购业务场景下在一示例中的信号时序图。
如图5所示的流程500,在块501中,商家在商品后台服务端106上传商品信息,并且商家可以提前准备一组私钥/公钥对,然后商品后台服务端106利用私钥/公钥对中的私钥对商品信息进行加密签名。示例性地,商品信息是“苹果手机一个”,然后对该商品利用私钥加密,从而得到对应的数字签名(sign)。
接着,在块502中,商品后台服务端106将商品信息和商品信息签名发送至区块链节点102请求上链。
接着,在块503中,区块链节点102根据商品信息签名和商品信息生成对应的商品交易TX1。
举例来说,在交易TX1所对应的交易内容如下表1所示的内容:
表1
相应地,此条交易TX1承载的信息经过哈希计算可以得到TX1的哈希(下文中也称为奖品Hash)是:
tx1=0xf7E62B3C48d09b0133b87E7312f4A4f6d2aBCe22。
接着,在块5041中,区块链节点102向商品后台服务端通知商品信息上链成功通知,这里商品信息上链成功通知中包含奖品Hash。
接着,在块5042中,商品后台服务端106将针对商品信息的抢购规则和验证中奖的规则,例如将验证公钥、抢购规则等,连同奖品Hash一起发送至区块链节点102,以请求上链。
接着,在块505中,区块链节点102根据验证公钥、奖品Hash和抢购规则等生成交易TX2。
举例来说,交易TX2所对应的交易内容如下表2所示的内容:
奖品Hash |
0xf7E62B3C48d09b0133b87E7312f4A4f6d2aBCe22 |
开始时间 |
2019-2-30 10:00:00 |
商品库存数量 |
10 |
验证公钥 |
62B3C48d09b0133b87E7312f4A4f6d2 |
原子计数器 |
如:incrKey |
其他规则 |
如:每个用户ID最多只能中一台 |
表2
相应地,此条交易TX2承载的信息经过哈希计算可以得到TX2的哈希:
tx2=0xe7cae62be1049ca29a5b468e6018ff4cfc6870bdfc6750541b8a223fda7d3ed0。进而,将该TX2的哈希发送给商品分发服务端108。
另外,区块链节点102在接收到验证公钥之后,还可以尝试用所接收的验证公钥和商品信息签名进行匹配验证,以保障商家上链的验证公钥能够解密对应的商品信息签名。
接着,在块506中,商品分发服务端108或抢购服务器集群中的每个服务器均在本地缓存在TX2的交易内容。示例性地,根据TX2的哈希tx2从区块链节点中读取对应数据区块中的内容,例如可以读取诸如奖品Hash、开始时间、商品数量、验证公钥、原子计数器和其他规则的交易内容信息。
接着,在块5071中,商品分发服务端108得到TX2交易内容中的分发开始时间,并根据分发开始时间来判断是否开始进行抢购活动。示例性地,如果当前时间为2019年02月30日的10点整,则开始进行抢购活动。
接着,在块5072中,商品分发服务端108接收自至少一个客户端40的商品分发请求(或抢购请求)。这里,每个抢购请求具有对应的客户端标识信息。应理解的是,商品分发服务端108可对所有抢购请求所对应的抢购资格进行筛选,从而滤除掉不具备资格的用户请求。
接着,在块508中,商品分发服务端108可以得到TX2交易内容中的或商品库存数量。
接着,在块509中,商品分发服务端108可根据商品库存数量、其他规则和分发开始时间来确定商品分发消息(或奖券消息)。这里,可以确定商品分发请求中的客户端标识信息所对应的用户信息或客户端信息,从而确定获奖用户。在本公开的实施例中,通过在所缓存的交易内容中获得商品分发规则,相比于用其他方式(例如直接从商品后台服务端106)中获得商品分发规则,基于交易内容的不可篡改的特点能够避免商品分发规则在抢购活动开始前遭到篡改。
这里,所有的目标商品分发请求都会访问一个分布式原子计数器,从而得到各个请求所对应的计数。示例性地,针对抢购请求的计数为:用户ID=Tony,计数值=1;用户ID=Jerry,计数值=2等。然后,根据计数值比对在商品分发服务端108本地缓存的TX2交易内容中的商品库存数量,从而判断用户ID是否中奖。相比于通过减库存的方式,本公开的实施例更能节约资源消耗,并还能够避免商品超卖的问题。
接着,在块510中,商品分发服务端108可将商品信息签名、验证公钥和交易哈希等发送至获奖用户所对应的客户端40。
示例性地,获奖用户所得到的奖券消息为如下表3所示的内容:
奖品Hash |
0xf7E62B3C48d09b0133b87E7312f4A4f6d2aBCe22 |
计数值 |
1 |
商品库存数量 |
10 |
验证公钥 |
62B3C48d09b0133b87E7312f4A4f6d2 |
表3
应理解的是,表3中的奖券消息的内容仅用作示例,其还可以包括更多的信息,例如抢购规则等;或者,其还可以包括更少的信息,例如可不包括商品库存数量等。
接着,在块511中,用户利用验证公钥到商家或抢购平台兑奖,例如,客户端40发送包括验证公钥的奖券消息至商品后台服务端106。这样,商品后台服务端106基于奖券消息中的验证公钥来完成数字签名验证,并为获奖用户发放奖品。
在一些实施方式中,若用户在兑奖时,商家反馈因商品信息签名不匹配无法兑奖或无法兑换到期望的奖品时,用户需要证明自己具有领奖资格并应当得到商家曾许诺的产品。这样,在块512中,客户端40将奖品Hash发送至区块链节点102,例如将包括奖品Hash的奖券消息发送至区块链节点102。进而,区块链节点102会根据奖券中的奖品Hash来找到对象交易TX1。
接着,在块513中,区块链节点将交易TX1中的内容(例如商品信息签名和商品信息)发送至客户端40。
接着,在块514中,客户端40可以利用奖券消息中的验证公钥来对商品信息签名进行验签。也就是,基于奖券中的验证公钥来解密商品信息签名,从而证明自己有正确的公钥,并且还可以通过从区块链所得到的商品信息来得出初始商品信息是否遭到篡改的结论。由此,所提供的基于区块链的抢购方案能够保障较好的公平性。
图6示出了根据本公开的实施例的用于对象分发处理的装置(下文中也称为对象分发处理装置)在一示例中的结构框图。
如图6所示,对象分发处理装置600包括分发交易内容获取单元610、对象分发请求接收单元620、对象分发消息确定单元630、对象分发消息发送单元640和资格过滤单元650。
分发交易内容获取单元610被配置为从区块链网络中的区块链节点获取对象分发交易内容,所述对象分发交易内容包括针对待分发对象的对象信息的第一交易哈希值以及对象分发规则,所述对象分发规则包括分发开始时间和对象分发数量。分发交易内容获取单元610的操作可以参照上面参考图3描述的块303的操作。
对象分发请求接收单元620被配置为在达到所述分发开始时间后,接收来自至少一个客户端的至少一个对象分发请求,所述对象分发请求包括客户端标识信息。对象分发请求接收单元620的操作可以参照上面参考图3描述的块304的操作。
对象分发消息确定单元630被配置为基于所述至少一个对象分发请求的接收时间顺序和所述对象分发数量,确定至少一个对象分发消息,所述对象分发消息包括客户端标识信息和所述第一交易哈希值。对象分发消息确定单元630的操作可以参照上面参考图3描述的块305的操作。
对象分发消息发送单元640被配置为将所述至少一个对象分发消息中的各个对象分发消息发送给所述各个对象分发消息中的客户端标识信息所指示的客户端。对象分发消息确定单元640的操作可以参照上面参考图3描述的块306的操作。
资格过滤单元650被配置为对所述至少一个对象分发请求进行资格过滤处理。此时,对象分发消息确定单元630可被配置为基于所述经过资格过滤处理后的至少一个对象分发请求的接收时间顺序和所述对象分发数量,确定至少一个对象分发消息。资格过滤单元650的操作可以参照上面参考图3描述的块304中的相关操作。
应理解的是,上述对象分发处理装置600的结构仅用于示例,以及对象分发处理装置600可仅具有上述块610-650中的部分块,例如对象分发处理装置600内可不设置资格过滤单元650。
进一步地,所述对象分发规则包括对象获取数目限制,所述对象获取数目限制用于指示每个客户端所获取的对象的对象数目限制,以及所述对象分发消息确定单元630被配置为:基于所述至少一个对象分发请求的接收时间顺序、所述对象分发数量和所述对象获取数目限制,确定所述至少一个对象分发消息。
进一步地,所述对象分发交易接收单元620被配置为:从所述区块链节点获取第二交易哈希值,所述第二交易哈希值是针对所述对象分发交易的哈希值;以及基于所述第二交易哈希值,从所述区块链节点获取所述对象分发交易。
进一步地,所述对象分发交易内容包括私钥/公钥对中的公钥,所述第一交易哈希值是针对待分发对象的对象信息和对象信息签名的哈希值,所述对象信息签名是使用所述私钥/公钥对中的私钥来对所述对象信息进行加密后得到的,其中,所述对象分发消息包括所述公钥,以供在所述客户端处进行对象信息验证。
图7示出了根据本公开的实施例的对象分发消息确定单元630在一示例中的结构框图。
如图7所示,对象分发消息确定单元630包括排序模块631和对象分发消息确定模块632。这里,在对象分发交易内容中包括原子计数器。排序模块631被配置为基于所述至少一个对象分发请求的接收时间顺序,利用所述原子计数器来对所述至少一个对象分发请求进行排序。对象分发消息确定模块632被配置为根据排序后的至少一个对象分发请求以及所述对象分发数量,确定所述至少一个对象分发消息。排序模块631和对象分发消息确定模块632的操作可以参照上面参考图3中块305中的相关操作。
如图2-6所示,对象分发处理系统100包括对象提供方设备106、对象分发服务端108和客户端40。另外,区块链节点102可以是在对象分发处理系统100的外部,而由对象分发处理系统调用以完成相应的对象分发处理业务。
对象提供方设备106被配置为向区块链网络中的区块链节点发送待分发对象的对象信息以及对象分发交易内容,以由该区块链节点分别根据所述对象信息和对象分发交易内容生成第一交易哈希值和第二交易哈希值,所述对象分发交易内容包括所述第一交易哈希值以及对象分发规则,所述对象分发规则包括分发开始时间和对象分发数量。
对象分发服务端108包括如上所述的对象分发处理装置600。
至少一个客户端40被配置为向所述对象分发服务端发送对象分发请求。
进一步地,所述对象分发交易内容包括私钥/公钥对中的公钥,所述第一交易哈希值是针对待分发对象的对象信息和对象信息签名的哈希值,所述对象信息签名是在所述对象提供方设备处使用所述私钥/公钥对中的私钥来对所述对象信息进行加密后得到的。其中,所述对象分发消息包括所述公钥,客户端40被配置为使用所述公钥来进行对象信息验证。
进一步地,对象提供方设备106和/或对象分发服务端108是所述区块链网络中的区块链节点。
如上参照图2到图7,对根据本公开的用于对象分发处理的方法、装置及系统的实施例进行了描述。在以上对方法实施例的描述中所提及的细节,同样适用于本公开的装置及系统的实施例。上面的用于对象分发处理的装置及系统可以采用硬件实现,也可以采用软件或者硬件和软件的组合来实现。
图8示出了根据本公开的实施例的用于对象分发处理的计算设备800的硬件结构图。如图8所示,计算设备800可以包括至少一个处理器810、存储器(例如非易失性存储器)820、内存830和通信接口840,并且至少一个处理器810、存储器820、内存830和通信接口840经由总线860连接在一起。至少一个处理器810执行在存储器中存储或编码的至少一个计算机可读指令(即,上述以软件形式实现的元素)。
在一个实施例中,在存储器中存储计算机可执行指令,其当执行时使得至少一个处理器810:从区块链网络中的区块链节点获取对象分发交易内容,所述对象分发交易内容包括针对待分发对象的对象信息的第一交易哈希值以及对象分发规则,所述对象分发规则包括分发开始时间和对象分发数量;在达到所述分发开始时间后,接收来自至少一个客户端的至少一个对象分发请求,所述对象分发请求包括客户端标识信息;基于所述至少一个对象分发请求的接收时间顺序和所述对象分发数量,确定至少一个对象分发消息,所述对象分发消息包括客户端标识信息和所述第一交易哈希值;以及将所述至少一个对象分发消息中的各个对象分发消息发送给所述各个对象分发消息中的客户端标识信息所指示的客户端。
应该理解,在存储器820中存储的计算机可执行指令当执行时使得至少一个处理器810进行本公开的各个实施例中以上结合图2-7描述的各种操作和功能。
在本公开中,计算设备800可以包括但不限于:个人计算机、服务器计算机、工作站、桌面型计算机、膝上型计算机、笔记本计算机、移动计算设备、智能电话、平板计算机、蜂窝电话、个人数字助理(PDA)、手持装置、消息收发设备、可佩戴计算设备、消费电子设备等等。
根据一个实施例,提供了一种比如机器可读介质的程序产品。机器可读介质可以具有指令(即,上述以软件形式实现的元素),该指令当被机器执行时,使得机器执行本公开的各个实施例中以上结合图1-8描述的各种操作和功能。具体地,可以提供配有可读存储介质的系统或者装置,在该可读存储介质上存储着实现上述实施例中任一实施例的功能的软件程序代码,且使该系统或者装置的计算机或处理器读出并执行存储在该可读存储介质中的指令。
在这种情况下,从可读介质读取的程序代码本身可实现上述实施例中任何一项实施例的功能,因此机器可读代码和存储机器可读代码的可读存储介质构成了本发明的一部分。
可读存储介质的实施例包括软盘、硬盘、磁光盘、光盘(如CD-ROM、CD-R、CD-RW、DVD-ROM、DVD-RAM、DVD-RW、DVD-RW)、磁带、非易失性存储卡和ROM。可选择地,可以由通信网络从服务器计算机上或云上下载程序代码。
本领域技术人员应当理解,上面公开的各个实施例可以在不偏离发明实质的情况下做出各种变形和修改。因此,本发明的保护范围应当由所附的权利要求书来限定。
需要说明的是,上述各流程和各系统结构图中不是所有的步骤和单元都是必须的,可以根据实际的需要忽略某些步骤或单元。各步骤的执行顺序不是固定的,可以根据需要进行确定。上述各实施例中描述的装置结构可以是物理结构,也可以是逻辑结构,即,有些单元可能由同一物理实体实现,或者,有些单元可能分由多个物理实体实现,或者,可以由多个独立设备中的某些部件共同实现。
以上各实施例中,硬件单元或模块可以通过机械方式或电气方式实现。例如,一个硬件单元、模块或处理器可以包括永久性专用的电路或逻辑(如专门的处理器,FPGA或ASIC)来完成相应操作。硬件单元或处理器还可以包括可编程逻辑或电路(如通用处理器或其它可编程处理器),可以由软件进行临时的设置以完成相应操作。具体的实现方式(机械方式、或专用的永久性电路、或者临时设置的电路)可基于成本和时间上的考虑来确定。
上面结合附图阐述的具体实施方式描述了示例性实施例,但并不表示可以实现的或者落入权利要求书的保护范围的所有实施例。在整个本说明书中使用的术语“示例性”意味着“用作示例、实例或例示”,并不意味着比其它实施例“优选”或“具有优势”。出于提供对所描述技术的理解的目的,具体实施方式包括具体细节。然而,可以在没有这些具体细节的情况下实施这些技术。在一些实例中,为了避免对所描述的实施例的概念造成难以理解,公知的结构和装置以框图形式示出。
本公开内容的上述描述被提供来使得本领域任何普通技术人员能够实现或者使用本公开内容。对于本领域普通技术人员来说,对本公开内容进行的各种修改是显而易见的,并且,也可以在不脱离本公开内容的保护范围的情况下,将本文所定义的一般性原理应用于其它变型。因此,本公开内容并不限于本文所描述的示例和设计,而是与符合本文公开的原理和新颖性特征的最广范围相一致。