掌桥专利:专业的专利平台
掌桥专利
首页

基于区块链的数据共享方法和装置

文献发布时间:2023-06-19 11:16:08


基于区块链的数据共享方法和装置

技术领域

本发明涉及计算机技术领域,特别涉及基于区块链的数据共享方法和装置。

背景技术

随着信息技术的发展,区块链技术由于其具有的开放性、不可篡改性、去中心化等优点,成为人们重点关注的技术。

在现有技术中,在区块链中每天需要存储大量的数据,并且存储的数据的业务类型各不相同。当用户需要获取某业务类型的数据时,则需要从大量的数据中查找,从而增加用户获取数据的难度。

发明内容

本发明实施例提供了基于区块链的数据共享方法和装置,能够降低用户获取数据的难度。

第一方面,本发明提供了基于区块链的数据共享方法,包括:

监听区块链广播的至少一个数据存储事件,其中,所述数据存储事件用于描述所述区块链的至少一个区块执行的数据存储操作;

记录每一个所述数据存储事件中用于表征共享数据的特征的特征值、所述共享数据的ID、交易哈希和区块哈希,其中,所述共享数据为一个所述区块所存储的上链数据在上链之前对应的数据,所述交易哈希用于描述上链数据存储至所述区块链的过程,所述区块哈希用于表征最新的所述区块中的数据和最新的所述区块所连接的区块中的数据;

根据记录的所述特征值、所述ID和用户设置的订阅条件,确定所述至少一个数据存储事件中是否存在至少一个目标事件;

当存在所述至少一个目标事件时,确定所述用户当前是否具有访问每一个所述目标事件对应的已订阅数据的权限;

当所述用户当前具有访问所述已订阅数据权限时,根据记录的所述目标事件中的所述特征值通过所述区块链获取所述已订阅数据,其中,所述已订阅数据包括目标共享数据、所述交易哈希对应的数据和所述区块哈希对应的数据中的至少一个,所述目标共享数据为对应的所述目标事件中的所述特征值所描述的数据;

将所述已订阅数据发送给所述用户。

优选地,

在所述确定所述用户当前是否具有访问每一个所述目标事件对应的已订阅数据的权限之前,进一步包括:

确定用户是否具有向所述区块链中存储数据的存储行为;

当所述用户具有所述存储行为时,确定所述存储行为的第一次数、每次所述存储行为对应的数据的第一ID、第一存储时间和第一数据大小;

根据所述第一次数、第一ID所指示的业务类型、所述第一存储时间和所述第一数据大小分别对应的权重值,计算所述用户的初始数据共享积分;

确定所述与所述初始数据共享积分相对应的初始有效期;

生成与所述用户设置的订阅条件相对应的认证令牌Auth Token和主题Topic;

将所述初始有效期的值赋值给所述Auth Token的目标有效期;

所述确定所述用户当前是否具有访问每一个所述目标事件对应的已订阅数据的权限,包括:

D1:确定所述用户的所述Auth Token的目标有效期是否失效,如果是,执行D3,否则,执行D2;

D2:执行根据记录的所述目标事件中的所述特征值通过所述区块链获取所述已订阅数据;

D3:向所述用户发送用于表征所述Auth Token已失效的提示信息;

所述将所述已订阅数据发送给所述用户,包括:

通过所述Topic将所述已订阅数据发送给所述用户。

优选地,

在所述将所述有效期的值赋值给所述Auth Token的有效期之后,进一步包括:

当监听到的所述至少一个数据存储事件中存在自发事件时,确定所述自发事件对应的自存数据的数据信息,其中,所述自发事件为所述用户向所述区块链上传数据后产生的事件,所述数据信息包括所述自存数据的第二数据大小、第二ID、第二存储时间以及所述用户的所述存储行为的第二次数;

根据所述第二次数、第二ID所指示的业务类型、所述第二存储时间和所述第二数据大小分别对应的权重值,计算所述用户的当前数据共享积分;

根据所述Auth Token的目标有效期和所述当前数据共享积分,确定当前有效期;

将所述当前有效期的值赋值给所述Auth Token的目标有效期。

优选地,

在所述根据记录的所述特征值、所述ID和用户设置的订阅条件,确定所述至少一个数据存储事件中是否存在至少一个目标事件之前,进一步包括:

确定用户所订阅的目标事件的事件数量;

创建用于放置所述事件数量的所述目标事件的队列;

所述根据记录的所述特征值、所述ID和用户设置的订阅条件,确定所述至少一个数据存储事件中是否存在至少一个目标事件,包括:

S0:建立包括至少一个所述数据存储事件的待处理集合;

S1:从所述待处理集合中确定当前数据存储事件;

S2:确定记录的所述当前数据存储事件中的所述特征值和所述ID是否与用户设置的订阅条件相匹配,如果是,执行S3,否则,执行S6;

S3:确定所述队列中的所述目标事件的当前数量是否等于所述事件数量,如果是,执行S5,否则,执行S4;

S4:将所述当前数据存储事件作为目标事件加入到所述队列中;

S5:执行所述确定所述用户当前是否具有访问每一个所述目标事件对应的已订阅数据的权限;

S6:从所述待处理结合中删除所述目标事件,返回S1。

优选地,

在所述监听区块链广播的至少一个数据存储事件之前,进一步包括:

