基于区块链的数据处理方法、装置及节点网络与流程

文档序号:20020168发布日期:2020-02-25 11:29阅读:296来源:国知局
基于区块链的数据处理方法、装置及节点网络与流程

本申请涉及区块链技术领域,尤其涉及一种基于区块链的数据处理方法、装置及区块链节点网络、运行器和可读存储介质。



背景技术:

近年,由于具有去中心化、不可篡改性、过程透明、可追踪回溯等显著特点,区块链技术得以广泛传播与应用。在区块链的实际应用过程中,通常会遇到海量的交易数据,这些交易数据经过验证后,将被区块链网络写入到区块链之中,以实现区块链的功能。

但是,在处理海量数据时,区块链(尤其公用链)却容易遭遇处理能力瓶颈,影响区块链技术的“落地”。比如,目前较为火热的“王者荣耀”网络游戏,玩家操作的终端设备与处于网络侧的游戏服务器网络之间,存在高频交互行为:玩家打一局“王者荣耀”,终端设备与服务器之间平均每秒交互次数达3次,打一局moba游戏(multiplayeronlinebattlearena,多人在线战术竞技游戏),终端设备与服务器之间交互的平均次数,每秒可以高达7次。然而,在处理高频交互行为产生的数据时,目前采用区块链技术(公用链)的网络游戏,显得“无能为力”,且推进发展速度极为缓慢,即便采用最先进的eos(区块链3.0时代)部署游戏网络,在用户支付gas(公链执行交易所需要的燃料费用)后,其tps(transactionspersecond,每秒交易量)也仅能达到每秒平均2次,完全无法满足现实应用对tps的要求。现有技术中存在各种提高tps次数的做法,以图改善“窘境”,但收效甚微,仍旧不能满足现实需要,阻碍了区块链技术的广泛应用,尤其在网络游戏这类高频交互行为的场景之下,情况更为突出。



技术实现要素:

本申请实施例提供一种基于区块链的数据处理方法、装置以及节点网络等,用于解决或改善现有技术中区块链tps不能满足高频交互需求的问题。

一方面,本申请实施例提供的基于区块链的数据处理方法包括:

节点网络利用功能程序处理数据处理请求,获得处理结果,所述功能程序为节点网络根据业务id从分布式资源存储系统中获得的,所述业务id包含在节点网络接收的终端设备与节点网络之间建立连接的连接请求中;

节点网络对所述处理结果进行验证,并将验证通过的处理结果进行存储;

当接收到预定指令后,节点网络将存储的所述处理结果写入与节点网络对应的区块链中。

另一方面,本申请实施例提供的节点网络,包括:一个或多个逻辑节点、多个监督节点和多个存储节点,其中:

所述逻辑节点,用于根据业务id从分布式资源存储系统中获得的功能程序,并利用功能程序处理数据处理请求,获得处理结果,并将处理结果发送给监督节点进行验证,所述业务id包含在节点网络接收的终端设备与节点网络之间建立连接的连接请求中;在监督节点对处理结果进行验证通过后,将验证通过的处理结果写入存储节点;以及当接收到预定指令后,将存储的所述处理结果写入与节点网络关联的区块链中;

所述监督节点,用于对需要验证的所述处理结果进行验证;

所述存储节点,用于存储验证通过的处理结果。

再一方面,本申请实施例提供了一种网络游戏数据的处理方法,该方法包括:

终端设备向网络游戏服务器网络中的引导节点服务器发送登录请求,所述登录请求中包含游戏id和玩家id;

所述引导节点服务器向网络游戏服务器网络中的中心节点服务器转发所述登录请求;

所述中心节点服务器向所述终端设备分配网络游戏服务器网络中服务器,作为逻辑节点服务器和监督节点服务器,并将分配的逻辑节点服务器反馈给引导节点服务器,以便所述引导节点服务器向所述终端设备同步所述逻辑节点服务器信息;以及向逻辑节点服务器下发随机数;

所述逻辑节点服务器根据所述游戏id从分布式资源存储系统中获取所述游戏的逻辑脚本代码;

所述终端设备向所述引导节点服务器发送断开连接信息,以便断开与引导节点服务器之间的连接,建立与逻辑节点服务器之间的长连接;

