一种交易核算方法及客户端与流程

文档序号:13935041
一种交易核算方法及客户端与流程

本发明涉及视频播放技术领域,特别涉及一种交易核算方法及客户端。



背景技术:

目前,视频直播是利用互联网及流媒体技术进行直播。直播平台为了增强其收入以及增加观众之间的互动,目前直播平台都有打赏机制,观众可以打赏给主播一些礼物以表示对主播内容的支持。目前直播平台服务器会记录每一笔交易并对每一笔交易进行核对。

但是目前对于某些情况下,服务器也会有漏洞(bug),也会导致最终的交易有问题,所以需要一种不依赖于服务器这种中心机构的管理方法,进行无中心化的统计方法,以对每笔交易进行一个核对的方法,同时也可以校验服务器的交易记录是否有问题。



技术实现要素:

本发明实施例提供了一种交易核算方法及客户端,以解决目前直播平台中每笔交易服务器均需要全程参与记录及核对,过于依赖服务器的问题。

第一方面,本申请提供了一种交易核算方法,,该方法包括:

在直播平台目标房间的客户端产生第一交易时,所述客户端根据预置的初始区块链生成记录有所述第一交易记录的第一区块链;

所述客户端将所述第一区块链发送到所述目标房间内的其他客户端,以在所述其他客户端同步所述第一区块链;

在所述客户端接收到所述服务器下发的统计交易记录指令时,所述客户端从所述第一区块链中提取交易数据发送给所述服务,以使得所述服务器统计所述目标房间的所有客户端上报的交易数据,确定所述目标房间内最合法的交易数据。

进一步的,所述方法还包括:

在所述客户端再次产生第二交易时,根据所述第一区块链生成记录有所述第二交易记录的第二区块链;

所述客户端将所述第二区块链发送到所述目标房间内的其他客户端,以在所述其他客户端同步所述第二区块链。

进一步的,所述方法还包括:

所述客户端接收所述目标房间内目标客户端发送的第三区块链,所述第三区块链为所述目标客户端在产生交易时生成的;

所述客户端保存所述第三区块链链,以使得所述客户端中保存有所述目标房间内的所有交易数据。

进一步的,所述方法还包括:

所述客户端在接收到所述目标房间内目标客户端发送的第三区块链时,校验所述第三区块链的合法性。

进一步的,所述第一区块链中包括区块链的块号、前一个区块链的哈希值、计算新区块链需要的key值、当前时间的时间戳、区块链功能数据及当前区块链哈希值,所述区块链功能数据包括所述目标房间的房间号,所述客户端的用户标识、所述客户端的标志以及所述客户端当前交易数据。

第二方面,本申请提供一种客户端,该客户端包括:

第一生成模块,用于在直播平台目标房间的客户端产生第一交易时,根据预置的初始区块链生成记录有所述第一交易记录的第一区块链;

第一发送模块,用于将所述第一区块链发送到所述目标房间内的其他客户端,以在所述其他客户端同步所述第一区块链;

第二发送模块,用于在所述客户端接收到所述服务器下发的统计交易记录指令时,从所述第一区块链中提取交易数据发送给所述服务,以使得所述服务器统计所述目标房间的所有客户端上报的交易数据,确定所述目标房间内最合法的交易数据。

进一步的,所述客户端还包括:

第二生成模块,用于在所述客户端再次产生第二交易时,根据所述第一区块链生成记录有所述第二交易记录的第二区块链;

第三发送模块,用于将所述第二区块链发送到所述目标房间内的其他客户端,以在所述其他客户端同步所述第二区块链。

进一步的,所述客户端还包括:

接收模块,用于接收所述目标房间内目标客户端发送的第三区块链,所述第三区块链为所述目标客户端在产生交易时生成的;

保存模块,用于保存所述第三区块链链,以使得所述客户端中保存有所述目标房间内的所有交易数据。

进一步的,所述第一区块链中包括区块链的块号、前一个区块链的哈希值、计算新区块链需要的key值、当前时间的时间戳、区块链功能数据及当前区块链哈希值,所述区块链功能数据包括所述目标房间的房间号,所述客户端的用户标识、所述客户端的标志以及所述客户端当前交易数据。

第三方面,本发明还提供一种客户端,包括:存储器,处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其中,所述处理器执行所述计算机程序时可以实现第一方面中任一所述的方法。

第四方面,本发明还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现第一方面中任一所述的方法。