在获取到共享数据时,建立所述共享数据对应的ID;

从所述共享数据中提取出特征值,其中,所述特征值用于表征所述共享数据的特征;

根据所述ID、所述特征值和所述共享数据生成上链数据;

将所述上链数据上传至区块链中,以使所述区块链根据执行的数据存储操作生成数据存储事件,并广播所述数据存储事件。

优选地,

所述从所述共享数据中提取出特征值,包括:

从用于表征所述共享数据的字符串中提取至少一条value,其中,每一条所述value用于表征所述共享数据的一个属性对应的数据内容;

从所述至少一条value中提取至少一个key,将提取的所述key作为特征值,其中,不同的所述key不相同。

优选地,

所述建立所述共享数据对应的ID,包括:

从至少一个预设业务类型中,确定所述共享数据对应的目标业务类型;

确定所述目标业务类型对应的目标号段;

确定最新数据对应的ID,其中,所述最新数据为所述目标业务类型对应的数据中在所述区块链上存储的时间最短的数据;

根据所述最新数据对应的ID,生成所述共享数据对应的ID。

优选地,

在所述获取共享数据之后,进一步包括:

E1:确定所述共享数据对应的交易类型是否为更新数据,如果是,执行E2,否则,执行E5;

E2:确定区块链中存储的与所述共享数据相对应的目标上链数据;

E3:确定所述共享数据与所述目标上链数据之间存在差异的差异数据;

E4:将所述差异数据与所述目标上链数据进行合并得到合并数据,并将所述合并数据作为上链数据,执行所述将所述上链数据上传至区块链中;

E5:执行所述建立所述共享数据对应的ID。

优选地,

在所述根据记录的所述特征值、所述ID和用户设置的订阅条件,确定所述至少一个数据存储事件中是否存在至少一个目标事件之前,进一步包括:

获取用户输入的待查业务类型对应的待查编码;

确定所述待查编码在待获取的已订阅数据对应的目标ID中所在的位置;

确定用于表征所述已订阅数据的特征的指定特征值;

生成包括所述待查编码、所述位置和所述指定特征值的订阅条件。

第二方面,本发明提供了基于区块链的数据共享装置,包括:

事件监听模块,用于监听区块链广播的至少一个数据存储事件,其中,所述数据存储事件用于描述所述区块链的至少一个区块执行的数据存储操作;

信息记录模块,用于记录所述事件监听模块监听到的每一个所述数据存储事件中用于表征共享数据的特征的特征值、所述共享数据的ID、交易哈希和区块哈希,其中,所述共享数据为一个所述区块所存储的上链数据在上链之前对应的数据,所述交易哈希用于描述上链数据存储至所述区块链的过程,所述区块哈希用于表征最新的所述区块中的数据和最新的所述区块所连接的区块中的数据;

事件处理模块,用于根据所述信息记录模块记录的所述特征值、所述ID和用户设置的订阅条件,确定所述至少一个数据存储事件中是否存在至少一个目标事件;

权限管理模块,用于当所述事件处理模块确定存在所述至少一个目标事件时,确定所述用户当前是否具有访问每一个所述目标事件对应的已订阅数据的权限;

数据管理模块,用于当所述权限管理模块确定所述用户当前具有访问所述已订阅数据权限时,根据记录的所述目标事件中的所述特征值通过所述区块链获取所述已订阅数据,其中,所述已订阅数据包括目标共享数据、所述交易哈希对应的数据和所述区块哈希对应的数据中的至少一个,所述目标共享数据为对应的所述目标事件中的所述特征值所描述的数据;将所述已订阅数据发送给所述用户。

第三方面,本发明还提供了智能电子设备,包括:至少一个存储器和至少一个处理器;

所述至少一个存储器,用于存储机器可读程序;

所述至少一个处理器,用于调用所述机器可读程序,执行第一方面中任一所述的基于区块链的数据共享方法。

第四方面,本发明还提供了计算机可读介质,所述计算机可读介质上存储有计算机指令,所述计算机指令在被处理器执行时,使所述处理器执行第一方面中任一所述的基于区块链的数据共享方法。

本发明实施例提供了基于区块链的数据共享方法和装置,当区块链上有数据存储时,区块链会广播关于存储的数据的数据存储事件,通过记录数据存储事件中的特征值、ID可以与用户设置的订阅条件进行比对,用以判断数据存储事件对应的数据是否为用户所需的数据,若是还需要判断用户此时是否具有访问该数据的权限,避免区块链上的数据被泄露,若用户具有访问数据权限,则可将数据存储事件中的交易哈希、区块哈希或已上链的数据发送给用户。综上可见,根据用户设置的订阅条件即可向用户提供其所需的数据,而无需用户自己从区块链上查看,因此,能够降低用户获取数据的难度。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明一实施例提供的基于区块链的数据共享方法的流程图;

图2是本发明另一实施例提供的基于区块链的数据共享方法的流程图;

图3是本发明一实施例提供的基于区块链的数据共享装置的示意图。

具体实施方式

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