所述逻辑节点服务器根据所述玩家id从服务于所述网络游戏服务器网络的区块链中读取出该玩家的玩家数据,并利用逻辑脚本代码根据玩家数据对数据处理请求进行处理,得到玩家当前数据;并将玩家当前数据绑定所述随机数后发送给网络游戏服务器网络中的监督节点服务器进行验证;

所述监督节点服务器对绑定随机数的所述玩家当前数据进行验证,验证通过后向逻辑节点服务器发送确认和签名信息;

所述逻辑节点服务器收到的确认和签名信息满足预定条件时,向网络游戏服务器网络中的存储节点服务器进行存储;当接收到预定指令后,所述逻辑节点服务器将存储的所述玩家当前数据写入服务于所述网络游戏服务器网络的区块链。

又一方面,本申请实施例提供的运行器,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如第一方面所述的方法的步骤。

再一方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面所述的方法的步骤。

本申请实施例采用的上述至少一个技术方案能够达到以下有益效果:

本申请实施例提供的技术方案在节点网络范围内对数据处理请求的处理结果进行验证和存储,当接收到预定指令后,才将至少两个处理结果写入到节点网络对应的区块链中。与现有技术相比,由于并非每产生出一个处理结果后就直接、立即将其写入节点网络对应的区块链,而是在节点网络中进行先存储,并通过验证机制确保存储的处理结果能够得到区块链写链的部分或全部效果,而当接收到预定指令后,才将累计的处理结果或者累计的处理结果中的一部分写入到节点网络对应的区块链之中,保证了区块链写入操作次数小于处理结果的数量,进而达到降低对区块链tps需求程度,同时还表现出与每次写入区块链的效果。此外,由于本申请实施例在同等情况下,减少了区块链的写入次数,避免了对gas的消耗,从而提高了经济效益。再者,本申请实施例的节点网络作为与区块链对接的全新的网络,不再受区块链写入能力的瓶颈限制,加之用于处理数据处理请求的程序代码来自分布式资源存储系统,而非来自区块链,从而使得第三方可以自由部署数据处理网络,有利于增强这类处理系统的灵活性、扩展性以及通用性。

附图说明

此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:

图1为区块链组织结构的一种示意图;

图2a为本申请基于区块链的数据处理方法的一个实施例的示意图;

图2b为本申请节点网络与外部组成部分连接关系示意图;

图3为本申请节点网络的一种结构示意图;

图4a为本申请基于区块链的网络游戏数据处理方法流程图;

图4b为本申请基于区块链的网络游戏数据处理信令图;

图4c示出了网络游戏的场景(laya云网络);

图5为本申请基于区块链的数据处理装置实施例的结构示意图;

图6为本申请的运行器实施例的结构示意图。

具体实施方式

在对本申请的各种实施例进行充分说明之前,为便于理解,先对一些基本背景进行介绍。区块链技术虽诞生时间不长,但因其具有去中心化、防篡改性、易于追踪回溯等显著特点,使其目前“方兴未艾”,在各行各业掀起应用的高潮。尽管如此,对区块链技术的内容,则未必人皆尽知。区块链技术,简单地说,是将网络上产生的各种交易记录登载在各个区块之中,各个区块按照一定的规则逻辑相连成链,即构成区块链。由此,从简单介绍区块链技术的目的出发,下面分两大部分内容予以说明:一是区块链的组织结构;二是如何完成交易数据上链的过程。

参见图1,该图示出了区块链组织结构的一种示意结构。如图1所示,区块链上的每个区块根据功能作用的不同,可划分为区块体和区块头,前者主要用于记录交易数据信息,可以包含多条交易数据信息,后者主要用于标识本块,以及勾连其他区块。区块头中包含上一个区块的哈希值(父区块哈希)以及本区块的哈希值,本区块头部包含上一个区块的哈希值,由此建立起本区块和上一区块的联系,本区块的哈希值用于写入下一个区块的区块头部分,由此实现与下一个区块的联系。通过区块头中的哈希数据连接上了各个独立的区块,进而构成一个完整的链条,区块链因而得名。当然,在实际应用中,每个区块中的区块头可能不仅仅包含这些内容,还可能包含merkle根(该值由区块体中所有交易数据的哈希值两两逐级哈希计算得到【也可能其他方式得到】,主要用于检验某笔交易是否存在于本区块之中)、时间戳(用于记录该区块的产生时间)、难度值(用于指示每个区块获取“记账权”的难度)、随机数(主要用于记录解答“记账权”难题的答案)等等。

