用于获取区块链中的数据的方法、装置及存储介质
技术领域
本公开的实施例总体上涉及区块链的技术领域,并且更具体地,涉及用于获取区块链中的数据的方法、装置及存储介质。
背景技术
随着云计算、互联网技术的快速发展,越来越多的数据被记录存储下来,我们正式进入到大数据时代。数据的共享是大势所趋和市场正向发展的重要需求。在进行数据分析时,多维度、多方面的数据更能挖掘出数据潜在的价值,发挥数据的最大作用,而任何一家数据机构拥有的数据是比较单一片面化的,获取更多数据的最佳途径是通过数据机构之间的分享而从相关行业得到。
全国多地都成立了大数据交易中心,提供一个交易的平台并配置相关的优惠政策让不同行业的数据机构将数据托管出来。然而,绝大多数数据机构并不愿意将自己的数据通过中心化的交易中心进行交易。
目前的数据共享有两种主要模式。第一种是托管交易模式,各个数据机构将自身数据托管到交易中心的数据库,由交易中心提供接口与外部进行数据链接交易。
第二种是聚合交易模式,聚合中心通过接口将数据机构链接起来,机构无需事先将数据上传给聚合中心,数据由机构自己保管。当某个数据机构需要获取数据时,通过聚合中心与拥有相应数据的数据机构进行交互,拥有相应数据的数据机构返回数据,由聚合中心统一汇总返回给查询数据的数据机构。
区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本。广义来讲,区块链技术是利用块链式数据结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算范式。
属性密码学作为一种新型的密码算法,可以有效实现细粒度的非交互访问控制机制,并具有广泛的应用前景。属性加密方式的系统中每个权限可由一个属性表示,由一个权威机构对所有的访问者的权限属性进行认证并颁发相应的秘钥,加密的访问策略可根据需要由资源发布者来灵活指定,任何人都能够公开访问加密后的资源,但只有满足访问策略的访问者才可以通过解密来访问该资源。通过基于属性加密的权限控制,可以实现数据访问权限控制和保证数据安全。
发明内容
现有的数据共享模式还存在一些问题。例如,在数据共享的托管交易模式中,将数据交给机构托管后,数据就完全由数据中心掌控,交易的数量、规则、对象等完全依赖数据中心的可信度和安全性。而在聚合交易模式中,看似数据都由数据机构各自控制,聚合中心只是起到了链接的功能,但聚合中心完全可以将交易数据存留下来,也相当于拥有了数据。因此,目前的数据共享模式总体是中心化的模式,过度依赖于中心节点,因此无法保障进行数据共享的各数据机构的数据安全和权益。
本公开的实施例提供了一种用于获取区块链中的数据的方法、装置及存储介质。
本公开的第一实施例提出了一种用于获取区块链中的数据的方法,所述方法包括:向所述区块链中的智能合约发送数据获取请求,以使得所述智能合约基于预设的条件判断是否同意所述数据获取请求,所述数据获取请求包括目标数据的特征信息;在所述数据获取请求被同意的情况下,从所述区块链中的认证授权集群接收私钥,所述认证授权集群包括所述区块链中的两个或更多个节点;以及从所述区块链中获得所述目标数据并使用所述私钥对所述目标数据进行解密。
在该实施例中,各节点能够从区块链中获取其它节点所共享的数据,使得数据能够在去中心化、不可篡改、可追溯的网络中进行共享,从而避免中心化组织对数据进行操控的可能性。此外,通过对数据进行加密再存储于区块链上,并由授权认证集群来颁发私钥确保了数据共享的可靠性和安全性。另外,使用区块链中的两个以上的节点作为授权认证集群进行私钥的授权,保证了单点故障或被劫持不影响授权认证集群的服务,确保私钥生成的合法性和正确性。
本公开的第二实施例提出了一种在区块链中进行数据处理的装置,所述装置包括:处理器;以及存储器,其用于存储指令,当所述指令执行时使得所述处理器执行以下操作:向所述区块链中的智能合约发送数据获取请求,以使得所述智能合约基于预设的条件判断是否同意所述数据获取请求,所述数据获取请求包括目标数据的特征信息;在所述数据获取请求被同意的情况下,从所述区块链中的认证授权集群接收私钥,所述认证授权集群包括所述区块链中的两个或更多个节点;以及从所述区块链中获得所述目标数据并对所述目标数据进行解密。
本公开的第三实施例提出了一种计算机可读存储介质,其具有存储在其上的计算机可读程序指令,所述计算机可读程序指令用于执行根据本公开的第一实施例所述的用于获取区块链中的数据的方法。
附图说明
结合附图并参考以下详细说明,本公开的各实施例的特征、优点及其它方面将变得更加明显,在此以示例性而非限制性的方式示出了本公开的若干实施例,在附图中:
图1示出了根据本公开的一个实施例的数据共享系统的架构示意图;
图2示出了根据本公开的一个实施例的用于将数据存储在区块链上的方法的流程图;
图3示出了根据本公开的一个实施例的用于获取区块链中的数据的方法的流程图;
图4示出了根据本公开的一个实施例的用于为数据请求方发放私钥的方法的流程图;以及
图5示出了根据本公开的一个实施例的用于获取区块链中的数据的装置的示意图。
具体实施方式
以下参考附图详细描述本公开的各个示例性实施例。虽然以下所描述的示例性方法、装置包括在其它组件当中的硬件上执行的软件和/或固件,但是应当注意,这些示例仅仅是说明性的,而不应看作是限制性的。例如,考虑在硬件中独占地、在软件中独占地、或在硬件和软件的任何组合中可以实施任何或所有硬件、软件和固件组件。因此,虽然以下已经描述了示例性的方法和装置,但是本领域的技术人员应容易理解,所提供的示例并不用于限制用于实现这些方法和装置的方式。
此外,附图中的流程图和框图示出了根据本公开的各个实施例的方法和系统的可能实现的体系架构、功能和操作。应当注意,方框中所标注的功能也可以按照不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,或者它们有时也可以按照相反的顺序执行,这取决于所涉及的功能。同样应当注意的是,流程图和/或框图中的每个方框、以及流程图和/或框图中的方框的组合,可以使用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以使用专用硬件与计算机指令的组合来实现。
本文所使用的术语“包括”、“包含”及类似术语是开放性的术语,即“包括/包含但不限于”,表示还可以包括其它内容。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”等等。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当视为说明书的一部分。对于附图中的各单元之间的连线,仅仅是为了便于说明,其表示至少连线两端的单元是相互通信的,并非旨在限制未连线的单元之间无法通信。
图1示出了根据本公开的一个实施例的数据共享系统100的架构示意图。在图1所示出的实施例中,数据共享系统100包括经由网络通信连接的节点101、102、103、104、105、106、107和108,其中,网络可以是互联网、局域网、广域网等任何形式的网络,连接可以是无线连接、有线连接等任何形式的连接方式。在图1的实施例中,仅示出了8个节点101、102、103、104、105、106、107和108,然而这仅仅是示例性的。在其它实施例中,该数据共享系统100可以包括任意数量的节点。
在图1的实施例中,节点101、102、103、104、105、106、107和108构成一个区块链网络,并且,这些节点能够各自上传数据到区块链中,从而能够在彼此之间进行数据共享。数据的共享可以是有偿的或无偿的,例如,节点之间可以进行完全无偿的数据共享,或者,节点之间可以根据预设的一些规则来进行数据的交易、数据的交换、或者通过提供数据而获取服务、等等。为了保证隐私性,所共享的数据都经过加密而被上传至区块链,因此相应地,在节点获取这些加密后的数据后,需要对密文进行解密来获得原始数据。
在本实施例中,数据的加密和解密采用基于属性密码的方式。因此,在本实施例中,区块链中的所有这些节点101-108同时也构成了认证授权(CA,CertificateAuthority)集群,用于为数据请求方节点分配属性并生成解密的私钥。然而,在其它实施例中,认证授权集群可以由区块链中的一部分节点组成,例如,两个或多于两个的节点。构成认证授权集群的节点被称为认证授权节点。此外,在本实施例中,在认证授权集群的每个节点处还存储了关于属性密码加密模式的主私钥,以便在为数据请求方节点生成解密的私钥时使用。
另外,认证授权集群还可以管理各成员节点的注册和退出,并且在第一数据链中存储各节点的ID、公钥等节点信息。当某一设备在认证授权集群提供的平台上进行注册时,认证授权集群通过集群中各节点的共识对该设备的加入进行确认,以允许该设备加入该区块链。此后,认证授权集群为其分配专属的身份识别码(ID)和公私钥,其中公钥相当于注册用户的地址,私钥相当于密码,并且该设备接入该区块链,成为其中的一个节点。在一个实施例中,可以按照递增或递减顺序的方式为新加入的节点生成ID。然而,在其它实施例中,也可以按照随机字符串的方式生成ID。应当指出,所生成的每个成员的ID都不相同。当新加入的节点已经被分配ID和公私钥之后,各节点同步存储在各节点处的第一数据链中的信息,即,分别将新加入的节点的信息(例如,ID和公钥)添加到第一数据链中。然后,新加入的节点同步第一数据链中的所有信息。而当某一节点退出该区块链时,认证授权集群将该节点的ID设置为失效,即,认证授权集群中的各节点分别将该退出的节点的信息从第一数据链中删除,从而该退出的成员节点将无法参与后续的数据共享。
如上面提及的,在图1所示的实施例中,区块链中的所有节点101-108均可以将自己的数据上传至区块链,并可以向区块链中的其它节点请求获取期望的数据。在上传数据到区块链的过程中,首先,节点101-108分别以预定的格式对某一时间段内(例如,一天、一个月等等)可以与其它节点共享的数据进行处理。在本实施例中,预定的格式可以是“节点ID-数据部分”的形式。在其它实施例中,预定的格式也可以具有其它形式。具体来说,在本实施例中,各节点101-108使用属性加密的方法对可以与其它节点共享的数据进行加密,并定义加密策略,加密策略中包括能对该加密数据进行解密的节点的属性信息。在本实施例中,属性信息被设为具有“ID:日期”的形式,例如,“101:2018-04-02”,当区块链中的其它节点想要解密数据时,必须从认证授权集群申请得到该属性才能解密数据密文。在其它实施例中,加密策略中的属性信息可以具有其它形式。在图1所示的实施例中,除了加密后的数据密文之外,各节点101-108还将关于该时间段内可以与其它节点共享的数据的摘要和/或简介包括在预定格式中的数据部分中,以供其它节点在请求数据时进行查看。
在各节点101-108已经分别按预定格式处理完某一时间段内可以与其它节点共享的数据之后,各节点将数据上传至区块链。例如,各节点101-108在每天的固定时间(例如,凌晨一点)将这天内的经处理的数据上传至区块链。也就是说,各节点101-108向区块链中的其它节点广播待上链数据,经过区块链中各节点101-108的共识之后,各节点101-108所提交的所有数据被创建成第二数据链的一个新的区块,并分别在各节点处进行同步。第二数据链是一条与第一数据链不同的区块链,与第一数据链一样,都存储在各节点处,它用于存储区块链中各节点共享的数据。
接下来,以节点101作为数据请求方为例详细描述区块链中的数据的获取方法。首先,节点101通过预定的查询条件来在第二数据链中查询期望的数据。在本实施例中,预定的查询条件为节点ID和上传日期,例如,节点102在2018年1月1日上传到区块链的数据。在其它实施例中,查询条件还可以是数据类型,例如,各节点101-108在按预定格式对预定时间段内可共享的数据进行处理时,便已经按照预定规则对数据进行了分类。在这种情况下,节点101可以将期望的数据类型作为查询条件,来查询各节点上传的所有该种类型的数据。然而,在其它实施例中,查询条件并不限于节点ID和上传日期、数据类型等,其可以是任何其它查询条件。
在定位到按照查询条件过滤的第二数据链中的区块之后,节点101可以查看所定位的区块中的数据的摘要和简介,确定是否是其期望的数据。如果确定需要获取所定位的区块中的全部数据或其中一部分数据,则节点101向智能合约发送数据获取请求。具体来说,节点101调用智能合约并将与目标数据的特征信息有关的参数传入智能合约。例如,查询条件为节点102在2018年1月1日上传的数据,则在定位到该日期的区块,并由节点101查看该区块中的由节点102所上传的数据的摘要和简介并确认需要获取该数据之后,节点101调用智能合约并传入节点102的ID和数据日期(即2018年1月1日)。
接下来,智能合约判断是否满足预设的条件。在一个实施例中,智能合约向数据所有方节点(例如,节点102)发送该数据获取请求,数据所有方节点如果同意,则向智能合约返回确认消息,同意数据请求方节点101获得该数据。在该实施例中,智能合约判断是否接收到来自目标数据的数据所有方节点的确认消息。
然而,在其它实施例中,智能合约可以不向数据所有方节点发送该数据获取请求,并且相应地,数据所有方节点也不返回这样的确认消息。例如,在构建区块链并部署智能合约时,便已经由部署智能合约的节点根据预定的规则在智能合约中定义了区块链中各节点所具有的数据获取权限。举例来说,这样的规则可以包括基于信用体系来分配不同的数据获取权限。例如,当信用较高的节点101、103向节点102请求获取数据时,开放所有日期或类型的数据的获取权限;而当信用一般的节点104向节点102请求获取数据时,仅开放固定时间段内(例如,最近一个月之内)或某种类型的数据的获取权限。然而,预定的规则并不限于此,其可以是任意设定的规则。在这种情况下,由于已经事先为区块链中的各节点定义了数据获取权限,因此不再需要数据所有方节点返回同意数据请求方节点获取该数据的确认消息。在这样的实施例中,数据所有方节点并未向智能合约返回确认消息,而智能合约根据事先在智能合约中针对区块链中的各节点定义的不同数据获取权限,来判断当前的数据请求方节点是否具有获取目标数据的权限。
此外,在其它实施例中,数据所有方节点还可以根据数据请求方节点的ID来返回或者不返回确认消息。也就是说,已经事先为一部分节点定义了数据获取权限,而另一部分节点在请求获取数据时,仍需要智能合约向数据所有方节点发送数据获取请求,并且数据所有方节点向智能合约返回同意数据请求方节点获取数据的确认消息。在这样的实施例中,智能合约中预设的条件可以是以上实施例中预设条件的组合。
智能合约如果判断满足预设的条件,则生成确认消息并发送给认证授权集群。而在不满足预设条件的情况下,智能合约向数据请求方节点返回拒绝获取数据的消息。应当指出,为了避免潜在的不安全性,数据请求方节点101并不包括在认证授权集群中。所生成的确认消息包括数据请求方节点101的基本信息(例如,ID)以及目标数据的特征信息(例如,拥有目标数据的所有方节点的ID、目标数据的日期等等)。
认证授权集群在收到确认消息之后,其中的每个节点判断数据请求方节点101和数据所有方节点双方的身份是否合法,即,双方节点是否属于区块链中的节点,其ID是否有效。如果通过认证授权集群中各节点的共识确认双方节点的身份合法,即,双方节点均属于区块链中的节点,则认证授权集群通过共识为数据请求方节点101分配新的属性,例如“ID:日期信息”。然后,认证授权集群还基于所分配的属性,利用存储在认证授权集群中的主私钥来生成关于该属性的私钥。在一个实施例中,生成私钥的过程可以由认证授权集群中的一个节点完成。在其它实施例中,生成私钥的过程可以由认证授权集群中的两个或更多个节点完成,例如,由三个节点各自生成私钥的1/3,再整合成一个完整的私钥。之后,认证授权集群中的各节点还对所生成的私钥进行共识,并且在完成共识之后,将分配属性和生成私钥的记录以区块的形式存储在第一数据链中。在一个实施例中,共识使用的是PBFT算法,但是在其它实施例中,可以采用任何其它共识算法。如果认证授权集群判断某一方节点已经退出区块链而不再属于区块链中的节点,即,判断身份不合法,则向该节点返回身份不合法的消息。
接下来,认证授权集群中的任一节点将所生成的私钥发送给数据请求方节点101,并向数据所有方节点发送数据共享确认消息。数据请求方节点101从区块链的第二数据链中获得目标数据,并利用所接收到的私钥对目标数据进行解密,从而获得原始数据。
在一个实施例中,认证授权集群还可以对所生成的私钥进行进一步加密,从而能够进一步提高隐私性和数据安全性。在该实施例中,每个节点都拥有一对非对称秘钥(可以是RSA、基于椭圆曲线的加密算法),在加入区块链时将非对称秘钥的公钥同时发送给认证授权集群中的每一节点。这样,在认证授权集群基于分配给数据请求方节点的属性生成私钥后,利用非对称秘钥的公钥对该私钥进行加密。而数据请求方节点101在接收到经加密的私钥后,利用非对称秘钥的私钥对其进行解密,从而获得解密目标数据的私钥。
图2示出了根据本公开的一个实施例的用于将数据存储在区块链上的方法的流程图。该方法在将数据上传到区块链网络的每个节点处进行。如图2中看到的,该用于将数据存储在区块链上的方法200包括以下步骤:
首先,在步骤201中,按预定格式对一段时间内可以共享的数据进行处理。具体来说,在本实施例中,节点首先使用属性加密的方法对某一时间段内可以与其它节点共享的数据进行加密,并定义加密策略,加密策略中包括能对该加密数据进行解密的节点的属性信息。在本实施例中,属性信息被定义为具有“ID:日期”的形式。此外,节点还提供待上传的数据的摘要或简介,并以节点ID-数据部分的格式进行整理,其中数据部分包括数据的摘要或简介以及加密后的数据密文。
接下来,在步骤202中,在固定的时间将经处理的数据上传至区块链。具体来说,在本实施例中,节点向区块链网络中的其它节点广播待上链数据,区块链网络中的所有节点经过共识,将该待上链数据与在该时间其它节点的所有待上链数据共同存储于第二数据链的一个新区块中。至此便完成了处理数据和存储于区块链中的过程。
以下将参照图3和图4来描述当获取区块链中的特定数据时,作为数据请求方节点或授权认证节点的分布式节点各自的动作过程。
图3示出了根据本公开的一个实施例的用于获取区块链中的数据的方法的流程图。从图3中可以看出,该用于获取区块链中的数据的方法300包括以下步骤:
首先,在步骤301中,向区块链中的智能合约发送数据获取请求,以使得智能合约基于预设的条件判断是否同意数据获取请求,数据获取请求包括目标数据的特征信息。在一些实施例中,向区块链中的智能合约发送数据获取请求包括:调用智能合约并写入与目标数据的特征信息有关的参数。在一些实施例中,预设的条件包括:接收到来自目标数据的数据所有方节点的确认消息,该确认消息指示同意目标数据被获取。在另一些实施例中,预设的条件包括:在智能合约中定义的目标数据的数据请求方节点的数据获取权限。如上面参照图1详细描述的,智能合约可以将该数据获取请求发送给数据所有方节点并从数据所有方节点接收同意数据请求方节点获取目标数据的确认消息。另外,也可以在智能合约中预先定义区块链中各节点的数据获取权限,在此将不再赘述。
接着,在步骤302中,在数据获取请求被同意的情况下,从区块链中的认证授权集群接收私钥,认证授权集群包括区块链中的两个或更多个节点。具体来说,在同意数据请求方节点获取目标数据时,智能合约向认证授权集群发送确认消息。而认证授权集群为数据请求方节点分配新的属性,并利用存储在认证授权集群中的主私钥来生成关于该属性的私钥,数据请求方节点从认证授权集群接收私钥。
然后,在步骤303中,从区块链中获得目标数据并使用私钥对目标数据进行解密。在本实施例中,目标数据通过属性加密方式进行加密和解密。利用属性密码原生的对数据访问控制的良好支持,数据先经过基于属性的加密方法进行加密,再存储在区块链上,保证了数据安全。通过认证授权集群赋予属性,加强了对属性的管理以及交易过程的透明化和正规化。
在一些实施例中,用于获得区块链中的数据的方法300还包括以下步骤(在图3中未示出):在步骤301之前,基于预定的查询条件查询区块链中的数据的摘要,以确定需要获取的目标数据。预定的查询条件可以是节点ID、数据上链日期、数据类型等等。以这种方式,能够使得数据请求方节点能够事先确定目标数据,从而提高数据获取的效率。
图4示出了根据本公开的一个实施例的用于为数据请求方发放私钥的方法的流程图。从图4中可以看出,该用于为数据请求方发放私钥的方法400包括以下步骤:
首先,在步骤401中,接收来自智能合约的确认消息,判断数据请求方节点和数据所有方节点的身份是否合法。确认消息包括数据请求方节点101的基本信息(例如,ID)以及目标数据的特征信息(例如,数据所有方节点的ID、目标数据的日期等等),也就是说,双方节点的ID是否有效。认证授权集群中的每个节点都进行这样的判断,并进行共识。
接下来,在步骤402中,在双方节点的身份被确认合法的情况下,为数据请求方节点分配新的属性。属性的分配也在认证授权集群的各节点的共识下完成。在一个实施例中,属性可以具有“ID:日期信息”的格式。在其它实施例中,属性也可以具有其它形式。如果判断某一方节点的身份失效,则向该节点返回身份不合法的消息。
然后,在步骤403中,利用主私钥,生成关于属性的私钥。生成私钥可以由认证授权集群中的一个节点完成,或者由认证授权集群中的多个节点合作完成。之后,由认证授权集群中各节点对所生成的私钥进行共识,并且在完成共识之后,将分配属性和生成私钥的记录以区块的形式存储在第一数据链中。
此后,在步骤404中,向数据请求方节点发送私钥并向数据所有方节点发送数据共享确认消息。
此外,替代地,上述方法能够通过计算机程序产品,即计算机可读存储介质来实现。计算机程序产品可以包括计算机可读存储介质,其上载有用于执行本公开的各个实施例的计算机可读程序指令。计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是但不限于电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其它自由传播的电磁波、通过波导或其它传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
一般而言,本公开的各种示例实施例可以在硬件或专用电路、软件、固件、逻辑,或其任何组合中实施。某些实施例可以在硬件中实施,而其它实施例可以在可以由控制器、微处理器或其它计算设备执行的固件或软件中实施。当本公开的各实施例被图示或描述为框图、流程图或使用某些其它图形表示时,将理解此处描述的方框、装置、系统、技术或方法可以作为非限制性的示例在硬件、软件、固件、专用电路或逻辑、通用硬件或控制器或其它计算设备,或其某些组合中实施。
图5示出了依据本公开的一个实施例所提出的用于获取区块链中的数据的装置500的方框图。从图5中可以看出,用于获取区块链中的数据的装置500包括处理器501和与处理器501耦接的存储器502。
存储器502存储有指令。指令在由处理器501执行时使得处理器501执行以下动作:
向区块链中的智能合约发送数据获取请求,以使得智能合约基于预设的条件判断是否同意数据获取请求,数据获取请求包括目标数据的特征信息;在数据获取请求被同意的情况下,从区块链中的认证授权集群接收私钥,认证授权集群包括区块链中的两个或更多个节点;以及从区块链中获得所述目标数据并使用私钥对目标数据进行解密。
在根据本公开的一个实施例中,向区块链中的智能合约发送数据获取请求包括:调用智能合约并写入与目标数据的特征信息有关的参数。
在根据本公开的一个实施例中,预设的条件包括:接收到来自目标数据的数据所有方节点的确认消息,确认消息指示同意目标数据被获取。
在根据本公开的一个实施例中,预设的条件包括:在智能合约中预先定义的目标数据的数据请求方节点的数据获取权限。
在根据本公开的一个实施例中,当指令执行时还使得处理器执行以下操作:在向区块链中的所智能合约发送数据获取请求之前,还基于预定的查询条件查询区块链中的数据的摘要,以确定需要获取的目标数据。
在根据本公开的一个实施例中,其中,目标数据通过属性加密方式进行加密和解密。
虽然上面描述了本公开的各种示例实施例可以在硬件或专用电路中实现,但是上述用于区块链的数据处理设备既可以以硬件的形式来实现,也可以通过软件的形式来实现,这是因为:在20世纪90年代,一个技术改进能够很容易地对该改进属于硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是属于软件上的改进(例如对于方法流程的改进)。然而,随着技术的持续发展,如今的很多方法流程的改进几乎都能够通过将改进的方法流程编程到硬件电路中来实现,换句话说,通过对于硬件电路编程不同的程序从而得到相应的硬件电路结构,即实现了硬件电路结构的改变,故这样的方法流程的改进也可以被视为硬件电路结构的直接改进。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device:PLD)(例如现场可编程门阵列(Field Programmable Gate Array:FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片可编程逻辑器件上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compi1er)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language:HDL),而HDL也并非仅有—种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware Description Language)、Confluence、CUPL(Cornell UniversityProgramming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(Ruby Hardware Description Language)等,目前最普遍使用的是VHDL(Very-High-Speed Integrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
用于执行本公开的各个实施例的计算机可读程序指令或者计算机程序产品也能够存储在云端,在需要调用时,用户能够通过移动互联网、固网或者其它网络访问存储在云端上的用于执行本公开的一个实施例的计算机可读程序指令,从而实施依据本公开的各个实施例所公开的技术方案。
以上所述仅为本公开的实施例可选实施例,并不用于限制本公开的实施例,对于本领域的技术人员来说,本公开的实施例可以有各种更改和变化。凡在本公开的实施例的精神和原则之内,所作的任何修改、等效替换、改进等,均应包含在本公开的实施例的保护范围之内。
虽然已经参考若干具体实施例描述了本公开的实施例,但是应当理解,本公开的实施例并不限于所公开的具体实施例。本公开的实施例旨在涵盖在所附权利要求的精神和范围内所包括的各种修改和等同布置。权利要求的范围符合最宽泛的解释,从而包含所有这样的修改及等同结构和功能。