在目前已有的技术中,首先区块链的主要作用是存储信息,任何需要保存的信息都可以写入区块链也可以从里面读取,所以它是数据库。其次,任何人都可以假设服务器加入区块链网络,成为一个节点。由于区块链里没有中心节点,每个节点都是平等的,都保存着整个数据库。因此,用户可以向任何一个节点写入/读取数据,因为所有节点最后都会同步,保证区块链一致。并且区块链没有管理员,它是彻底无中心的。而其他的数据库都有管理员,但是区块链没有。如果有人想对区块链添加审核,也实现不了,因为它的设计目标就是防止出现居于中心地位的管理当局。

区块链由一个个区块组成,区块很像数据库的记录,每次写入数据就是创建一个区块。每个区块的区块头上可以写入当前时间、上一个区块的哈希Hash、区块体的Hash等信息。然后将整个区块广播到网络中。但是,区块链上的信息是以Hash形式存储的,而通过Hash值无法反推到源数据,从而导致用户基于区块链中的Hash值无法确定数据的内容,导致用户难以查找所需数据。

基于上述问题,本发明实施例提供了基于区块链的数据共享方法,如图1所示,具体包括:

步骤101:监听区块链广播的至少一个数据存储事件,其中,所述数据存储事件用于描述所述区块链的至少一个区块执行的数据存储操作;

步骤102:记录每一个所述数据存储事件中用于表征共享数据的特征的特征值、所述共享数据的ID、交易哈希和区块哈希,其中,所述共享数据为一个所述区块所存储的上链数据在上链之前对应的数据,所述交易哈希用于描述上链数据存储至所述区块链的过程,所述区块哈希用于表征最新的所述区块中的数据和最新的所述区块所连接的区块中的数据;

步骤103:根据记录的所述特征值、所述ID和用户设置的订阅条件,确定所述至少一个数据存储事件中是否存在至少一个目标事件;

步骤104:当存在所述至少一个目标事件时,确定所述用户当前是否具有访问每一个所述目标事件对应的已订阅数据的权限;

步骤105:当所述用户当前具有访问所述已订阅数据权限时,根据记录的所述目标事件中的所述特征值通过所述区块链获取所述已订阅数据,其中,所述已订阅数据包括目标共享数据、所述交易哈希对应的数据和所述区块哈希对应的数据中的至少一个,所述目标共享数据为对应的所述目标事件中的所述特征值所描述的数据;

步骤106:将所述已订阅数据发送给所述用户。

在本发明实施例中,当区块链上有数据存储时,区块链会广播关于存储的数据的数据存储事件,通过记录数据存储事件中的特征值、ID可以与用户设置的订阅条件进行比对,用以判断数据存储事件对应的数据是否为用户所需的数据,若是还需要判断用户此时是否具有访问该数据的权限,避免区块链上的数据被泄露,若用户具有访问数据权限,则可将数据存储事件中的交易哈希、区块哈希或已上链的数据发送给用户。综上可见,根据用户设置的订阅条件即可向用户提供其所需的数据,而无需用户自己从区块链上查看,因此,能够降低用户获取数据的难度。

在本发明一实施例中,在所述确定所述用户当前是否具有访问每一个所述目标事件对应的已订阅数据的权限之前,进一步包括:

确定用户是否具有向所述区块链中存储数据的存储行为;

当所述用户具有所述存储行为时,确定所述存储行为的第一次数、每次所述存储行为对应的数据的第一ID、第一存储时间和第一数据大小;

根据所述第一次数、第一ID所指示的业务类型、所述第一存储时间和所述第一数据大小分别对应的权重值,计算所述用户的初始数据共享积分;

确定所述与所述初始数据共享积分相对应的初始有效期;

生成与所述用户设置的订阅条件相对应的认证令牌Auth Token和主题Topic;

将所述初始有效期的值赋值给所述Auth Token的目标有效期;

所述确定所述用户当前是否具有访问每一个所述目标事件对应的已订阅数据的权限,包括:

D1:确定所述用户的所述Auth Token的目标有效期是否失效,如果是,执行D3,否则,执行D2;

D2:执行根据记录的所述目标事件中的所述特征值通过所述区块链获取所述已订阅数据;

D3:向所述用户发送用于表征所述Auth Token已失效的提示信息;

所述将所述已订阅数据发送给所述用户,包括:

通过所述Topic将所述已订阅数据发送给所述用户。

在本发明实施例中,用户在从区块链上获取数据之前,需要先基于用户向区块链中上传数据的次数、上传的数据的ID所对应的业务类型、存储时间以及存储的数据大小确定用户的初始数据共享积分。然后基于该初始数据共享积分为用户设置能够访问区块链中数据的初始有效期,并赋值给Auth Token,以使在Auth Token有效时用户通过Topic获取所需的数据。

在本发明一实施例中,在所述将所述有效期的值赋值给所述Auth Token的有效期之后,进一步包括:

当监听到的所述至少一个数据存储事件中存在自发事件时,确定所述自发事件对应的自存数据的数据信息,其中,所述自发事件为所述用户向所述区块链上传数据后产生的事件,所述数据信息包括所述自存数据的第二数据大小、第二ID、第二存储时间以及所述用户的所述存储行为的第二次数;

根据所述第二次数、第二ID所指示的业务类型、所述第二存储时间和所述第二数据大小分别对应的权重值,计算所述用户的当前数据共享积分;

根据所述Auth Token的目标有效期和所述当前数据共享积分,确定当前有效期;

将所述当前有效期的值赋值给所述Auth Token的目标有效期。