相比于区块链本身的组织结构,交易数据的上链操作更为复杂、更为核心。如图1所示的区块形成区块链是由区块链节点网络中的节点来执行的。区块链节点网络可以包含多个区块链节点,这些区块链节点“相互协助”来共同完成交易数据的上链。首先,当一个区块链节点收到一个交易数据后,为了使得该交易数据得到区块链全网的“承认”,会广播到其他每个区块链节点;在各区块链节点收到该交易数据后,要对其进行验证并正确盖上时间戳,为了争取记录该交易数据的“合法记账权”,该区块链节点需要通过解预定的“数学难题”(即工作量证明方式)来实现;当某个区块链节点通过“自身努力”争取到该合法记账权后,它将向全网广播自上次区块上链之后到本区块完成上链之前的所有盖有时间戳的交易数据,由各个区块链节点进行核对、验证。全网其他区块链验证完正确性后,实现当前区块的上链,并将进入下一个区块上链合法记账权的“抢夺”,由此循环。

正是由于区块链技术具有上述特定的区块链结构和上链规则,使区块链具有前述所言的显著特点。但是,随着网络使用范围的扩大,基于网络产生的交易数据量越来越大,这将导致其在与区块链技术结合时,生成的区块链越来越长,区块链上的每个区块包含的交易数据记录越来越多,同时,又要面临海量的数据处理,导致区块链网络本身以及该网络与其他节点网络之间的数据传递同步过程越来越缓慢,严重影响到区块链技术的进一步应用。为解决或改善现有技术中存在的该问题,本申请实施例提出新的技术方案来进行数据处理。

参见图2a,该图示出了本申请提供的基于区块链的数据处理方法,该方法包括:步骤s201:节点网络利用功能程序处理数据处理请求,获得处理结果,所述功能程序为节点网络根据业务id从分布式资源存储系统中获得的,所述业务id包含在节点网络接收的终端设备与节点网络之间建立连接的连接请求中;步骤s202:节点网络对需要验证的所述处理结果进行验证,并将验证通过的处理结果进行存储;步骤s203:当接收到预定指令后,节点网络将需要存储的所述处理结果写入与节点网络对应的区块链中。

通过上述技术方案,可以看到,本申请实施例的基于区块链的数据处理方法涉及到终端设备、节点网络、分布式资源存储系统、区块链(外链)等主体,下面参照图2b所示的示意图对各部分做简要介绍,然后再对上述各步骤的数据流向进行详细说明。图2b中,终端设备受控于对各类业务进行操作的用户,比如,在网络游戏中,终端设备即为玩网络游戏的玩家操作的手机,当然,终端设备本身还可以体现为pc终端、ipad等各种信息化处理设备,只要它能够连入节点网络,通过与节点网络的交互完成相应的业务功能即可,本申请实施例对其具体形态并不做特别限制。此外,在一项业务处理过程中,终端设备的数量根据实际业务情况,可多可少,但这些设备并非孤立的实体,而是可以通过节点网络实现消息沟通、数据传递等交互行为。分布式资源存储系统是一个开放(可上传下载数据,非封闭式的)、公开(可由第三方或其他用户根据需要查询数据)、透明式的存储平台,它允许第三方将其开发的功能程序存储在其上,并向终端设备的客户端(用户)提供下载服务。分布式资源存储系统可以具体体现多种形式,比如ipfs(interplanetaryfilesystem,星际文件系统),内容分发服务器cdn(contentdeliverynetwork,又称内容分发网络),网盘,云存储等均可以。为方便描述,后续以ipfs作为实例进行介绍,ipfs作为节点网络连接的另一个重要部分,是一种内容可寻址、版本化、点对点超媒体的分布式协议,能够实现永久的、去中心化保存和共享文件,该部分放置有各种实现业务的功能程序,比如,网络游戏中的脚本程序。当节点网络需要获取相应业务的功能程序时,可以从该处下载或由ipfs主动传输给节点网络。由于ipfs具有较高独立性,第三方开发平台可以开发自己的独立业务程序,然后将其部署在ipfs上,供终端设备的用户通过节点网络使用。位于终端设备与ipfs之间的是节点网络,节点网络承担着实现本申请实施例的“重担”:它接收终端设备发送的业务id,然后根据该业务id从ipfs中获取该业务id对应的功能程序(模块),然后利用该功能程序(模块)处理数据处理请求,获得处理结果;在获得处理结果后,由于这些处理结果可能是由节点网络中的不同节点产生的,有些节点可能存在造假、篡改等恶意行为,为避免这种情况,需要对这些处理结果进行验证,只有验证通过的处理结果,比如得到绝大多数节点网络内的节点确认的处理结果,才能由节点网络将其进行存储操作。当满足一定条件时,比如,当前业务的用户终止了本业务的处理,这时节点网络就将这些处理数据写入到与其连接的区块链。