本发明实施例在目标房间的客户端产生第一交易时,客户端根据预置的初始区块链生成记录有第一交易记录的第一区块链;客户端将第一区块链发送到所目标房间内的其他客户端,以在所述其他客户端同步第一区块链;在客户端接收到服务器下发的统计交易记录指令时,客户端从第一区块链中提取交易数据发送给所述服务,以使得服务器统计目标房间的所有客户端上报的交易数据,确定目标房间内最合法的交易数据。本发明实施例中在目标房间内一个客户端发生交易时,会生成一个记录有该交易的新区块链,并将该新区块链发送到目标房间内的其他客户端,使得目标房间内所有客户端的交易记录同步,对于目标房间内的所有交易,服务器不需要记录、核对及统计,可以极大的减轻服务器的计算压力,也更符合无中心化思想。

附图说明

图1是本发明实施例中交易核算方法的一个实施例示意图;

图2是图1所示基础上的本发明实施例中交易核算方法的另一个实施例示意图;

图3是图1所示基础上的本发明实施例中交易核算方法的另一个实施例示意图;

图4是本发明实施例中客户端的一个实施例示意图;

图5是本发明实施例中客户端的另一个实施例示意图;

图6是本发明实施例中客户端的另一个实施例示意图;

图7是本发明实施例中客户端的另一个实施例示意图。

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。

本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

本发明实施例中,服务器即即直播平台对应的服务器,客户端可以是用户终端,例如手机、平板电脑等智能终端,目标房间为直播平台上主播建立的直播间,目标客户端为进入该目标直播间的客户端。区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本。

请参阅图1,本发明实施例中交易核对方法的一个实施例包括:

S101、在目标房间的客户端产生第一交易时,客户端根据预置的初始区块链生成记录有第一交易记录的第一区块链;

本实施例中,直播平台目标房间内的每个客户端在初始状态都保存有初始区块链,在目标房间内的客户端没进行一次交易时,即会生成新包含该次交易数据的区块链,并发送同步到该目标房间内的其他客户端,以使得该目标房间内所有客户端都记录有该目标房间内的所有交易数据。

S102、客户端将第一区块链发送到目标房间内的其他客户端,以在其他客户端同步第一区块链;

S103、在客户端接收到服务器下发的统计交易记录指令时,客户端从第一区块链中提取交易数据发送给所述服务,以使得服务器统计目标房间的所有客户端上报的交易数据,确定目标房间内最合法的交易数据。

本发明实施例在目标房间的客户端产生第一交易时,客户端根据预置的初始区块链生成记录有第一交易记录的第一区块链;客户端将第一区块链发送到所目标房间内的其他客户端,以在所述其他客户端同步第一区块链;在客户端接收到服务器下发的统计交易记录指令时,客户端从第一区块链中提取交易数据发送给所述服务,以使得服务器统计目标房间的所有客户端上报的交易数据,确定目标房间内最合法的交易数据。本发明实施例中在目标房间内一个客户端发生交易时,会生成一个记录有该交易的新区块链,并将该新区块链发送到目标房间内的其他客户端,使得目标房间内所有客户端的交易记录同步,对于目标房间内的所有交易,服务器不需要记录、核对及统计,可以极大的减轻服务器的计算压力,也更符合无中心化思想。

在本发明一些实施例中,如图2所示,本发明实施例中方法进一步还可以包括:

S104、在客户端再次产生第二交易时,根据第一区块链生成记录有所述第二交易记录的第二区块链;

S105、客户端将所述第二区块链发送到目标房间内的其他客户端,以在所述其他客户端同步第二区块链。

这样,在再次发生新的交易时,客户端即根据之前生成的第一区块链生成新的第二区块链,在第二区块链中记录有该第二交易记录,并同步到其他客户端,这样能保证目标房间内交易数据同步。

在本发明另一些实施例中,如图3所示,本发明实施例中方法还可以包括:

S106、客户端接收目标房间内目标客户端发送的第三区块链;

其中,该第三区块链为目标客户端在产生交易时生成的,具体的,在该目标房间内,目标客户端同步该第二区块链后未发生交易时,则该第三区块链为该目标客户端根据第二区块链生成的,该第三区块链中记录有目标客户端该次交易记录。

S107、客户端保存第三区块链链,以使得所述客户端中保存有所述目标房间内的所有交易数据。

具体的,客户端保存第三区块链,即替代了之前保存的第二区块链,使得客户端中保存了目标房间中所有的最新交易记录。

本实施例中进一步客户端在其他客户端发生交易时,也会更新保存的区块链,使得客户端始终保存目标房间中所有的最新交易记录。

本发明实施例中,所述第一区块链、所述第二区块链、所述第三区块链、数据结构相同;

该数据结构中包括区块链的块号、前一个区块链的哈希值、计算新区块链需要的key值、当前时间的时间戳、区块链功能数据及当前区块链哈希值,所述区块链功能数据包括所述目标房间的房间号,所述客户端的用户标识、所述客户端的标志以及客户端当前交易数据。

初始区块链,初始区块链由于是第一个区块链,初始区块链的区块号为0,时间戳则为当前时间,上一个区块链的hash值为0。