在本发明实施例中,用户在获取到Auth Token后,若再向区块链中上传数据,可基于用户上传数据的总次数、时间、数据大小、数据所对应的业务类型等信息,确定用户此次存储数据的行为所对应的当前数据共享积分,基于当前数据共享积分为用户更新其AuthToken的有效期。通过用户上传数据的行为确定用户访问区块链中的权限的有效期,可以鼓励用户多向区块链中共享数据,以供其他的用户查阅。

在本发明一实施例中,在所述根据记录的所述特征值、所述ID和用户设置的订阅条件,确定所述至少一个数据存储事件中是否存在至少一个目标事件之前,进一步包括:

确定用户所订阅的目标事件的事件数量;

创建用于放置所述事件数量的所述目标事件的队列;

所述根据记录的所述特征值、所述ID和用户设置的订阅条件,确定所述至少一个数据存储事件中是否存在至少一个目标事件,包括:

S0:建立包括至少一个所述数据存储事件的待处理集合;

S1:从所述待处理集合中确定当前数据存储事件;

S2:确定记录的所述当前数据存储事件中的所述特征值和所述ID是否与用户设置的订阅条件相匹配,如果是,执行S5,否则,执行S3;

S3:确定所述队列中的所述目标事件的当前数量是否等于所述事件数量,如果是,执行S5,否则,执行S4;

S4:将所述当前数据存储事件作为目标事件加入到所述队列中,并从所述待处理结合中删除所述目标事件,返回S1;

S5:执行所述确定所述用户当前是否具有访问每一个所述目标事件对应的已订阅数据的权限。

在本发明实施例中,用户可以根据需求设置所要订阅的事件的数量,所要获取的数据的大小,以便设置能够放置用户所设置的事件数量个事件的队列,以便在监听到的数据存储事件与用户的订阅条件相符合时,将该数据存储事件作为加入到队列中,直至队列中的数量达到上限。

在获取队列中的数据存储事件所对应的数据时,可以基于用户设置的数量大小获取,比如,用户设置符合要求的数据存储事件只获取3GB大小的数据,那么如果队列中的数据存储事件所对应的数据小于3GB,则获取全部数据,如果该数据的大小大于3GB则从数据中获取3GB数据,避免获取的数据太多影响用户查阅。或者,可以基于用户设置所要获取的总的数据大小,比如,总共获取20GB的数据,如果,队列中的第一个数据存储事件对应的数据大小为13GB,那么还需要从队列中的第二个数据存储事件对应的数据中获取数据,直至获取20GB的数据。如果队列中所有的数据存储事件所对应的数据加起来仍不组20GB,则删除队列中已被获取数据的数据存储事件,然后继续监听与用户设置的订阅条件相匹配的数据存储事件加入到队列中,直至获取到20GB的数据。

在本发明一实施例中,在所述监听区块链广播的至少一个数据存储事件之前,进一步包括:

在获取到共享数据时,建立所述共享数据对应的ID;

从所述共享数据中提取出特征值,其中,所述特征值用于表征所述共享数据的特征;

根据所述ID、所述特征值和所述共享数据生成上链数据;

将所述上链数据上传至区块链中,以使所述区块链根据执行的数据存储操作生成数据存储事件,并广播所述数据存储事件。

在本发明实施例中,当外部想通过区块链共享数据时,可先基于获取到的共享数据建立用于识别数据身份的ID,然后再提取用于表征数据特征的特征值,基于创建的ID、提取的特征值以及需要共享的共享数据生成能够上传至区块链的上链数据。这样上链数据在上传到区块链后,即可获取与用户输入的待查编码相匹配的目标上链通知信息,以便用户基于目标上链通知信息中的特征值,判断目标上链通知信息对应的数据是否为所要获取的数据,从而帮助用户快速查找所需数据。

在本发明一实施例中,所述从所述共享数据中提取出特征值,包括:

从用于表征所述共享数据的字符串中提取至少一条value,其中,每一条所述value用于表征所述共享数据的一个属性对应的数据内容;

从所述至少一条value中提取至少一个key,将提取的所述key作为特征值,其中,不同的所述key不相同。

在本发明实施例中,若获取到的共享数据是以字符串的形式,则可从字符串中提取用于表征共享数据的属性的数据内容,比如,若共享数据是结构数据,则value包括共享数据的大小为1GB、共有6个段落,每个段落的数据大小,共享数据的摘要、共享数据的名称,来源等属性;若共享数据是非结构数据,例如,视频、音频等,则value可包括共享数据的大小,关键的几帧数据,来源等属性。然后从提取的value中再进行提取得到能表征共享数据的特征的key,便于用户基于key识别共享数据的内容。

可以理解的是,key是数据指定的关键词,可唯一区分每条数据。为了防止key上链操作会被返回数据已经存在的信息,因此,同一共享数据提取出的不同的key不相同。

若获取到的共享数据不是字符串的形式,例如,获取到的是中文形式、英文形式的共享数据。可以将该共享数据转换为预设的格式的字符串。比如,转换为二进制的字符串、八进制的字符串或十六进制的字符串。

需要说明的是,在提取key之前,可基于不同的数据类型建立不同的模型,每一种模型对应至少一种业务类型的数据,比如,司法类、知识产权类、影视类以及教育辅导类数据。每种模型中包括对应的业务类型的数据结构、关键词、字段名等信息,以便基于模型从共享数据中提取key。

