数据上链方法及装置、电子设备、存储介质
技术领域
本说明书一个或多个实施例涉及区块链技术领域,尤其涉及一种数据上链方法及装置、电子设备、存储介质。
背景技术
区块链技术(也被称之为,分布式账本技术)是一种去中性化的分布式数据库技术,具有去中心化、公开透明、不可篡改、可信任等多种特点,适用于诸多对数据可靠性具有高需求的应用场景中。
发明内容
有鉴于此,本说明书一个或多个实施例提供一种数据上链方法及装置、电子设备、存储介质。
本说明书一个或多个实施例提供技术方案如下:
根据本说明书一个或多个实施例的第一方面,提出了一种数据上链方法,应用于业务处理方,包括:
从数据所有方处获取目标数据;其中,所述业务处理方具备向所述数据所有方获取数据的权限;
在所述目标数据为响应于数据使用方发起的访问请求而获取的情况下,基于所述目标数据生成区块链交易,并将生成的区块链交易发送至区块链节点,以使所述区块链节点与其所属区块链网络中包含的其他节点进行交易共识,并在共识通过的情况下,将所述区块链交易存储至区块链;
在确定所述数据使用方具备所述目标数据的访问权限的情况下,向所述数据使用方返回从所述数据所有方获取的所述目标数据或所述区块链节点针对所述区块链交易生成的索引信息;其中,所述索引信息被所述数据使用方用于生成针对所述区块链交易的请求交易,以从所述区块链节点所属区块链网络中任一节点处获取所述区块链交易或所述区块链交易中所含的所述目标数据。
根据本说明书一个或多个实施例的第二方面,提出了一种数据上链装置,应用于业务处理方,包括:
第一发送单元,从数据所有方处获取目标数据;其中,所述业务处理方具备向所述数据所有方获取数据的权限;
第二发送单元,在所述目标数据为响应于数据使用方发起的访问请求而获取的情况下,基于所述目标数据生成区块链交易,并将生成的区块链交易发送至区块链节点,以使所述区块链节点与其所属区块链网络中包含的其他节点进行交易共识,并在共识通过的情况下,将所述区块链交易存储至区块链;
返回单元,在确定所述数据使用方具备所述目标数据的访问权限的情况下,向所述数据使用方返回从所述数据所有方获取的所述目标数据或所述区块链节点针对所述区块链交易生成的索引信息;其中,所述索引信息被所述数据使用方用于生成针对所述区块链交易的请求交易,以从所述区块链节点所属区块链网络中任一节点处获取所述区块链交易或所述区块链交易中所含的所述目标数据。
根据本说明书一个或多个实施例的第三方面,提出了一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器通过运行所述可执行指令以实现如第一方面所述的方法。
根据本说明书一个或多个实施例的第四方面,提出了一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如第一方面所述方法的步骤。
附图说明
图1是本说明书一示例性实施例示出的一种数据上链方法的流程图。
图2是本说明书一示例性实施例示出的一种数据上链架构的示意图。
图3是本说明书一示例性实施例示出的一种数据上链方法的交互图。
图4是本说明书一示例性实施例示出的另一种数据上链架构的示意图。
图5是本说明书一示例性实施例示出的另一种数据上链方法的交互图。
图6是本说明书一示例性实施例示出的一种电子设备的结构示意图。
图7是本说明书一示例性实施例示出的一种数据上链装置的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。
需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
区块链技术(也被称之为,分布式账本技术)是一种去中性化的分布式数据库技术,具有去中心化、公开透明、不可篡改、可信任等多种特点,适用于诸多对数据可靠性具有高需求的应用场景中。
然而,伴随着区块链技术上述优质特点的同时,也存在较大的弊端。由于区块链技术通过“在区块链网络中所有节点均保存一份完整的分布式账本”的方式,实现了数据的交叉验证,进而保障数据的可靠性。这使得任何数据在被保存至区块链的情况下,在所有节点中均保存有备份。因此,区块链上的存储空间显得尤为珍贵。
但是,在相关技术中,当采用区块链技术存储数据时,并未对数据进行有效的筛选,而是简单粗暴地将所有数据均存储至区块链(即将所有数据上链)。这种数据上链方法使得本就珍贵的区块链存储资源被迅速占用,其中包括了大量重要程度不高的数据,大幅降低了区块链存储资源的利用率。
有鉴于此,本说明书提出了一种数据上链方法,以解决由于上链数据未经筛选造成的区块链存储资源利用率较低的技术问题。
图1为本说明书一示例性实施例示出的一种数据上链方法的流程图,该方法应用于业务处理方;如图1所示,该方法可以包括以下步骤:
步骤102,从数据所有方处获取目标数据;其中,所述业务处理方具备向所述数据所有方获取数据的权限。
如上所述,在相关技术中,当采用区块链技术进行数据存储时,未对数据进行筛选,而是简单地将所有数据均存储至区块链,致使区块链中存储了大量重要程度不高的数据,例如,部分数据被存储至区块链后,自始至终都不曾被任何机构或个人访问。
应当理解的是,对于数据而言,被存储的目的在于在被需要时能够随时获取。换言之,数据存在被访问的需求,通常意味着重要程度较高。因此,本说明书将数据是否被访问作为数据上链的标准,仅对存在被访问需求的数据进行上链。通过该方法,能够在保证重要数据被上链的前提下,避免了相关技术中由于未对上链数据进行筛选造成的区块链存储资源利用率较低的问题。
在本说明书中,以业务处理方是否接收到来自数据使用方的访问请求,判断数据是否存在被访问需求。其中,数据使用方可以为任一机构或个人,可以通过所使用的客户端向任一类型的业务处理方发送针对目标数据的访问请求。
在一实施例中,数据使用方可以向数据所有方的业务系统发送针对目标数据的访问请求。例如,该数据所有方可以为一机构,其所对应的数据管理系统中保存有数据使用方所要访问的目标数据,那么,该机构对应的业务系统即可作为本说明书中的业务处理方。在该实施例中,业务系统在接收到针对目标数据的访问请求的情况下,可以从该访问请求中解析出目标数据的标识信息,并生成包含该标识信息的获取请求。该获取请求被发送至该数据所有方的数据管理系统,以由该数据管理系统从中解析得到目标数据的标识信息,进而根据解析得到的标识信息查找目标数据。在此基础上,数据管理系统即可将查找得到的目标数据返回至业务系统,以由业务系统将目标数据进行上链,或者返回至数据使用方。
在另一实施例中,数据使用方可以向对应于各个数据所有方的业务处理平台发送针对目标数据的访问请求。例如,各个数据所有方可以为若干机构,这若干机构均通过统一的业务处理平台进行业务处理,该业务处理平台即可作为本说明书中的业务处理方。在本实施例中,该业务处理平台在接收到针对目标数据的访问请求的情况下,仍可以从该访问请求中解析出目标数据的标识信息,并生成包含该标识信息的获取请求;在此基础上,即可在确定保存有目标数据的数据所有方的情况下,向确定的数据所有方的业务系统发送生成的获取请求,以由该业务系统将接收到的获取请求转发至确定的数据所有方的数据管理系统;数据管理系统可以从获取请求中解析得到目标数据的标识信息,进而查找得到目标数据,并经由业务系统返回至业务处理平台。在本实施例中,可以采用多种方式确定保存有目标数据的数据所有方。例如,在一种情况下,业务处理平台可以从访问请求中解析出用于表征保存有目标数据的数据所有方的指示信息,进而确定保存有目标数据的数据所有方;在另一种情况下,业务处理平台中可以预先创建有数据存储记录表,该表中记录有各个数据所有方所保存的数据的标识信息,因此,在解析得到目标数据的标识信息的情况下,即可根据该标识信息从数据存储记录表中查找确定保存有目标数据的数据所有方。
需要声明的是,本说明书中的业务处理方无论是业务系统还是业务处理平台,均应当具备向相应数据所有方获取数据的权限。例如,在业务处理方为任一数据所有方对应的业务系统的情况下,该业务系统应当具备向该任一数据所有方访问数据的权限,该权限可由该任一数据所有方预先对其业务系统授权得到;在业务处理方为各个数据所有方对应的业务处理平台的情况下,该业务处理平台应当具备向这多个数据所有方访问数据的权限,该权限可由这多个数据所有方分别向该业务处理平台授权得到。除此之外,本说明书书中的业务处理方可以为任一类型的电子设备,例如,该业务处理方可以为智能手机、平板等移动终端,也可以为PC、服务器等固定终端。当然,除了为单一的电子设备,还可以为服务器集群等设备集群。业务处理平台具体形式可由本领域技术人员根据实际情况确定,本说明书对此不作限制。
步骤104,在所述目标数据为响应于数据使用方发起的访问请求而获取的情况下,基于所述目标数据生成区块链交易,并将生成的区块链交易发送至区块链节点,以使所述区块链节点与其所属区块链网络中包含的其他节点进行交易共识,并在共识通过的情况下,将所述区块链交易存储至区块链。
在业务处理方接收到数据使用方针对目标数据的访问请求的情况下,即意味着该目标数据存在被访问的需求。因此,在业务处理方接收到数据所有方返回的目标数据的情况下,即可基于接收到的目标数据生成区块链交易,并将生成的区块链交易发送至区块链节点,以将目标数据存储至区块链。
在本说明书中,区块链节点在接收到业务处理方生成的区块链交易的情况下,即可与所属区块链网络中的其他区块链节点对该区块链交易进行交易共识,并在共识通过的情况下,将该区块链交易存储至区块链。具体的,各个区块链节点均可将该区块链交易存储至自身的区块链存储结构中。
步骤106,在确定所述数据使用方具备所述目标数据的访问权限的情况下,向所述数据使用方返回从所述数据所有方获取的所述目标数据或所述区块链节点针对所述区块链交易生成的索引信息;其中,所述索引信息被所述数据使用方用于生成针对所述区块链交易的请求交易,以从所述区块链节点所属区块链网络中任一节点处获取所述区块链交易或所述区块链交易中所含的所述目标数据。
在本说明书中,业务处理方除了需要将数据所有方返回的目标数据存储至区块链以外,还需将目标数据返回至数据使用方,以满足数据使用方对目标数据的访问需求。
本说明书可以采用多种方式向数据使用方返回目标数据。
在一实施例中,业务处理方可以直接向数据使用方返回从数据所有方获取的目标数据,在该情况下,无需进行额外的数据交互,使得数据使用方能快速获取目标数据。
在另一实施例中,在基于目标数据生成的区块链交易被保存至区块链的情况下,区块链节点针对该区块链交易生成了相应的索引信息,以供用户通过该索引信息从区块链中获取该目标数据。在该实施例中,区块链节点可以将针对该区块链交易生成的索引信息返回至业务处理方,以由业务处理方向数据使用方返回该标识信息。在此基础上,数据使用方即可基于该索引信息生成针对目标数据对应的区块链交易的请求交易,以从区块链节点处获取目标数据对应的区块链交易或该区块链交易中包含的目标数据。在该情况下,数据使用方通过索引信息从区块链处获取目标数据,由于区块链存储技术具有不可篡改等优质特性,保证了目标数据的可靠性。
在本说明书中,鉴于区块链存储资源的珍贵,还应当避免数据被重复保存。因此,业务处理方在接收到数据使用方发送的访问请求的情况下,还可以优先判断请求访问的数据是否已经被存储至区块链。其中,在确定该数据已经被存储至区块链的情况下,直接向数据使用方返回区块链节点针对该数据生成的索引信息;而在确定该数据尚未被存储至区块链的情况下,执行上述从数据所有方获取数据并将其上链的操作。在实际操作中,业务处理方可以记录有已存储至区块链的数据与其索引信息的对应关系,基于此,业务处理方可以判断是否存在与访问请求所针对数据相匹配的对应关系;若存在,则判定访问请求所针对的数据已经被存储至区块链中;若不存在,则判定访问请求所针对的数据尚未被存储至区块链中。
在本说明书中,为保证数据的安全性,还需验证针对目标数据发起访问请求的数据使用方是否具有访问该数据的权限。具体的,业务处理方可以接收数据使用方发送的可验证授权信息,并判断该可验证授权信息是否由目标数据的数据所有方颁发,以及该可验证授权信息是否用于将目标数据授权至数据使用方;在确定可验证授权信息由目标数据的数据所有方颁发,且用于将目标数据授权至发起访问请求的数据使用方的情况下,确定该数据使用方具备目标数据的访问权限。
在实际验证可验证授权信息的过程中,需要从三个方面分别对可验证授权信息进行验证:1、验证可验证授权信息是否针对目标数据所颁发;2、验证可验证授权信息是否由目标数据的数据所有方颁发;3、验证可验证授权信息是否颁发给发送访问请求的数据使用方。
针对“可验证授权信息是否针对目标数据所颁发”的验证,业务处理方可以通过解析可验证授权信息的内容,判断其中是否包含目标数据的标识信息,若是则确定该可验证授权信息针对目标数据颁发。
针对“可验证授权信息是否由目标数据的数据所有方颁发”的验证,数据所有方在生成可验证授权信息的过程中,会基于自身身份私钥对可验证授权信息进行签名。在此基础上,业务处理方在接收到数据使用方发送的可验证授权信息的情况下,可以通过数据所有方的身份公钥进行验证,若验签成功,则证明该可验证授权信息由目标数据的数据所有方颁发。在实际操作中,数据所有方可以在区块链上注册有相应的DID(DecentralizedIdentifiers,分布式数字身份标识符),并将自身的身份公钥保存至对应于该DID的DID文档中,因此,业务处理方可以从注册有数据所有方DID的区块链中获取该数据所有方的身份公钥,以对可验证授权信息的颁发者进行验证。
针对“可验证授权信息是否颁发给发送访问请求的数据使用方”的验证,一方面,业务处理方可以生成用于验证数据使用方身份的随机字符,并将该随机字符发送至数据使用方,以由数据使用方基于自身身份私钥签名后返回;另一方面,业务处理方可以对可验证授权信息的内容进行解析,以确定该可验证授权信息所要颁发的对象。在此基础上,业务处理方即可基于可验证授权信息的颁发对象的身份公钥对接收到的带有数据使用方签名的随机字符进行验签,并在验签成功的情况下,确定该可验证授权信息颁发给发送访问请求的数据使用方。在实际操作中,业务处理方可以对可验证授权信息进行解析以得到颁发对象的标识信息,例如可以得到颁发对象的DID,并从注册有颁发对象DID的区块链中获取该颁发对象的身份公钥,以对数据使用方返回的随机字符进行验签,若验签成功,则证明可验证授权信息的颁发对象即为该数据使用方。
在本说明书中,区块链节点基于区块链交易生成的索引信息可以为区块链交易的哈希值;或者,区块链交易的流水号;或者,数据的索引号。具体的,可由本领域技术人员根据实际情况确定,本说明书对此不作限制。
由上述技术方案可知,本说明书仅在接收到针对数据的访问请求的情况下,获取相应的数据并生成对应于该数据的区块链交易,其中,该区块链交易被发送至区块链节点,以由区块链节点与所属区块链网络中的其他节点在共识通过的情况下将该区块链交易存储至区块链。可见,本说明书以数据是否被访问作为是否将数据上链的依据,仅对存在被访问需求的数据进行上链,避免了相关技术中由于对所有数据进行上链,致使区块链中保存了大量重要程度不高的数据的问题,提高了区块链存储资源的利用率。
进一步的,本说明书中的业务处理方在接收到数据所有方返回的数据之后,将该数据发送给数据使用方,以满足数据使用方对该数据的访问需求。在该过程中,业务处理方还可以对数据使用方提供的可验证授权信息进行验证,以判断该数据使用方是否有权限获取其所请求的数据,且仅在确定数据使用方具备访问所请求数据的权限的情况下向数据使用方返回数据,保证了数据的安全性。
下面,结合具体场景对本说明书的技术方案进行介绍。
图2为本说明书一示例性实施例示出的一种数据上链架构的示意图。如图2所示,该数据上链架构中包括:客户端21、机构22和区块链节点23。其中,机构22包括数据管理系统221和业务系统222。在实际应用中,对于任一机构而言,数据管理系统仅负责对数据进行存储和管理,若涉及到数据的交互操作,则需要通过其业务系统执行。因此,当客户端21需要访问机构22所维护的数据时,通常向业务系统222发送访问请求,并由业务系统222从数据管理系统221获取并返回数据。换言之,在该架构中,客户端21作为本说明书中的数据使用方,机构22的数据管理系统221作为本说明书中的数据所有方,而机构22的业务系统222则作为本说明书中的业务处理方。结合图3介绍基于该架构的数据上链方法。
图3为本说明书一示例性实施例示出的一种数据上链方法的交互图。
步骤301,客户端21向业务系统222发送针对目标数据的访问请求。
在本实施例中,客户端21直接与机构22所对应的业务系统222进行交互,以获取所要访问的数据。
步骤302,业务系统222解析访问请求以得到目标数据的标识信息。
步骤303,业务系统222获取已上链数据的标识信息。
步骤304,业务系统222基于已上链数据的标识信息与目标数据的标识信息判断目标数据是否已经被上链;若是,则直接向客户端21返回目标数据的索引信息;否则,则跳转至步骤305。
在本实施例中,业务系统222中可以保存有机构22所维护的且已经被上链的数据的相关信息,例如,可以保存有这些数据的标识信息与其在区块链上的索引信息的对应关系。那么,在接收到客户端21发送的针对目标数据的访问请求且从中解析得到目标数据的标识信息的情况下,即可基于记录的已上链数据的标识信息与索引关系的对应关系确定该目标数据是否已经被上链。若已经记录了目标数据的标识信息与其索引信息的对应关系,确定目标数据已经被上链,可以直接将目标数据的索引信息返回给客户端21,以由客户端21基于接收到的索引信息从区块链节点23处获取目标数据;否则,执行从数据管理系统221获取目标数据,以及将获取的目标数据上链的操作。
为了方便理解,举例进行说明,假设业务系统222中记录的已上链数据的标识信息与索引信息的对应关系如表1所示。
假设从客户端21发送的访问请求中解析得到的目标数据的标识信息为数据A,那么,可以直接将与数据A对应的索引信息X1返回给客户端21,以由客户端21基于索引信息X1从区块链节点23处获取数据A的原始数据;若解析得到的目标数据的标识信息为数据B,从存储的已上链数据的对应关系中无法查找到数据B这一标识信息,因此,执行从数据管理系统221处获取数据B的原始数据的操作。
步骤305,业务系统222基于解析得到的标识信息向数据管理系统221发送针对目标数据的获取请求。
在本步骤中,业务系统222可以基于解析得到的标识信息生成获取请求,并将该获取请求发送至数据管理系统221,以由数据管理系统221查找并返回目标数据。
承接上述举例,可以基于数据B这一标识信息生成获取请求,并将生成的获取请求发送至数据管理系统221,以由数据管理系统221根据数据B这一标识信息查找并返回数据B的原始数据。
步骤306,数据管理系统221解析接收到的获取请求,以得到目标数据的标识信息。
步骤307,数据管理系统221根据解析得到的标识信息获取目标数据。
承接上述举例,业务系统222可以基于数据B这一标识信息生成针对数据B的原始数据的获取请求,并发送至数据管理系统221。数据管理系统221在接收到获取请求的情况下,可以对该获取请求进行解析以得到数据B这一标识信息,以在本地中查找数据B的原始数据。例如,本地可以保存有如表2所示的数据。
在此基础上,数据管理系统221即可查找得到数据B的原始数据M2,以将该原始数据M2返回给业务系统222。
步骤308,数据管理系统221将获取的目标数据返回至业务系统222。
步骤309,业务系统222基于接收到的目标数据生成区块链交易。
承接上述举例,业务系统222在接收到数据管理系统221返回的数据B的原始数据M2的情况下,即可基于原始数据M2生成区块链交易,以执行将原始数据M2上链的操作。
步骤310,业务系统222将生成的区块链交易发送至区块链节点23。
步骤311,区块链节点23与所属区块链网络中的其他节点对接收到的区块链交易进行交易共识。
步骤312,区块链节点23在确定共识通过的情况下,对区块链交易进行存储,并将区块链交易的索引信息发送至业务系统222。
在本实施例中,可以采用任一类型的共识方式,对区块链交易进行共识。例如,可以采用POW(Proof of Work,工作量证明)对区块链交易进行共识,也可以采用PBFT(Practical Byzantine Fault Tolerance,实用拜占庭容错算法)对区块链交易进行共识,本说明书对此不作限制。其中,既可以直接基于区块链交易进行共识,也可以优先计算区块链交易的哈希值,再对计算得到的哈希值进行共识,本说明书对此也不作限制。
承接上述举例,假设区块链节点23针对基于原始数据M2生成的区块链交易生成的索引信息为X2,那么在将基于原始数据M2生成的区块链交易存储至区块链的同时,可以将索引信息X2返回至业务系统222。
步骤313,业务系统222将接收到的索引信息发送至客户端21。
承接上述举例,业务系统222在接收到索引信息X2的情况下,一方面,可以将数据B这一标识信息与索引信息X2的对应关系记录于本地,以用于将索引信息X2提供给后续针对数据B的原始数据M2的访问者;另一方面,可以将索引信息X2返回至客户端21,以由客户端21基于索引信息从区块链节点23处获取数据B的原始数据M2。
步骤314,客户端21基于索引信息生成针对目标数据所对应区块链交易的请求交易。
步骤315,客户端21将生成的请求交易发送至区块链节点23。
步骤316,区块链节点23基于请求交易中的索引信息获取目标数据对应的区块链交易。
步骤317,区块链节点23向客户端21返回目标数据对应的区块链交易。
步骤318,客户端21解析接收到的区块链交易得到目标数据。
需要声明的是,尽管本实施例中的客户端21基于数据B的索引信息X2从区块链节点23处获取数据B的原始数据M2,但在实际应用中,可以从区块链节点23所属区块链网络中的任一节点获取数据B的原始数据M2。除此之外,业务系统222也可以直接向客户端21返回获取的目标数据,而无需将目标数据的索引信息发送至客户端21,由客户端21自行获取。
由上述技术方案可知,任一机构的业务系统在接收到数据访问请求的情况下,可以从该机构的数据管理系统中获取相应的数据,并基于获取的数据生成区块链交易,以对该数据进行上链。换言之,对于任一机构,不再主动对数据进行上链,而仅仅是在接收到数据访问请求的情况下,对被请求的数据进行上链,使得存在被访问需求的数据被上链,而不对其他数据进行上链,避免了相关技术中将所有数据均保存至区块链,导致区块链存储资源利用率低的技术问题。
图4为本说明书一示例性实施例示出的另一种数据上链架构的示意图。如图4所示,该数据上链架构中包括:客户端41、业务处理平台42、机构421、机构422和区块链节点43。其中,业务处理平台42负责统筹管理各个机构的数据交互。需要声明的是,图4所示的机构421和机构422仅是示意性的,在实际应用中业务处理平台42统筹管理的机构数量可能远不止机构421和机构422。在这些机构中,每一机构均包含一数据管理系统和业务系统,例如,图4中的机构421包含数据管理系统4211和业务系统4212,数据管理系统4211负责对机构421所维护的数据进行存储和管理,而业务系统4212负责与业务处理平台进行交互,对于机构422亦是如此,在此不再赘述。在该架构中,客户端41作为本说明书中的数据使用方,业务处理平台42作为本说明书中的业务处理方,机构421和机构422等由业务处理平台42统筹管理的机构作为本说明书中的数据所有方。接下来,结合图5介绍基于该架构的数据上链方法。
图5为本说明书一示例性实施例示出的另一种数据上链方法的交互图。如图5所示,该方法可以包括以下步骤:
步骤501,客户端41向业务处理平台42发送针对目标数据的访问请求。
在上一实施例中,实际上存在一定的前提,即客户端用户必须事先知晓所要访问的目标数据由哪一机构维护,以向该机构的业务系统发起数据访问请求。然而,在实际应用中,客户端用户通常无法知晓所要访问的数据由哪一机构维护。本实施例即为在该场景下提出的数据上链方法。
在本实施例中,由业务处理平台42统筹负责各个机构与数据使用方之间的数据交互。如图4所示的机构421与机构422均通过业务处理平台42与客户端41进行交互。
步骤502,业务处理平台42解析访问请求得到目标数据的标识信息。
步骤503,业务处理平台42获取已上链数据的标识信息。
步骤504,业务处理平台42判断目标数据是否已经上链;若是,则直接向客户端41返回目标数据的索引信息,以由客户端41基于接收到的索引信息从区块链节点43处获取目标数据;否则,跳转至步骤505。
在本实施例中,业务处理平台42可以保存有各个机构维护的且已经上链的数据的标识信息与其在区块链上的索引信息的对应关系。那么,在接收到客户端41发送的针对目标数据的访问请求且从中解析得到目标数据的标识信息的情况下,即可基于记录的已上链数据的标识信息与索引关系的对应关系确定该目标数据是否已经被上链。若已经记录了目标数据的标识信息与其索引信息的对应关系,确定目标数据已经被上链,可以直接将目标数据的索引信息返回给客户端41,以由客户端41基于接收到的索引信息从区块链节点43处获取目标数据;否则,执行确定保存有目标数据的机构的操作。
步骤505,业务处理平台42获取各个机构所保存数据的信息,以确定保存有目标数据的机构(以机构421为例进行介绍)。
在本实施例中,业务处理平台42还可以保存有各个机构保存的数据的信息,例如,可以记录有各个机构与其所保存的数据的标识信息的对应关系。例如,可以记录有如表3所示的对应关系。
假设基于访问请求解析得到的目标数据的标识信息仍为数据B,那么,可以基于确定保存有数据B的原始数据的机构为机构421。
步骤506,业务处理平台42基于目标数据的标识信息生成针对目标数据的获取请求。
步骤507,业务处理平台42向机构421的业务系统4212发送生成的获取请求,以由业务系统4212将获取请求转发至数据管理系统4211。
步骤508,数据管理系统4211解析获取请求得到目标数据的标识信息。
步骤509,数据管理系统4211根据解析得到的标识信息获取目标数据。
步骤510,数据管理系统4211向业务系统4212返回目标数据,以由业务系统4212将目标数据转发至业务处理平台42。
数据管理系统4211获取目标数据的过程可参照上一实施例对数据管理系统221的介绍,在此不再赘述。
步骤511,业务处理平台42基于接收到的目标数据生成区块链交易。
步骤512,业务处理平台42将生成的区块链交易发送至区块链节点43。
步骤513,区块链节点43与所属区块链网络中的其他节点对接收到的区块链交易进行交易共识。
步骤514,区块链节点43在确定共识通过的情况下,将区块链交易存储至区块链,并将该区块链交易的索引信息发送至业务处理平台42。
步骤515,业务处理平台42将接收到的索引信息发送至客户端41。
步骤516,客户端41基于索引信息生成针对目标数据所对应区块链交易的请求交易。
步骤517,客户端41将生成的请求交易发送至区块链节点43。
步骤518,区块链节点43基于请求交易中的索引信息获取目标数据对应的区块链交易。
步骤519,区块链节点43向客户端41返回目标数据对应的区块链交易。
步骤520,客户端41解析接收到的区块链交易得到目标数据。
数据上链以及将索引信息返回至客户端41以由客户端41基于索引信息从区块链节点43处获取目标数据的操作可参照上一实施例的介绍,仅仅将“业务系统222”替换为“业务处理平台42”而已,在此不再赘述。
需要声明的是,与上一实施例相类似,尽管本实施例中的客户端41基于数据B的索引信息从区块链节点43处获取数据B的原始数据,但在实际应用中,可以从区块链节点43所属区块链网络中的任一节点获取数据B的原始数据。除此之外,业务处理平台42也可以直接向客户端41返回获取的目标数据,而无需将目标数据的索引信息发送至客户端41,由客户端41自行获取。
相较于上一实施例,本实施例中的数据使用方无需预先知晓所需访问数据由哪一机构维护,而只需通过业务处理平台交互即可获取所需访问的数据。且本实施例中的业务处理平台也仅在接收到数据访问请求的情况下,对相应的数据进行上链,同样避免了相关技术中将所有数据均保存至区块链,导致区块链存储资源利用率低的技术问题。
图6是一示例性实施例提供的一种电子设备的示意结构图。请参考图6,在硬件层面,该设备包括处理器602、内部总线604、网络接口606、内存608以及非易失性存储器610,当然还可能包括其他业务所需要的硬件。处理器602从非易失性存储器610中读取对应的计算机程序到内存608中然后运行,在逻辑层面上形成数据上链装置。当然,除了软件实现方式之外,本说明书一个或多个实施例并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
请参考图7,在软件实施方式中,该数据上链装置可以包括:
第一发送单元701,从数据所有方处获取目标数据;其中,所述业务处理方具备向所述数据所有方获取数据的权限;
第二发送单元702,在所述目标数据为响应于数据使用方发起的访问请求而获取的情况下,基于所述目标数据生成区块链交易,并将生成的区块链交易发送至区块链节点,以使所述区块链节点与其所属区块链网络中包含的其他节点进行交易共识,并在共识通过的情况下,将所述区块链交易存储至区块链;
返回单元703,在确定所述数据使用方具备所述目标数据的访问权限的情况下,向所述数据使用方返回从所述数据所有方获取的所述目标数据或所述区块链节点针对所述区块链交易生成的索引信息;其中,所述索引信息被所述数据使用方用于生成针对所述区块链交易的请求交易,以从所述区块链节点所属区块链网络中任一节点处获取所述区块链交易或所述区块链交易中所含的所述目标数据。
可选的,所述业务处理方为所述数据所有方对应的业务系统;第一发送单元具体用于:
从所述访问请求中解析出所述目标数据的标识信息,并生成包含所述标识信息的获取请求;
向所述数据所有方对应的数据管理系统发送所述获取请求;其中,所述获取请求被所述数据管理系统解析得到所述标识信息,以使所述数据管理系统基于所述标识信息查找所述目标数据。
可选的,所述业务处理方为对应于各个数据所有方的业务处理平台;第一发送单元具体用于:
从所述访问请求中解析出所述目标数据的标识信息,并生成包含所述标识信息的获取请求;
确定保存有所述目标数据的数据所有方,并向确定的数据所有方的业务系统发送所述获取请求,所述获取请求被所述业务系统转发至确定的数据所有方的数据管理系统,且被所述数据管理系统解析得到所述标识信息,以使所述数据管理系统基于所述标识信息查找所述目标数据。
可选的,第一发送单元还具体用于:
从所述访问请求中解析出用于表征保存有所述目标数据的数据所有方的指示信息;或者,
基于所述标识信息从预先创建的数据存储记录表中,确定出保存有所述目标数据的数据所有方,所述数据存储记录表记录有各个数据所有方所保存的数据的标识信息。
可选的,还包括:
判断单元704,响应于所述数据使用方发起的针对目标数据的访问请求,判断所述目标数据是否已经被存储至所述区块链;
若是,向所述数据使用方返回所述区块链节点针对所述区块链交易生成的索引信息;
否则,执行从所述数据所有方获取所述目标数据并将其上链的操作。
可选的,还包括:
记录单元705,记录已存储至区块链的数据与其索引信息的对应关系;
判断单元704进一步用于:若存在与所述目标数据相匹配的对应关系,则判定所述目标数据已经被存储至所述区块链;若不存在与所述目标数据相匹配的对应关系,则判定所述目标数据未被存储至所述区块链。
可选的,还包括:
验证单元706,接收所述数据使用方发送的可验证授权信息;在确定所述可验证授权信息由所述数据所有方颁发,且用于将所述目标数据授权至所述数据使用方的情况下,确定所述数据使用方具备所述目标数据的访问权限。
可选的,所述索引信息包括:
所述区块链交易的哈希值;或者,所述区块链交易的流水号;或者,所述目标数据的哈希值。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
在一个典型的配置中,计算机包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器 (RAM)和/或非易失性内存等形式,如只读存储器 (ROM) 或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存 (PRAM)、静态随机存取存储器 (SRAM)、动态随机存取存储器 (DRAM)、其他类型的随机存取存储器 (RAM)、只读存储器 (ROM)、电可擦除可编程只读存储器 (EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘 (DVD) 或其他光学存储、磁盒式磁带、磁盘存储、量子存储器、基于石墨烯的存储介质或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
在本说明书一个或多个实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。