在理解本申请的上述技术方案时,还需要注意如下几点:一是节点网络的内部构成问题。毋庸置疑,节点网络内部具有多个节点,但是,每个节点的功能、作用是怎样,这些节点如何分类、如何分工,具体又如何操作,并不构成对本申请的限制,只要它(们)能够完成本申请上述技术方案提及的步骤,那么它可以以任何技术上能够实现的方式来实施,在本申请的上述实施例中并非必须关注的重点。二是区块链(外链)自身运行机制问题。本申请实施例虽然最终会将处理结果写入到与节点网络连接的区块链之中,但是,对于具体如何完成区块数据的写入、验证等区块链的常规性的操作,在本申请中并不予以重点介绍,本领域技术人员可以结合前述对区块链的基础介绍进行理解。类似地,对于区块链的具体属性,亦不做限制。由于连接进入节点网络的终端设备必然较多,可能成百上千、上万,这些终端设备不可能每个终端设备具有仅服务于其自己的区块链,因而,这些终端设备会共用某个区块链,对于每个公用区块链到底有多少个终端设备或者节点网络来公用,取决于实际的部网情况。三是数据处理问题。节点网络从分布式资源存储系统获得功能程序后,将利用该功能程序进行数据处理,具体处理哪些数据、如何处理数据、处理完后的数据如何归属或响应等问题,均可由该功能程序预先配置和设定。通常情况下,终端设备的客户端在业务实现过程中,只要存在数据处理需求,便可发出数据处理请求,该请求将作为“功能程序”的输入,功能程序接收到该“输入”后即可按照预先配置或设计的程序模式运行,实现对数据处理请求的处理,以得到处理结果。该处理结果随后将面临两层递进性的分流筛选:第一层次是是否验证、存储的分流选择。终端设备客户端发起的数据处理请求可能很多,每个数据处理请求的处理结果的去向也可能有多种,比如,有的处理结果将被发送给与该终端设备客户端参与同一业务的另一个终端设备上的客户端,有的处理结果不仅需要发送给另一个终端设备上的客户端,还可能需要对该结果进行留痕(保存),如那些具有终局性的结果或者按照预定安排需要对其进行保存的结果(统称为需要进行保存的处理结果),要保存的处理结果将被验证。这样,根据实际情况节点网络会将全部处理结果或者其中的一部分处理结果发送给节点网络中的其它节点来进行验证,对于验证通过的处理结果,将由节点网络进行存储。具体存储时,将会通过各种机制保证存储的处理结果具有如下特点:可避免单点风险(比如,通过分布式模式将同一处理结果同时存入多个节点)、可修复(一个节点的结果损坏时,可通过其它节点予以恢复)、不被篡改(在数据读出时,可对读取的数据进行同一性验证)等。存储在节点网络中的处理结果,在节点网络接收到预定指令后,将面临是否写入区块链的动作,即第二层次的分流选择。对于需要写入区块链的,则由节点网络从先前存储的节点网络中读取出来,按照上述第二点提及的区块链操作模式进行写入操作。由此可见,处理结果可能存在是否需要在节点网络内验证、存储以及是否需要写入到区块链的两度筛选,从而形成了三个梯度的层次数据。

为了更清晰地说明上述数据处理情况,下面以两个终端设备的客户端a、b下网络象棋为例予以介绍:在客户端a、b建立好长连接后,双方即可开始网络下象棋游戏。客户端a在下象棋过程中,将移动棋盘上的棋子,每移动一个棋子,将会把该信息以数据处理请求的形式发送给节点网络,节点网络收到这个请求后,按照网络象棋游戏预先设定的功能程序,对其进行处理(比如,在其原有棋子基础上进行相应的移动、判断棋局情况、增减双方的积分、记录自上次落子到本次落子的时间等等),该处理的结果将发送给客户端b,在某些预定情况下,还可能对该步骤的结果进行存储(比如,该步骤恰好是表明客户端a本局胜利的一步),这时便由节点网络中的其他节点对该结果进行验证,验证通过后,将予以存储。客户端a、b可以接着玩下一局,依次类推。当客户端a、b不再想玩该网络游戏时,则可能发送一个终止游戏的指令,节点网络接收到该指令后,将对存储的各局的处理结果或者最后一局累积处理结果进行写入区块链的上链操作。