在本发明一实施例中,所述建立所述共享数据对应的ID,包括:

从至少一个预设业务类型中,确定所述共享数据对应的目标业务类型;

确定所述目标业务类型对应的目标号段;

确定最新数据对应的ID,其中,所述最新数据为所述目标业务类型对应的数据中在所述区块链上存储的时间最短的数据;

根据所述最新数据对应的ID,生成所述共享数据对应的ID。

在本发明实施例中,需要上链的共享数据所对应的业务类型不同,为了便于查找同一业务类型的数据,不同的业务类型对应的号段不同。比如,司法类的数据的号段为202001,教育类的数据的号段为202002,知识产权类的数据的号段为202003。在区块链中可能存在所有业务类型的数据,也可能目前只存在某些业务类型的数据,为了便于确定共享数据所对应的ID,可先确定共享数据的目标业务类型,确定共享数据所属的业务,然后从区块链中确定是否存在属于该目标业务类型且存储时间最短的最新数据,如果存在,则基于最新数据的ID生成共享数据的ID。

例如,共享数据的业务类型为“教育类”,号段为202002,区块链中该“教育类”的最新数据的ID为“20200205”,如果编码规则是同一业务类型的ID位数相同,且要上链的共享数据的ID与区块链上同一业务类型的数据的ID的差值为1,那么共享数据的ID为“20200206”。

可以理解的是,ID可以包括数字、字母、字符中的至少一个。

在本发明一实施例中,在所述获取共享数据之后,进一步包括:

E1:确定所述共享数据对应的交易类型是否为更新数据,如果是,执行E2,否则,执行E5;

E2:确定区块链中存储的与所述共享数据相对应的目标上链数据;

E3:确定所述共享数据与所述目标上链数据之间存在差异的差异数据;

E4:将所述差异数据与所述目标上链数据进行合并得到合并数据,并将所述合并数据作为上链数据,执行所述将所述上链数据上传至区块链中;

E5:执行所述建立所述共享数据对应的ID。

在本发明实施例中,上传到区块链上的数据可以是第一次被上传,也可以是对之前上传的数据进行更新。若需要上链的数据是对之前数据更新的数据,那么,需要判断该共享数据与之前存储在区块链上的数据之间的差异,然后,基于差异数据对已经在区块链上的目标上链数据进行合并,生成合并数据,并将生成的数据上链,完成数据更新。

在本发明一实施例中,在所述根据记录的所述特征值、所述ID和用户设置的订阅条件,确定所述至少一个数据存储事件中是否存在至少一个目标事件之前,进一步包括:

获取用户输入的待查业务类型对应的待查编码;

确定所述待查编码在待获取的已订阅数据对应的目标ID中所在的位置;

确定用于表征所述已订阅数据的特征的指定特征值;

生成包括所述待查编码、所述位置和所述指定特征值的订阅条件。

在本发明实施例中,用户可以基于需求确定所要获取的数据所对应的业务类型,由于每个业务类型都对应指定的编码号段,因此,用户可以确定所要获取的数据对应的待查编码。例如,教育类”对应的号段为20A1、“司法类”对应的号段为20B1、“交通类”对应的号段为20C1、“新闻类”对应的号段为20D1。如果用户想获取“交通类”的数据,则待查编码为20C1。由于统一业务类型的数据还划分有多种业务数据,为了区分不同的业务数据,业务数据的编码在在ID中的位置也会有所不同。比如,交通类的业务数据中违规罚单的数据的编码位于ID的头部,交通类的业务数据中的停车费的编码位于ID的尾部。用户所要查看的数据的特征值可以是表征数据的特征的数据,比如,罚单金额、停车时长。

如图2所示,为了更加清楚地说明本发明的技术方案及优点,下面对本发明实施例提供的基于区块链的数据共享方法进行详细说明,具体包括:

步骤201:获取用户输入的待查业务类型对应的待查编码。

步骤202:确定待查编码在待获取的已订阅数据对应的目标ID中所在的位置。

步骤203:确定用于表征已订阅数据的特征的指定特征值。

步骤204:生成包括待查编码、位置和指定特征值的订阅条件。

具体地,用户可以基于自身需求确定所需获取的数据的业务类型,为了区分不同业务类型的数据,不同的业务类型对应的编码号段不同,且编码号段在ID中的位置也可能不同,因此,需要用户设置所要获取的数据对应的业务类型的待查编码,以及待查编码在ID中所在的位置,以及表征获取的数据的特征的指定特征值,基于上述设置生成订阅条件,以便基于订阅条件获取用户所需的数据。

步骤205:在获取到共享数据时,确定共享数据对应的交易类型是否为更新数据,如果是,执行步骤206,否则,执行步骤209。

具体地,当有用户需要向区块链中上传数据时,所要上传的数据可能是第一次,也可能是对之前上传的数据进行更新,因此,需要判断所要上传的共享数据的交易类型,以便明确用户上传数据的目的。

步骤206:确定区块链中存储的与共享数据相对应的目标上链数据。

步骤207:确定共享数据与目标上链数据之间存在差异的差异数据。

步骤208:将差异数据与目标上链数据进行合并得到合并数据,并将合并数据作为上链数据,执行步骤213。