具体的,本发明实施例中,上述数据结构具体实现如下:

Struct BlockData{

Int64index;

String previousHash;

Int64;

String;

String data;

String hash;

}

其中,index用来表示区块链的块号,通常从0开始递增;previousHash表示前一个区块链的HASH值;timestamp表示时间戳;key表示计算新区块链需要的key值;data则表示一些数据的拼接(即上述区块链功能数据),这个data字段的内容则是依据区块链所需要完成的功能所设计,针对于本发明实施例,data可以包括目标房间的房间号,客户端的用户标识、客户端的标志以及客户端当前交易数据。在交易为用户打赏主播时,客户端当前交易数据进一步可以包括客户端当前具有的礼物总额度,当前打赏的礼物数量,当前交易的打赏者用户标识uid,当前交易的接收打赏者用户标识uid,当前时间戳以前加密后的值;hash表示当前这个区块链的内容的hash值。有了这个区块链的设计后,当服务器收到客户端新产生的区块链后,则可以通过对里面的数据进行校验。

本发明实施例中同时设计了区块链中新区块链生成的算法,首先初始的区块链(如第一区块链)是服务器生成的,服务器会下发到到直播平台目标房间的客户端,那么该目标房间的客户端收到初始区块链后,需要算法来生成下一个区块链。具体实现如下:首先已经获取到了上一个区块链的数据结构,下一个区块链则是依据上一个区块链的数据进行生成。

本发明实施例中,上述步骤S104根据所述第一区块链生成记录有所述第二交易记录的第二区块链具体可以包括:

根据所述第一区块链的块号加1,得到所述第二区块链的块号;

获取当前时间;

计算所述第一区块链的哈希值,作为所述第二区块链中前一个区块链的哈希值;

获取所述目标房间的房间号,所述客户端的用户标识、所述客户端的标志及当前第二交易数据,得到所述第二区块链功能数据;

对所述第二区块链的块号、当前时间、所述第一区块链的哈希值及所述第二区块链功能数据进行哈希计算,得到所述第二区块链的哈希值;

根据所述第二区块链的块号、当前时间、所述第一区块链的哈希值、所述第二区块链的哈希值及所述第二区块链功能数据,按照所述数据结构生成所述第二区块链。

具体的,本发明实施例中,假设上一个区块链的名字是prevblock,新生成的区块链的名字是newblock,具体生成新的区块链的过程如下:

(1)计算新的区块链的区块号。

Newblock.index=prevblock.index+1;

即新的区块链的块号是当前块号加1。

(2)计算新的区块链的时间戳。

Newblock.timestamp=time();

新区块链的时间戳则是获取当前的时间。

(3)计算新的区块链的上一个区块链的hash值。

Newblock.previousHash=prevblock.hash;

新区块链的上一个区块链的hash值则是获取的上一个区块链的hash。

(4)计算新的区块链的上一个区块链的key值。

Newblock.key=prevblock.key;

新区块链的上一个区块链的key值则是获取的上一个区块链的key。

(5)计算新的区块链功能数据。

仍以打赏直播平台房间主播为例。

Newblock.data=giftnum+senduid+givegiftnum+receiveuid

其中giftnum则是当前客户端的礼物数量的剩余量,senduid则是当前客户端的用户标识uid,givegiftnum则是打赏的礼物数量,receiveuid则是被打赏的客户端的uid。

Newblock.data=AES.encrypt(Newblock.data,Newblock.key);

新区块链的data数据则是由上面的所有数据一起使用加密算法AES来对数据进行进一步的加密,其中使用的key值则是服务器下发的key值。当然加密算法也可以使用更为复杂的加密算法。

(6)计算新的区块链的hash值。

Newblock.hash=HASH(index+previousHash+timestamp+data+key);

新区块链的hash值则是有新区块链的index字段和previousHash字段和timestamp字段和data字段和key字段。

本发明实施例中,哈希值对应的哈希(HASH)算法统一,该HASH算法可以是SHA-256算法,当然也可以是其他HASH算法,例如SHA-1等,此处不作限定。

至此,通过上述步骤就实现了通过一个区块链生成一个新的区块链的算法。而本发明实施例中,客户端通过接收第一区块链生成第二区块链时,即采用上述步骤实现。

本发明实施例中,不管是客户端还是服务器,当其收到一个区块链时,首先都会对区块链进行合法性校验,以判断当前的区块链是否是合法的,以防止黑客伪造区块链,或者区块链在网络中传输被修改等因素。所以每个区块链都需要进行完整性校验。因此,本发明实施例中方法还可以进一步包括:

所述客户端在接收到所述目标房间内目标客户端发送的第三区块链时,校验所述第三区块链的合法性。