上述技术方案是一个崭新的解决区块链瓶颈的方案,该方案相对于现有技术而言,能够取得一系列优良的技术结果。

第一,由于上述实施例在处理完一个数据处理请求、产生处理结果之后,并非直接、立即将其写入节点网络对应的区块链,而是在节点网络中先进行存储,并通过验证机制确保存储的处理结果能够具有区块链的不可篡改性、分布式等去中心化的特点,当接收到预定指令后,才将累计的处理结果或者累计的处理结果中的一部分写入到节点网络对应的区块链之中。这种方式在未丢弃区块链的固有优势的前提下,使得区块链写入操作的次数必然小于实际处理结果的数量,从而对区块链写入操作(tps)的要求降低,这样,节点网络不用再花费更长时间等待区块链的响应,从而在较大程度上提高了数据处理的效率,位于终端设备侧的用户的用户体验也得以显著改善。

第二,本申请的上述实施例在预定指令达到之前,仅在节点网络范围内进行处理结果数据的读写操作,而在预定指令收到后,才将节点网络中的处理结果写入到区块链中,由此可见,该实施例以“预定指令”的到来与否为界,将终端设备和节点网络、节点网络内部各节点之间的“逻辑交互数据”操作与节点网络和区块链之间的“资产数据”操作进行了有效分离,从而有力摆脱了区块链写入读出操作对整个网络的瓶颈限制。

第三,在现有技术中每进行一次区块链的“上链”操作,都要支付手续费(gas),而在本申请的上述实施例中,在保证相同或者整体技术效果更优的情况下,可以明显减少对区块链写入读取操作,从而减少了gas的支付次数,缩减了部署节点网络的成本,显著提高了经济效益。

第四,现有技术中的重心全在区块链,在节点网络中执行的逻辑与相关的数据均在区块链的智能合约中予以明确,而在本申请的上述实施例中,节点网络作为与区块链对接的全新网络,不再受区块链写入能力的瓶颈限制,处理数据处理请求的程序代码不再来自具有公共属性的区块链的智能合约,而是来自与节点网络连接的ipfs,从而使得第三方可以自由部署数据处理网络和设定具有自身特色的数据处理逻辑,有利于增强这类处理系统的灵活性、扩展性以及通用性。

需要特别强调的是,本申请的上述实施例是在解决现有技术问题的道路上探索出来的新思路。现有技术对前述问题的常规改进方向是,千方百计提高公用区块链的tps吞吐能力,借希望于通过提高tps能力,便可满足海量的对公用区块链的应用需求,但是,实际效果表明,这是条在“正确思路”指引下的错误道路,经过努力,提高tps能力的收效甚微。而本申请的上述实施例巧妙地避开了公用区块链tps吞吐能力这个“麻烦点”,而是着力于节点网络本身的改造,以及节点网络与区块链连接之间的改造,使得节点网络一定程度上继承了将数据写入区块链一样的不可篡改性、公平公正等特性。正是这样的独特思路,才使得本申请的实施例取得了上述良好的技术效果。

上述实施例的介绍过程中,基于本申请改进的重点,在步骤s201中即提及节点网络利用功能程序对数据处理请求进行处理,实际上,在节点网络完成该步骤以及后续步骤之前,应当有建立节点网络与终端设备之间连接的内容,只不过节点网络与终端设备之间的连接,可以按照与现有技术相同的方式建立而已,因而未予以详细描述。然而,本申请发明人进一步提出了建立终端设备与节点网络之间连接的新方式,构成本申请的又一大发明点。下面予以说明:首先,终端设备会向节点网络发送连接请求(登录请求),该连接请求中包含了终端设备准备登录或连接的业务的业务id,同时,还可能包括操作终端设备的用户的用户id。随后,节点网络在接收到连接请求后,对其进行解析,获得业务id,再根据该业务id从ipfs中获取相应的功能程序,该功能程序中包含有数据处理逻辑,是业务完成的“核心”灵魂。在获得功能程序后或之前,节点网络便可以向终端设备发送响应消息,从而建立起终端设备与节点网络之间的长连接。通过该长连接,终端设备与节点网络之间便可以进行各种数据交互。上述这种连接方式避免了“一数据一连接”的链路“臃肿”现象和多次发起连接建立的资源重复消耗的问题,只要长连接一旦建立,在终端设备未下线(或者终止相应的业务)之前,均可通过该通道来往消息。上述这种在终端设备与节点网络之间建立连接设备的方式,在节点网络内部构成不同的情况下,可能会具有一些细节上的不同,但如果将“节点网络”看着一个整体上的“黑匣子”,只要能够对外完成上述连接,均能用于实现本申请上述实施例的技术方案。