具体地,若共享数据是对区块链上已有的数据进行更新,则该共享数据的ID是不变的,因此,可从区块链上确定与共享数据相对应的目标上链数据,然后确定目标上链数据与共享数据的差异,得到差异数据,通过将差异数据与目标上链数据进行差异化处理,然后进行合并,得到合并数据,并重新上链,完成数据更新。

步骤209:从至少一个预设业务类型中,确定共享数据对应的目标业务类型,并确定目标业务类型对应的目标号段,执行步骤210。

步骤210:确定最新数据对应的ID,其中,最新数据为目标业务类型对应的数据中在区块链上存储的时间最短的数据。

步骤211:根据最新数据对应的ID,生成共享数据对应的ID。

具体地,如果共享数据是第一次被上传,则需要确定共享数据的业务类型,进而确定目标业务类型的目标号段。

步骤212:从用于表征共享数据的字符串中提取至少一条value,从至少一条value中提取至少一个key,将提取的key作为特征值,根据ID、特征值和共享数据生成上链数据,其中,每一条value用于表征共享数据的一个属性对应的数据内容,其中,不同的key不相同,特征值用于表征共享数据的特征。

步骤213:将上链数据上传至区块链中,以使区块链根据执行的数据存储操作生成数据存储事件,并广播数据存储事件。

具体地,为了便于用户明确上链的数据的内容,需要从共享数据中提取表征其属性的特征值,然后再从中提取表征共享数据特征的key,基于ID、特征值和共享数据生成上链数据,将上链数据上链,完成数据共享。

步骤214:监听区块链广播的至少一个数据存储事件,其中,数据存储事件用于描述区块链的至少一个区块执行的数据存储操作。

具体地,区块链在存储数据后,会基于存储的数据生成数据存储事件,然后进行广播,以便其他的节点能够基于广播内容确定有数据新增或更新。

步骤215:记录每一个数据存储事件中用于表征共享数据的特征的特征值、共享数据的ID、交易哈希和区块哈希,其中,共享数据为一个区块所存储的上链数据在上链之前对应的数据,交易哈希用于描述上链数据存储至区块链的过程,区块哈希用于表征最新的区块中的数据和最新的区块所连接的区块中的数据。

步骤216:建立包括至少一个数据存储事件的待处理集合。

步骤217:从待处理集合中确定当前数据存储事件。

步骤218:确定记录的当前数据存储事件中的特征值和ID是否与订阅条件相匹配,如果是,执行步骤219,否则,执行步骤221。

步骤219:确定队列中的目标事件的当前数量是否等于用户设置的事件数量,如果是,执行步骤222,否则,执行步骤220。

步骤220:将当前数据存储事件作为目标事件加入到能够放置事件数量个目标事件的队列中,执行步骤222;

步骤221:从待处理结合中删除目标事件,返回步骤217。

具体地,当监听到区块链广播的数据存储事件后,需要逐个判断数据存储事件是否与用户设置的订阅条件相匹配的事件,若当前数据存储事件与订阅条件相匹配,先确定用户能够放置指定数量事件的队列是否还有空余空间,则表征队列中的数据存储事件已达到用户所要求的数量,因此无需则进行匹配。如果队列中仍有空余空间,则可将与订阅条件相匹配的数据存储事件放置到队列中,继续判断其他的数据存储事件是否与订阅条件相匹配。

步骤222:确定用户的Auth Token的目标有效期是否失效,如果是,执行步骤224,否则,执行步骤223。

具体地,在筛选出与订阅条件相匹配的数据存储事件后,还需要确定用户此时是否具有访问区块链上的数据的权限。

步骤223:根据记录的目标事件中的特征值通过区块链获取已订阅数据,并通过Topic将已订阅数据发送给用户,其中,已订阅数据包括目标共享数据、交易哈希对应的数据和区块哈希对应的数据中的至少一个,目标共享数据为对应的目标事件中的特征值所描述的数据。

步骤224:向用户发送用于表征Auth Token已失效的提示信息。

具体地,若用户此时的不具有访问区块链上数据的权限,则向用户发送提示信息,以便用户通过向区块链上传数据等方式获取积分,进而获取访问区块链的权限。

需要说明的是,用户访问区块链的权限可以通过下述步骤确定:

确定用户是否具有向区块链中存储数据的存储行为。

当用户具有存储行为时,确定存储行为的第一次数、每次存储行为对应的数据的第一ID、第一存储时间和第一数据大小。

根据第一次数、第一ID所指示的业务类型、第一存储时间和第一数据大小分别对应的权重值,计算用户的初始数据共享积分。

确定与初始数据共享积分相对应的初始有效期。

生成与用户设置的订阅条件相对应的认证令牌Auth Token和Topic。

将初始有效期的值赋值给Auth Token的目标有效期。

具体地,通过记录用户向区块链上存储数据的第一次数、所存储的数据对应的第一ID所指示的业务类型、存储数据的第一存储时间以及所存储的数据的第一数据大小,计算该用户向区块链中存储数据的存储行为的初始数据共享积分,然后基于该积分确定用户访问区块链的初始有效期,基于该初始有效期生成Auth Token,以及用于获取数据的Topic,以便用户通过Auth Token和Topic获取所需的数据。

具体地,