本发明实施例中,客户端对接收到的区块链进行校验的步骤具体可以包括:假设上一个区块链的名字是prevblock,然后收到了一个新生成的区块链的名字是newblock。

(1)首先判断其index是否正确。

Newblock.index!=prevblock.index+1;

如果新的区块链的区块号不是上一个区块的区块号加1,则说明新的区块链不合法,直接返回区块链错误信息。

(2)判断区块链的hash值。

Newblock.previousHash!=prevblock.hash

如果新的区块链的上一个区块链的hash值不等于上一个区块链的hash值则认为新的区块链不合法,直接返回区块错误信息。

(3)判断新的区块链的hash值。

新的区块链的hash值是新区块链的整个数据的hash结果。

HASH(Newblock.index+Newblock.previousHash+Newblock.timestamp+Newblock.data+Newblock.key)!=Newblock.hash;

如果新的区块链的整个区块链的数据的hash值不等于新的区块链hash值,则认为新的区块链不合法,直接返回区块链错误信息。

(4)判断新的区块链的data值。

新的区块链的data值是通过加密算法将数据进行加密的。在此步骤则会解密数据来判断数据的合法性。

Newblock.data=AES.decrypt(Newblock.data,Newblock.key);

此时将data字段进行解密后从而得到原始的data数据,从data中则可以得知其giftnum、senduid、givegiftnum、receiveuid,然后可以判断是否giftnum是大于givegiftnum的。

下面介绍本发明实施例中客户端的实施例。

请参阅图4,为本发明实施例中客户端的一个实施例示意图,该客户端包括:

第一生成模块401,用于在所述目标房间的客户端产生第一交易时,根据预置的初始区块链生成记录有所述第一交易记录的第一区块链;

第一发送模块402,用于将所述第一区块链发送到所述目标房间内的其他客户端,以在所述其他客户端同步所述第一区块链;

第二发送模块403,用于在所述客户端接收到所述服务器下发的统计交易记录指令时,从所述第一区块链中提取交易数据发送给所述服务,以使得所述服务器统计所述目标房间的所有客户端上报的交易数据,确定所述目标房间内最合法的交易数据。

进一步的,如图5所示,所述客户端还包括:

第二生成模块404,用于在所述客户端再次产生第二交易时,根据所述第一区块链生成记录有所述第二交易记录的第二区块链;

第三发送模块405,用于将所述第二区块链发送到所述目标房间内的其他客户端,以在所述其他客户端同步所述第二区块链。

进一步的,如图6,所述客户端还包括:

接收模块406,用于接收所述目标房间内目标客户端发送的第三区块链,所述第三区块链为所述目标客户端在产生交易时生成的;

保存模块407,用于保存所述第三区块链链,以使得所述客户端中保存有所述目标房间内的所有交易数据。

进一步的,所述第一区块链中包括区块链的块号、前一个区块链的哈希值、计算新区块链需要的key值、当前时间的时间戳、区块链功能数据及当前区块链哈希值,所述区块链功能数据包括所述目标房间的房间号,所述客户端的用户标识、所述客户端的标志以及所述客户端当前交易数据。

本发明实施例中还提供一种客户端,请参见图7,所述客户端包括:

存储器701,处理器702及存储在所述存储器上并可在所述处理器上运行的计算机程序703,其中,所述处理器702执行所述计算机程序703时可以实现上述交易核算方法。

需要说明的是,本申请涉及的客户端包括但不限于是:移动终端(手机、智能手机、PAD、笔记本电脑等等)、固定终端(计算机)。

为了便于说明,仅示出了与本发明实施例相关的部分,具体技术细节未揭示的,请参照本发明实施例方法部分。存储器701可用于存储计算机程序703,上述计算机程序包括软件程序、模块和数据,处理器702通过运行执行存储在存储器701的计算机程序703,从而执行客户端的各种功能应用以及数据处理。

在具体的实施过程中,存储器701可用于存储软件程序以及模块,处理器702通过运行存储在存储器701的软件程序以及模块,从而执行客户端的各种功能应用以及数据处理。存储器701可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(例如游戏类应用程序、聊天类应用程序)等;存储数据区可存储根据客户端的使用所创建的数据(游戏配置数据、音频数据)等。此外,存储器701可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。处理器702是客户端的控制中心,利用各种接口和线路连接整个客户端的各个部分,通过运行或执行存储在存储器701内的软件程序和/或模块,以及调用存储在存储器701内的数据,执行客户端的各种功能和处理数据,从而对客户端进行整体监控。可选的,处理器702可包括一个或多个处理单元;优选的,处理器702可集成应用处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等。

本发明实施例还提供一种计算机可读存储介质,其中,该计算机可读存储介质可存储有程序,该程序执行时包括上述方法实施例中记载的交易核算方法的部分或全部步骤。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

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