上述实施例中步骤s201提及节点网路利用功能程序对数据处理请求进行处理,在具体处理过程中,因为不同的数据类型和业务需求,可能处理方式不同。比如,节点网络可以仅利用功能程序完成对数据处理请求的处理。但在某些情况下,还需要获得其他数据。比如,玩家玩网络游戏,不仅可以运行从ipfs中获得的脚本程序代码,而且在运行过程中,可以还获取该玩家的玩家数据,在这种情况下,便需要根据用户id从节点网络对应的区块链中读出该用户数据,然后,在处理时结合用户数据完成数据处理请求的处理,以获得处理效果。这里需要说明的是,在节点网络从区块链中读取用户数据时,可以通过智能合约来实现。与现有技术相比,本实施例中的智能合约不再包含业务处理逻辑代码,使得智能合约专门服务于区块链的读写等操作。

本申请实施例之所以可以将多次区块链读写操作减少,甚至变更为在业务开始之前和结束之时的两次区块链读写,主要得益于节点网络内验证机制的保障功能。在节点网络获得处理结果数据后,并非马上将该数据予以存储,而是需要进行验证,以保证节点网络中进行数据处理的节点不会“作恶”。验证时,由节点网络中得到数据处理结果的节点将处理结果发送给节点网络中的其他节点,其他节点采取预定验证措施予以验证后,向该节点发送确认消息,该节点根据获得确认消息的情况来最终确定该处理结果是否可以存储,如果满足预定验证条件,即可将该处理结果采取分布式存储的方式存储在节点网络中的节点上。为了对该存储结果进行跟踪,在某些实施例中,还会由节点网络预先分配一个随机数,并将该随机数与处理结果数据绑定,并对与随机数绑定的处理结果进行验证,在存储完成后,节点网络得到针对随机数的签名数据。

本申请的上述实施例步骤s203中提到,节点网络会在接收到预定指令后,将存储的至少两个所述处理结果写入与节点网络对应的区块链中。这里的预定指令起到了触发区块链写入操作的作用,在现有技术中,每完成一次数据处理操作,由于不存在预定指令,便如“流水线”式的自然而然地进行区块链的读写操作,而本申请则可以等待预定指令的到来,收到该指令后进行该操作,从而可以根据需要来控制对区块链tps的需求。本申请的预定指令可以体现为各种各样的形式,比如,预定指令可以是节点网络接收到的终端设备终止当前处理业务的指令,还可以是终端设备下线所述业务等,节点网络将得到这一通知,进而知道后续将不会产生更多的数据处理结果,于是,即将先前的数据处理结果上链到区块链之中;还比如,预定指令可以是节点网络接收的按照预定规则终止当前处理业务的指令,这与前述的预定指令不同,前者是终端设备主动终止业务处理,后者是满足预定条件后,由节点网络来作出决定终止业务处理,这两者均可以构成本身的预定指令的形式;再比如,预定指令可以为节点网络存储一定数量的处理结果后,即可进行上链操作,将这些存储的处理结果或者少于这些处理结果数量而分批次写入到区块链,前面提到本申请不是将每次的处理结果“即来即写”,而是将这些处理结果予以一定程度上的累积,然后选择合适时机予以上链,在某些实施例中,为兼顾数据处理的效率和连贯性,可以在产生一定数量的处理结果后,即开始进行上链操作,如此循环进行下去,这种方式尽管相对于本申请前面的实施例,可能牺牲一定的效率(这种情况下比仅仅在终止业务时进行上链操作的次数要多),但是,由此可以减轻节点网络的数据验证、签名、存储等操作的负担,从而取得两者平衡。还需要说明的是,在预定指令到来之前,为避免区块链中的数据发生变化,可以将区块链中用户id的用户数据设定在锁定状态,从而避免其他节点对区块链中该用户id的用户数据进行操作,杜绝或减少数据出现错误的可能。这里在预定指令到来之前,可以划分为两种情况:一是节点网络需要从区块链中读取数据,那么用户数据处于锁定状态的时间区间可以是节点网络通过区块链智能合约对用户id所属的用户数据读取之后,直到将节点网络处理完成的用户数据通过区块链智能合约写入数据之前;一是节点网络即便不需要从区块链中读取数据,为保证该用户数据不被修改,也可以在约定指令到来之前一直处于锁定状态,当有数据需要写入时才解锁。