当用户已获得访问区块链的权限后,若再次向区块链上传数据,此时可基于用户存储数据的存储行为的第二次数、所上传的数据的第二数据大小、第二ID以及第二存储事件,确定用户此次存储行为的当前数据共享积分,然后基于当前数据共享积分确定此次存储行为对应的当前有效期,将当前有效期赋值给该用户已获得的Auth Token,完成AuthToken有效期的更新。

比如,此次存储行为的当前数据共享积分为36分,30-40分所对应的当前有效期为5天,那么用户的Auth Token此时的目标有效期截止至2020.4.5,将此次存储行为获得的当前有效期5天赋值给Auth Token,则Auth Token更新后的有效期截止至2020.4.10。

如图3所示,本发明实施例还提供了基于区块链的数据共享装置,包括:

事件监听模块301,用于监听区块链广播的至少一个数据存储事件,其中,所述数据存储事件用于描述所述区块链的至少一个区块执行的数据存储操作;

信息记录模块302,用于记录所述事件监听模块301监听到的每一个所述数据存储事件中用于表征共享数据的特征的特征值、所述共享数据的ID、交易哈希和区块哈希,其中,所述共享数据为一个所述区块所存储的上链数据在上链之前对应的数据,所述交易哈希用于描述上链数据存储至所述区块链的过程,所述区块哈希用于表征最新的所述区块中的数据和最新的所述区块所连接的区块中的数据;

事件处理模块303,用于根据所述信息记录模块302记录的所述特征值、所述ID和用户设置的订阅条件,确定所述至少一个数据存储事件中是否存在至少一个目标事件;

权限管理模块304,用于当所述事件处理模块303确定存在所述至少一个目标事件时,确定所述用户当前是否具有访问每一个所述目标事件对应的已订阅数据的权限;

数据管理模块305,用于当所述权限管理模块304确定所述用户当前具有访问所述已订阅数据权限时,根据记录的所述目标事件中的所述特征值通过所述区块链获取所述已订阅数据,其中,所述已订阅数据包括目标共享数据、所述交易哈希对应的数据和所述区块哈希对应的数据中的至少一个,所述目标共享数据为对应的所述目标事件中的所述特征值所描述的数据;将所述已订阅数据发送给所述用户。

在本发明一实施例中,所示权限管理模块,还用于执行下述操作:

确定用户是否具有向所述区块链中存储数据的存储行为;

当所述用户具有所述存储行为时,确定所述存储行为的第一次数、每次所述存储行为对应的数据的第一ID、第一存储时间和第一数据大小;

根据所述第一次数、第一ID所指示的业务类型、所述第一存储时间和所述第一数据大小分别对应的权重值,计算所述用户的初始数据共享积分;

确定所述与所述初始数据共享积分相对应的初始有效期;

生成与所述用户设置的订阅条件相对应的认证令牌Auth Token和主题Topic;

将所述初始有效期的值赋值给所述Auth Token的目标有效期;

D1:确定所述用户的所述Auth Token的目标有效期是否失效,如果是,执行D3,否则,执行D2;

D2:执行根据记录的所述目标事件中的所述特征值通过所述区块链获取所述已订阅数据;

D3:向所述用户发送用于表征所述Auth Token已失效的提示信息;

所述数据管理模块,用于通过所述Topic将所述已订阅数据发送给所述用户。

在本发明一实施例中,所述信息记录模块302,用于当所述事件监听模块201监听到的所述至少一个数据存储事件中存在自发事件时,确定所述自发事件对应的自存数据的数据信息,其中,所述自发事件为所述用户向所述区块链上传数据后产生的事件,所述数据信息包括所述自存数据的第二数据大小、第二ID、第二存储时间以及所述用户的所述存储行为的第二次数;

所述权限管理模块304,用于所述根据所述第二次数、第二ID所指示的业务类型、所述第二存储时间和所述第二数据大小分别对应的权重值,计算所述用户的当前数据共享积分;根据所述Auth Token的目标有效期和所述当前数据共享积分,确定当前有效期;将所述当前有效期的值赋值给所述Auth Token的目标有效期。

在本发明一实施例中,所述事件处理模块,用于确定用户所订阅的目标事件的事件数量;创建用于放置所述事件数量的所述目标事件的队列;并执行下属操作:

S0:建立包括至少一个所述数据存储事件的待处理集合;

S1:从所述待处理集合中确定当前数据存储事件;

S2:确定记录的所述当前数据存储事件中的所述特征值和所述ID是否与用户设置的订阅条件相匹配,如果是,执行S5,否则,执行S3;

S3:确定所述队列中的所述目标事件的当前数量是否等于所述事件数量,如果是,执行S5,否则,执行S4;

S4:将所述当前数据存储事件作为目标事件加入到所述队列中,并从所述待处理结合中删除所述目标事件,返回S1;

S5:执行所述确定所述用户当前是否具有访问每一个所述目标事件对应的已订阅数据的权限。

在本发明一实施例中,所述基于区块链的数据共享装置进一步包括:数据处理模块和数据存储模块;

所述数据处理模块,用于在获取到共享数据时,建立所述共享数据对应的ID;从所述共享数据中提取出特征值,其中,所述特征值用于表征所述共享数据的特征;根据所述ID、所述特征值和所述共享数据生成上链数据;

所述数据存储模块,用于将所述上链数据上传至区块链中,以使所述区块链根据执行的数据存储操作生成数据存储事件,并广播所述数据存储事件。

在本发明一实施例中,所述数据处理模块,用于从用于表征所述共享数据的字符串中提取至少一条value,其中,每一条所述value用于表征所述共享数据的一个属性对应的数据内容;从所述至少一条value中提取至少一个key,将提取的所述key作为特征值,其中,不同的所述key不相同。

在本发明一实施例中,所述数据处理模块,用于从至少一个预设业务类型中,确定所述共享数据对应的目标业务类型;确定所述目标业务类型对应的目标号段;确定最新数据对应的ID,其中,所述最新数据为所述目标业务类型对应的数据中在所述区块链上存储的时间最短的数据;根据所述最新数据对应的ID,生成所述共享数据对应的ID。

在本发明一实施例中,所述数据处理模块,用于执行下述操作:

S1:确定所述共享数据对应的交易类型是否为更新数据,如果是,执行S2,否则,执行S5;

S2:确定区块链中存储的与所述共享数据相对应的目标上链数据;

S3:确定所述共享数据与所述目标上链数据之间存在差异的差异数据;

S4:将所述差异数据与所述目标上链数据进行合并得到合并数据,并将所述合并数据作为上链数据,执行所述将所述上链数据上传至区块链中;

S5:执行所述建立所述共享数据对应的ID。

在本发明一实施例中,所述权限管理模块,进一步用于执行下述操作:

获取用户输入的待查业务类型对应的待查编码;

确定所述待查编码在待获取的已订阅数据对应的目标ID中所在的位置;

确定用于表征所述已订阅数据的特征的指定特征值;

生成包括所述待查编码、所述位置和所述指定特征值的订阅条件。

可以理解的是,本发明实施例示意的结构并不构成对基于区块链的数据共享装置的具体限定。在本发明的另一些实施例中,基于区块链的数据共享装置可以包括比图示更多或者更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件、软件或者软件和硬件的组合来实现。

上述装置内的各单元之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。

本发明实施例还提供了智能电子设备,包括:至少一个存储器和至少一个处理器;

所述至少一个存储器,用于存储机器可读程序;

所述至少一个处理器,用于调用所述机器可读程序,执行本发明任一实施例中的基于区块链的数据共享方法。

本发明实施例还提供了一种计算机可读介质,所述计算机可读介质上存储有计算机指令,所述计算机指令在被处理器执行时,使所述处理器执行本发明任一实施例中的基于区块链的数据共享方法。

具体地,可以提供配有存储介质的系统或者装置,在该存储介质上存储着实现上述实施例中任一实施例的功能的软件程序代码,且使该系统或者装置的计算机(或CPU或MPU)读出并执行存储在存储介质中的程序代码。

在这种情况下,从存储介质读取的程序代码本身可实现上述实施例中任何一项实施例的功能,因此程序代码和存储程序代码的存储介质构成了本发明的一部分。

用于提供程序代码的存储介质实施例包括软盘、硬盘、磁光盘、光盘(如CD-ROM、CD-R、CD-RW、DVD-ROM、DVD-RAM、DVD-RW、DVD+RW)、磁带、非易失性存储卡和ROM。可选择地,可以由通信网络从服务器计算机上下载程序代码。

此外,应该清楚的是,不仅可以通过执行计算机所读出的程序代码,而且可以通过基于程序代码的指令使计算机上操作的操作系统等来完成部分或者全部的实际操作,从而实现上述实施例中任意一项实施例的功能。

此外,可以理解的是,将由存储介质读出的程序代码写到插入计算机内的扩展板中所设置的存储器中或者写到与计算机相连接的扩展单元中设置的存储器中,随后基于程序代码的指令使安装在扩展板或者扩展单元上的CPU等来执行部分和全部实际操作,从而实现上述实施例中任一实施例的功能。

需要说明的是,上述各流程和各系统结构图中不是所有的步骤和模块都是必须的,可以根据实际的需要忽略某些步骤或模块。各步骤的执行顺序不是固定的,可以根据需要进行调整。上述各实施例中描述的系统结构可以是物理结构,也可以是逻辑结构,即,有些模块可能由同一物理实体实现,或者,有些模块可能分由多个物理实体实现,或者,可以由多个独立设备中的某些部件共同实现。

以上各实施例中,硬件单元可以通过机械方式或电气方式实现。例如,一个硬件单元可以包括永久性专用的电路或逻辑(如专门的处理器,FPGA或ASIC)来完成相应操作。硬件单元还可以包括可编程逻辑或电路(如通用处理器或其它可编程处理器),可以由软件进行临时的设置以完成相应操作。具体的实现方式(机械方式、或专用的永久性电路、或者临时设置的电路)可以基于成本和时间上的考虑来确定。

上文通过附图和优选实施例对本发明进行了详细展示和说明,然而本发明不限于这些已揭示的实施例,基与上述多个实施例本领域技术人员可以知晓,可以组合上述不同实施例中的代码审核手段得到本发明更多的实施例,这些实施例也在本发明的保护范围之内。

相关技术
  • 一种基于区块链的数据共享系统及数据共享方法
  • 基于区块链的数据共享方法、请求方法及装置
技术分类

06120112859756