上面在介绍本申请的实施例的过程中,将节点网络作为一个“黑匣子”看待,只要这个“黑匣子”具有本申请的相关功能,便能完成相应的业务处理。但是,为了更好地理解本申请的全部技术方案,下面提供一种节点网络的实施例。参见图3,该图示出了节点网络的一种可能的实施结构。下面从不同的角度予以介绍:

从节点的功能类别角度而言,在节点网络中虽然存在众多的节点,但大体上可以划分为四大类:一是逻辑节点,主要用于完成核心的处理任务,具体可以包括:接收终端设备的长连接请求以及数据处理请求;根据业务id从ipfs中获取功能程序,并利用该功能程序处理数据处理请求;在处理完数据处理请求形成处理结果后,将其发送给其他节点进行验证;验证通过后将处理结果写入到存储节点;在接收到预定指令时,将处理结果写入到与节点网络连接的区块链;二是监督节点,区块链能够保证公平公正、防篡改,一个重要机制是由“自己处理、别人验证”,监督节点在节点网络中即处于这样的地位,它对逻辑节点处理完成的处理结果进行验证,并将自己的验证结果发送给逻辑节点,以便逻辑节点根据收到的来自监督节点的确认消息数量情况,确认该处理结果的准确性和公平性;三是存储节点,它用于存储经过验证后处理结果,在存储时可以采取分布式方式存储,确保数据的稳定性和再生性;四是中心节点,中心节点在节点网络中完成一些关键性动作,提供非数据安全的状态和联络服务,以网络游戏为例,比如,其可以作为节点负载和任务分配中心、在线玩家状态查询中心、游戏匹配中心(选择合适的游戏对手)等,具体可采取的动作比如可以是,在存储处理结果时分配随机数,然随机数与处理结果进行绑定;向终端设备分配与其当前业务对应的逻辑节点和监督节点、存储节点等。这些逻辑节点与其配套或对应的监督节点、存储节点形成一整套服务于某个业务的节点群体系。

从节点的功能发挥角度而言,上述四个功能或者部分功能可能集于一个节点,也可能分散到多个独立的节点;可能在本次业务处理中发挥中心逻辑节点功能(或其他功能),而在下次的业务处理中发挥监督节点的功能(或者其他功能);可能在某个时候,节点的绝对数增加,也可能在某个时候,节点绝对数量减少;可能某个节点的功能在某次业务处理中不能正常发挥等,还可能存在“作恶”的节点。但是,需要说明的是,尽管某些节点可能担负多种功能、可能成为作恶节点等多种具体情形,然而,就节点网络整体而言,在正常情况下,能够提供较好的服务。这种较好服务是建立在这些节点均为不可信节点的假设基础之上,并基于此提供一套信任保障机制才得以实现的,因为无论是“挑大梁”的逻辑节点,还是作为“执法监督”的监督节点,甚至作为数据“落地”的存储节点,均可能在某些情况下“为非作恶”,由此,在逻辑节点处理形成处理结果后,会将其发送给多个监督节点进行监督,保证逻辑节点执行的指令、输入的配置以及输出的状态等一致。类似道理,逻辑节点在接收监督节点的反馈确认结果时,不单采信某一个监督节点的反馈结果,而可以通过执行诸如拜占庭共识算法等共识机制来凝聚大多数监督节点的共识,从而避免监督节点作恶。对于存储节点,同样采取多节点存储同一用户数据,执行共识算法等方式来保证数据的同一性和有效性。

从节点的功能实现角度而言,各个节点可以由相同的信息处理设备实现,比如,均为pc设备,也可以由不同的信息处理设备实现;可以一个节点对应一个信息处理设备,也可以一个节点对应由多个信息处理设备组成的一个集群。这些同构或者异构的节点,只要能作为整体满足节点网络的对外需要,便是符合本申请发明目的的有效节点。

下面以具体的网络游戏作为场景,对本申请的技术方案进行阐述。网络游戏中在终端侧具有几个或数十个,甚至成百上千的玩家,这些玩家可能在地理位置上相近,也可能相隔万里,这些玩家如果玩相同的游戏,将根据网络组建的实际情况,连接到相同的节点网络,由该节点网络来提供服务;在网络侧的包括节点网络、ipfs以及公用的区块链等。为方便起见,下面以一个终端设备为例予以说明,参照图4,图4a示出了网络游戏数据处理过程,4b示出了网络游戏数据处理的信令交互过程,图4c示出了网络游戏的场景(laya云网络)。

s401:终端设备向网络游戏服务器网络中的引导节点服务器发送登录请求,所述登录请求中包含游戏id和玩家id;

s402:所述引导节点服务器向网络游戏服务器网络中的中心节点服务器转发所述登录请求;

s403:s403(a)所述中心节点服务器向所述终端设备分配网络游戏服务器网络中服务器,作为逻辑节点服务器、监督节点服务器和存储节点服务器,并s403(b)将分配的逻辑节点服务器信息反馈给引导节点服务器,以便所述引导节点服务器向所述终端设备同步所述逻辑节点服务器信息;s403(c)以及向逻辑节点服务器下发随机数;

s404:所述逻辑节点服务器根据所述游戏id从ipfs中获取所述游戏的逻辑脚本代码;

s405:所述终端设备向所述引导节点服务器发送断开连接信息,以便断开与引导节点服务器之间的连接,建立与逻辑节点服务器之间的长连接;

s406:所述逻辑节点服务器根据所述玩家id从与所述游戏网络服务器连接的区块链中读取出该玩家的玩家数据,并利用逻辑脚本代码根据玩家数据对数据处理请求进行处理,得到玩家当前数据;并将玩家当前数据绑定所述随机数后发送给网络游戏服务器网络中的监督节点服务器进行验证;以eth为例,在逻辑节点服务器根据玩家id从区块链上读取玩家数据之后,通过eth的智能合约在合约内对游戏数据进行锁定,游戏网络服务器读取玩家数据完成持续游戏过程,直到游戏结束。

s407:所述监督节点服务器对绑定随机数的所述玩家当前数据进行验证,验证通过后向逻辑节点服务器发送确认和签名信息;

s408:所述逻辑节点服务器收到的确认和签名信息满足预定条件时,向网络游戏服务器网络中的存储节点服务器进行存储;以eth(以太坊)为例,逻辑节点将结果汇报到此局游戏对应的3个存储节点。

s409:当接收到预定指令后,所述逻辑节点服务器将存储的所述玩家当前数据写入网络游戏服务器网络连接的区块链。以eth为例,即是在接收到终止游戏的指令后,将3个存储节点数据一致的结果分别写入对应公有链上对应的玩家账号,并解锁。

上述内容详细介绍了基于区块链的数据处理方法的各种实施例,以及与此适应的区块链节点网络。与上述内容同样的道理,上述的方法可以虚拟为基于区块链的数据处理装置。参见图5,该图即示出了基于区块链的数据处理装置的一个实施例位于区块链节点网络,所述装置位于节点网络,包括数据处理单元u51、验证存储单元u52和区块链写入单元u53,其中:

数据处理单元u51,用于利用功能程序处理数据处理请求,获得处理结果,所述功能程序为节点网络根据业务id从分布式资源存储系统中获得的,所述业务id包含在节点网络接收的终端设备与节点网络之间建立连接的连接请求中;

验证存储单元u52,用于对需要验证的所述处理结果进行验证,并将验证通过的处理结果进行存储;

区块链写入单元u53,用于在接收到预定指令后,将需要存储的所述处理结果写入与节点网络对应的区块链中。

此外,本申请的实施例还提供一种运行器。参照图6,该图示出了运行器的一个实施例的结构示意图,所述运行器60中包含存储器61、处理器62及存储在所述存储器61上并可在所述处理器62上运行的计算机程序,所述计算机程序被所述处理器62执行时实现上述记载的基于区块链的数据处理方法的步骤。与此道理类似,本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述记载的基于区块链的数据处理方法的步骤。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。

内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram)。内存是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。

本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

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