一种基于区块链的数据共享方法和装置与流程

文档序号:21267100发布日期:2020-06-26 22:44阅读:300来源:国知局
一种基于区块链的数据共享方法和装置与流程

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



背景技术:

由于区块链具有去中心化、不可篡改等诸多优点,在数据共享存储方面得到了广泛的应用。目前,各类区块链数据共享的方式是将所有数据加密后放到区块链上,每个区块链数据节点均存储了其他节点所有数据的副本。

在实现本发明过程中,发明人发现现有技术中至少存在如下问题:上传至区块链的数据虽进行了加密,但由于各个数据节点的数据一致,一旦一个数据节点被攻克或入侵,则将导致所有数据泄露,对于一些机密性要求较高的数据仍存在一定的泄露的风险;此外,随着上传至区块链的数据量逐渐增加,数据存储空间增大,从区块链上查询获取数据的效率大大降低。



技术实现要素:

有鉴于此,本发明实施提供了一种基于区块链的数据共享方法和装置,在实现数据共享的同时,既降低了区块链上存储的数据量,也进一步保证了数据的安全性。

为实现上述目的,根据本发明实施例的一个方面,提供了一种基于区块链的数据共享方法包括:

接收第一业务节点的数据上传请求,所述数据上传请求指示了所述第一业务节点所服务的第一用户的信息;

从所述第一用户的信息中提取所述第一用户的信息对应的第一摘要信息;

生成所述第一摘要信息对应的第一哈希值;

将所述第一摘要信息、所述第一哈希值、第一业务节点标识相对应地上传至区块链,并将所述第一用户的信息存储至本地数据库。

可选地,还包括:

在将所述第一摘要信息、所述第一哈希值、第一业务节点标识相对应地上传至区块链之前,判断所述区块链上是否已存在所述第一哈希值;

若不存在,则将所述第一摘要信息、所述第一哈希值、第一业务节点标识相对应地上传至区块链;

若存在,则继续判断所述区块链上存储的所述第一哈希值对应的业务节点标识与所述第一业务节点标识是否一致,若不一致则将所述第一摘要信息、所述第一哈希值、第一业务节点标识相对应地上传至区块链。

可选地,还包括:

在所述区块链上不存在所述第一哈希值的情况下,向所述第一业务节点对应的奖励值中增加第一奖励值;

在所述区块链上存在所述第一哈希值,但所存储的所述第一哈希值对应的业务节点标识与所述第一业务节点标识不一致的情况下,向所述第一业务节点对应的奖励值中增加第二奖励值,且所述第二奖励值小于所述第一奖励值。

可选地,还包括:

在第二业务节点请求获取所述第一用户的信息的情况下,从所述区块链上获取所述第二业务节点的公钥、所述第一摘要信息;

根据所述第一摘要信息,从本地数据库中搜索所述第一摘要信息对应的所述第一用户的信息;

使用所述第二业务节点的公钥,对所述第一用户的信息进行加密;

将加密后的所述第一用户的信息上传至所述区块链,以供所述第二业务节点从所述区块链上获取所述第一用户的信息。

可选地,还包括:

接收第一业务节点发送的数据获取请求,所述数据获取请求指示了待获取的第二用户的信息对应的第二摘要信息、所述第一业务节点的公钥;

根据所述第二摘要信息对应的第二哈希值,从所述区块链上获取所述第二哈希值对应的一个或多个业务节点标识;

从所述业务节点标识中选取一个或多个业务节点标识;

根据所选取的业务节点标识、所述第二哈希值、所述第一业务节点的公钥,从所述区块链上获取使用所述第一业务节点的公钥加密的所述第二用户的信息。

可选地,还包括:

在从所述区块链上获取使用所述第一业务节点的公钥加密的所述第二用户的信息之后,使用所述第一业务节点的公钥对应的私钥解密所述第二用户的信息。

可选地,还包括:

在使用所述第一业务节点的公钥对应的私钥解密所述第二用户的信息之后,从所述第二用户的信息中提取所述第二用户的信息对应的第三摘要信息;

生成所述第三摘要信息对应的第三哈希值;

判断所述第三哈希值与所述第二哈希值是否一致,若一致,则向所述第一业务节点展示所述第二用户的信息,若不一致,则根据解密后的所述第二用户的信息向所述区块链申诉。

可选地,还包括:

在向所述区块链申诉成功的请情况下,通知所述第一业务节点所述数据获取请求失败;

在向所述区块链申诉失败的情况下,向所述第一业务节点展示解密后的所述第二用户的信息。

可选地,还包括:

在向所述第一业务节点展示解密后的所述第二用户的信息之后,将所述第二用户的信息、所述第二摘要信息、所选取的业务节点标识、所述第二哈希值相对应地存储至本地数据库。

可选地,

在根据所选取的业务节点标识、所述第二哈希值、所述第一业务节点的公钥,从所述区块链上获取使用所述第一业务节点的公钥加密的所述第二用户的信息时,从所述第一业务节点对应的奖励值中扣除第三奖励值。

为实现上述目的,根据本发明实施例的另一个方面,提供了一种基于区块链的数据共享装置包括:上传请求接收模块、摘要信息提取模块、哈希值生成模块、数据上传模块;其中,

所述上传请求接收模块,用于接收第一业务节点的数据上传请求,所述数据上传请求指示了所述第一业务节点所服务的第一用户的信息;

所述摘要信息提取模块,用于从所述第一用户的信息中提取所述第一用户的信息对应的第一摘要信息;

所述哈希值生成模块,用于生成所述第一摘要信息对应的第一哈希值;

所述数据上传模块,用于将所述第一摘要信息、所述第一哈希值、第一业务节点标识相对应地上传至区块链,并将所述第一用户的信息存储至本地数据库。

可选地,所述数据上传模块,还用于,

在将所述第一摘要信息、所述第一哈希值、第一业务节点标识相对应地上传至区块链之前,判断所述区块链上是否已存在所述第一哈希值;

若不存在,则将所述第一摘要信息、所述第一哈希值、第一业务节点标识相对应地上传至区块链;

若存在,则继续判断所述区块链上存储的所述第一哈希值对应的业务节点标识与所述第一业务节点标识是否一致,若不一致则将所述第一摘要信息、所述第一哈希值、第一业务节点标识相对应地上传至区块链。

可选地,所述数据上传模块,还用于,

在所述区块链上不存在所述第一哈希值的情况下,向所述第一业务节点对应的奖励值中增加第一奖励值;

在所述区块链上存在所述第一哈希值,但所存储的所述第一哈希值对应的业务节点标识与所述第一业务节点标识不一致的情况下,向所述第一业务节点对应的奖励值中增加第二奖励值,且所述第二奖励值小于所述第一奖励值。

可选地,所述数据上传模块,还用于,

在第二业务节点请求获取所述第一用户的信息的情况下,从所述区块链上获取所述第二业务节点的公钥、所述第一摘要信息;

根据所述第一摘要信息,从本地数据库中搜索所述第一摘要信息对应的所述第一用户的信息;

使用所述第二业务节点的公钥,对所述第一用户的信息进行加密;

将加密后的所述第一用户的信息上传至所述区块链,以供所述第二业务节点从所述区块链上获取所述第一用户的信息。

可选地,还包括:数据获取模块;所述数据获取模块,用于,

接收第一业务节点发送的数据获取请求,所述数据获取请求指示了待获取的第二用户的信息对应的第二摘要信息、所述第一业务节点的公钥;

根据所述第二摘要信息对应的第二哈希值,从所述区块链上获取所述第二哈希值对应的一个或多个业务节点标识;

从所述业务节点标识中选取一个或多个业务节点标识;

根据所选取的业务节点标识、所述第二哈希值、所述第一业务节点的公钥,从所述区块链上获取使用所述第一业务节点的公钥加密的所述第二用户的信息。

可选地,所述数据获取模块,还用于,

在从所述区块链上获取使用所述第一业务节点的公钥加密的所述第二用户的信息之后,使用所述第一业务节点的公钥对应的私钥解密所述第二用户的信息。

可选地,所述数据获取模块,还用于,

在使用所述第一业务节点的公钥对应的私钥解密所述第二用户的信息之后,从所述第二用户的信息中提取所述第二用户的信息对应的第三摘要信息;

生成所述第三摘要信息对应的第三哈希值;

判断所述第三哈希值与所述第二哈希值是否一致,若一致,则向所述第一业务节点展示所述第二用户的信息,若不一致,则根据解密后的所述第二用户的信息向所述区块链申诉。

可选地,所述数据获取模块,还用于,

在向所述区块链申诉成功的请情况下,通知所述第一业务节点所述数据获取请求失败;

在向所述区块链申诉失败的情况下,向所述第一业务节点展示解密后的所述第二用户的信息。

可选地,所述数据获取模块,还用于,

在向所述第一业务节点展示解密后的所述第二用户的信息之后,将所述第二用户的信息、所述第二摘要信息、所选取的业务节点标识、所述第二哈希值相对应地存储至本地数据库。

可选地,所述数据获取模块,还用于,

在根据所选取的业务节点标识、所述第二哈希值、所述第一业务节点的公钥,从所述区块链上获取使用所述第一业务节点的公钥加密的所述第二用户的信息时,从所述第一业务节点对应的奖励值中扣除第三奖励值。

为实现上述目的,根据本发明实施例的又一个方面,提供了一种用于数据共享的电子设备,包括:

一个或多个处理器;

存储装置,用于存储一个或多个程序,

当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如上所述的基于区块链的数据共享方法中任一所述的方法。

为实现上述目的,根据本发明实施例的再一个方面,提供了一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如上所述的基于区块链的数据共享方法中任一所述的方法。

上述发明中具有如下优点或有益效果:通过仅将用户的信息的摘要信息以及对应的哈希值上传至区块链上,降低了区块链上存储的数据量;同时,通过区块链上存储的用户信息的摘要信息以及对应的哈希值,实现了业务节点对可获取用户的信息的快速查询,提高了查询的效率;当且仅当用户的信息被请求获取的情况下,才使用请求获取该用户的信息的业务节点的公钥将数据加密后上传至区块链,使得有且仅有请求信息的业务节点使用公钥对应的私钥才能解密相应的用户信息,提高了信息的安全性。

上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。

附图说明

附图用于更好地理解本发明,不构成对本发明的不当限定。其中:

图1是根据本发明实施例的基于区块链的数据共享方法的主要流程的示意图;

图2是根据本发明实施例的另一基于区块链的数据共享方法的主要流程的示意图;

图3是根据本发明实施例的又一个基于区块链的数据共享方法的主要流程的示意图;

图4是根据本发明实施例的基于区块链的数据获取方法的主要流程的示意图;

图5是根据本发明实施例的基于区块链的数据共享装置的主要模块的示意图;

图6是根据本发明实施例的基于区块链的数据共享系统的主要结构的示意图;

图7是根据本发明实施例的应用于基于区块链的数据共享系统的数据获取方法的主要流程的示意图;

图8是本发明实施例可以应用于其中的示例性系统架构图;

图9是适于用来实现本发明实施例的终端设备或服务器的计算机系统的结构示意图。

具体实施方式

以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。

图1是根据本发明实施例的基于区块链的数据共享方法的主要流程的示意图,如图1所示,该数据共享方法具体可以包括的步骤如下:

步骤s101,接收第一业务节点的数据上传请求,所述数据上传请求指示了所述第一业务节点所服务的第一用户的信息。也即是说,数据上传请求指示了第一业务节点想要上传至区块链以与其他业务节点实现共享的第一用户的信息,该第一用户的信息包括但不限于:用户黑名单信息、用户白名单、用户征信记录等。第一业务节点则是指可以生产第一用户的信息并向区块链上传用户的信息,以及从区块链上查询、获取其他用户的信息的业务系统等,如银行业务系统、银行信贷系统等。

步骤s102,从所述第一用户的信息中提取所述第一用户的信息对应的第一摘要信息。具体地,以第一用户的信息为用户黑名单信息为例进行说明,该用户黑名单信息记载了被纳入黑名单的一个或多个用户以及用户被纳入黑名单的具体详情;若第一用户为自然人,则对应的第一摘要信息可以包括下述一种或多种:用户名称、用户姓名、用户证件类型、用户证件号码;若第一用户为企业,则第一摘要信息可以包括下述一种或多种:企业名称、企业组织机构代码、纳税人识别号等。除此之外,第一用户还可以是社会团体、基金组织等组织机构。

步骤s103,生成所述第一摘要信息对应的第一哈希值。所谓哈希(hash)是指把任意长度的输入(又叫做预映射pre-image)通过散列算法变换成固定长度的输出,该输出就是散列值通过哈希算法生成的。第一哈希值与第一摘要信息具有一一对应的关系,且不同的第一摘要信息对应的第一哈希值必然是不相同的,而相同的第一摘要信息对应的第一哈希值必然是相同的,且具有固定长度,既便于存储又便于查询。

步骤s104,将所述第一摘要信息、所述第一哈希值、第一业务节点标识相对应地上传至区块链,并将所述第一用户的信息存储至本地数据库。具体地,可以将第一摘要信息、所述第一哈希值、第一业务节点标识存储至区块链上的用户信息表单上,且同意第一摘要信息对应的第一哈希值、第一业务节点存储与用一行或同一列,以便根据第一哈希值定位对应的第一摘要信息或第一业务节点标识。第一业务节点标识则是指用于区别不同业务节点的编号、id、名称等。

在一种可选的实施方式中,在将所述第一摘要信息、所述第一哈希值、第一业务节点标识相对应地上传至区块链之前,判断所述区块链上是否已存在所述第一哈希值;若不存在,则将所述第一摘要信息、所述第一哈希值、第一业务节点标识相对应地上传至区块链;若存在,则继续判断所述区块链上存储的所述第一哈希值对应的业务节点标识与所述第一业务节点标识是否一致,若不一致则将所述第一摘要信息、所述第一哈希值、第一业务节点标识相对应地上传至区块链。

也即是说,在将第一摘要信息、第一哈希值、第一业务节点标识相对应地上传至区块链之前,先通过第一哈希值判断区块链上是否已经存在第一摘要信息,若存在则基于第一业务节点标识判断上传第一摘要信息的业务节点与当前的第一业务节点是否是一致,若不一致则继续上传,若一致则不上传,以避免同一业务节点重复上传同一用户的信息,恶意浪费资源。同时可以注意到的是,相同的第一摘要信息(如黑名单用户姓名、身份证号码等)在不同业务节点中对应的第一用户的信息详情(入选黑明单的具体事由)等可能不相同,因而允许一个多个业务节点针分别上传第一摘要信息、第一哈希值、第一业务节点至区块链。基于此,其他业务节点可以根据实际需求根据第一业务节点标识选择第一摘要信息的来源方以获取第一摘要信息对应的第一用户的信息。

在一种可选的实施方式中,在所述区块链上不存在所述第一哈希值的情况下,向所述第一业务节点对应的奖励值中增加第一奖励值;在所述区块链上存在所述第一哈希值,但所存储的所述第一哈希值对应的业务节点标识与所述第一业务节点标识不一致的情况下,向所述第一业务节点对应的奖励值中增加第二奖励值,且所述第二奖励值小于所述第一奖励值。如此,可以基于奖励值管理机制,激励第一业务节点上传更多不同的第一摘要信息、第一用户的信息,从而实现第一用户的信息的共享。其中,第一奖励值、第二奖励值可以根据实际需求设定的,如第一奖励值为10,第二奖励值为第一奖励值的一半(即5)。值得注意的是,奖励值管理机制的目的,是为了激励第一业务节点上传更多的第一摘要信息或第一用户的信息,但同时尽量避免重复上传同一第一摘要信息或第一用户的信息。因此,在第一业务节点要上传的第一摘要信息是其他业务节点已经上传到区块链上的情况下,给予第一业务节点的奖励值要是适当的降低,即小于第二奖励值需小于第一奖励值,以在不降低第一业务节点积极性的同时引导第一业务节点上传不同的第一摘要信息。

在一种可选的实施方式中,在第二业务节点请求获取所述第一用户的信息的情况下,从所述区块链上获取所述第二业务节点的公钥、所述第一摘要信息;根据所述第一摘要信息,从本地数据库中搜索所述第一摘要信息对应的所述第一用户的信息;使用所述第二业务节点的公钥,对所述第一用户的信息进行加密;将加密后的所述第一用户的信息上传至所述区块链,以供所述第二业务节点从所述区块链上获取所述第一用户的信息。

可以理解的是,第一业务节点可在区块链上获悉第二业务节点即其他业务节点请求获取第一用户的信息,也可以通过与第二业务节点建立的其他通信渠道(如邮件等)获悉第二业务节点请求获取第一用户的信息。由于在向区块链上传第一用户的信息对应的第一摘要信息、第一哈希值、第一业务节点标识时,在本地数据库中存储了第一用户的信息,因此,可以根据第二业务节点请求获取的第一用户的信息对应的第一摘要信息从本地数据库中搜索对应的第一用户的信息。在此基础上,通过使用第二业务节点的公钥加密第一用户的信息再上传是区块链的方式,保证了第一用户的信息的安全性、私密性,有且仅有具有对应私钥的第二业务节点才能够获取并解密第一用户的信息。如此,保证了第一用户的信息的安全性。

由此可见,由于在第一业务节点请求上传时,仅将第一用户的信息对应的第一摘要信息、第一哈希值、第一业务节点标识相对应地上传至区块链,降低了在区块链中存储越来越多的第一用户的信息占用的存储空间;同时,通过第一哈希值提高了在区块链上查询对应的第一摘要信息、第一业务节点标识的查询效率;更进一步地,仅在第二业务数据请求获取第一用户的信息的情况下,才适用第二业务节点的公钥加密第一用户的信息并上传是区块链,以供第二业务节点从区块链上获取并解密第一用户的信息,既实现了第一用户的信息的共享,又保证了第一用户的信息的安全性,避免了第一用户信息的泄露。

在一种可选的实施方式中,接收第一业务节点发送的数据获取请求,所述数据获取请求指示了待获取的第二用户的信息对应的第二摘要信息、所述第一业务节点的公钥;根据所述第二摘要信息对应的第二哈希值,从所述区块链上获取所述第二哈希值对应的一个或多个业务节点标识;从所述业务节点标识中选取一个或多个业务节点标识;根据所选取的业务节点标识、所述第二哈希值、所述第一业务节点的公钥,从所述区块链上获取使用所述第一业务节点的公钥加密的所述第二用户的信息。

可以理解的是,通过区块链实现的数据共享方法中,第一业务节点本身不仅可以上传第一用户的信息、第一摘要的信息至区块链,还可以根据实际需求从区块链上获取其他业务节点上传的第二摘要信息对应的第二用户的信息。另外,由于不同的业务节点可能会上传同一第二摘要信息,因此,在根据第二哈希值从区块链上查询到的第二摘要信息的来源者可能有多个,即对应的第二业务节点标识有多个,因而可以根据实际需求选取一个或多个第二业务节点标识,以获取对应的第二业务节点上传的第二用户的信息。

在一种可选的实施方式中,在从所述区块链上获取使用所述第一业务节点的公钥加密的所述第二用户的信息之后,使用所述第一业务节点的公钥对应的私钥解密所述第二用户的信息。可以理解的是,为保证获取到的第二用户的信息的安全性,使用第一业务节点的公钥加密第二用户的信息,使得有且仅有第一业务节点采用公钥对应的私钥才能解密该第二用户的信息,保证了数据的安全性。

在此基础上,在使用所述第一业务节点的公钥对应的私钥解密所述第二用户的信息之后,从所述第二用户的信息中提取所述第二用户的信息对应的第三摘要信息;生成所述第三摘要信息对应的第三哈希值;判断所述第三哈希值与所述第二哈希值是否一致,若一致,则向所述第一业务节点展示所述第二用户的信息,若不一致,则根据解密后的所述第二用户的信息向所述区块链申诉。

也即是说,在使用第一业务节点的公钥对应的私钥解密从区块链上获取到的第二用户的信息明文后,对该第二用户的信息明文作进一步地验证,以确保获取到的第一用户的信息明文确实为实际想要获取的第二用户的信息。若不是,则可以根据该第二用户的信息明文以及对应的第二摘要信息等,向区块链的合约层进行申诉。

更进一步地,在向所述区块链申诉成功的请情况下,通知所述第一业务节点所述数据获取请求失败;在向所述区块链申诉失败的情况下,向所述第一业务节点展示解密后的所述第二用户的信息。

在一种可选的实施方式中,在向所述第一业务节点展示解密后的所述第二用户的信息之后,将所述第二用户的信息、所述第二摘要信息、所选取的业务节点标识、所述第二哈希值相对应地存储至本地数据库。如此,可以根据一次获取多次本地重复使用,避免了多次重复从区块链上获取第二用户的信息造成的资源浪费。

在一种可选的实施方式中,在根据所选取的业务节点标识、所述第二哈希值、所述第一业务节点的公钥,从所述区块链上获取使用所述第一业务节点的公钥加密的所述第二用户的信息时,从所述第一业务节点对应的奖励值中扣除第三奖励值。也即是说,第一业务节点可以通过上传不同的第一用户的信息获取更多的奖励值,同时,需要扣除一定的奖励值才能从区块链上获取其他业务节点上传的第二用户的信息,即实现了对业务节点上传用户的信息的激励,又可以防止业务节点滥用从区块链上获取到的第二用户信息。

基于上述实施例,通过仅将用户的信息的摘要信息以及对应的哈希值上传至区块链上,降低了区块链上存储的数据量;同时,通过区块链上存储的用户信息的摘要信息以及对应的哈希值,实现了业务节点对可获取用户的信息的快速查询,提高了查询的效率;当且仅当用户的信息被请求获取的情况下,才使用请求获取该用户的信息的业务节点的公钥将数据加密后上传至区块链,使得有且仅有请求信息的业务节点使用公钥对应的私钥才能解密相应的用户信息,提高了信息的安全性。

参见图2,在上述实施例的基础上,本发明实施例提供了另一个基于区块链的数据共享方法,该方法具体可以包括的步骤如下:

步骤s201,接收第一业务节点的数据上传请求,所述数据上传请求指示了所述第一业务节点所服务的第一用户的信息。

步骤s202,从所述第一用户的信息中提取所述第一用户的信息对应的第一摘要信息。

步骤s203,生成所述第一摘要信息对应的第一哈希值。

步骤s204,判断所述区块链上是否已存在所述第一哈希值;若存在,则继续执行下述步骤s205,若不存在,则继续执行下述步骤s206。

步骤s205,继续判断所述区块链上存储的所述第一哈希值对应的业务节点标识与所述第一业务节点标识是否一致;若一致,则不上传第一摘要信息、第一哈希值、第一业务节点标识,若不一致,则继续执行下述步骤s206。

步骤s206,将所述第一摘要信息、所述第一哈希值、第一业务节点标识相对应地上传至区块链,并将所述第一摘要信息、所述第一哈希值、第一业务节点标识相对应地上传至区块链,并将所述第一用户的信息存储至本地数据库。

在此基础上,在第二业务节点请求获取所述第一用户的信息的情况下,从所述区块链上获取所述第二业务节点的公钥、所述第一摘要信息;根据所述第一摘要信息,从本地数据库中搜索所述第一摘要信息对应的所述第一用户的信息;使用所述第二业务节点的公钥,对所述第一用户的信息进行加密;将加密后的所述第一用户的信息上传至所述区块链,以供所述第二业务节点从所述区块链上获取所述第一用户的信息。

除此之外,还可接收第一业务节点发送的数据获取请求,所述数据获取请求指示了待获取的第二用户的信息对应的第二摘要信息、所述第一业务节点的公钥;根据所述第二摘要信息对应的第二哈希值,从所述区块链上获取所述第二哈希值对应的一个或多个业务节点标识;从所述业务节点标识中选取一个或多个业务节点标识;根据所选取的业务节点标识、所述第二哈希值、所述第一业务节点的公钥,从所述区块链上获取使用所述第一业务节点的公钥加密的所述第二用户的信息。

在此基础上,在从所述区块链上获取使用所述第一业务节点的公钥加密的所述第二用户的信息之后,使用所述第一业务节点的公钥对应的私钥解密所述第二用户的信息。

更进一步地,在使用所述第一业务节点的公钥对应的私钥解密所述第二用户的信息之后,从所述第二用户的信息中提取所述第二用户的信息对应的第三摘要信息;生成所述第三摘要信息对应的第三哈希值;判断所述第三哈希值与所述第二哈希值是否一致,若一致,则向所述第一业务节点展示所述第二用户的信息,若不一致,则根据解密后的所述第二用户的信息向所述区块链申诉。基于此,在向所述区块链申诉成功的请情况下,通知所述第一业务节点所述数据获取请求失败;在向所述区块链申诉失败的情况下,向所述第一业务节点展示解密后的所述第二用户的信息。

除此之外,在向所述第一业务节点展示解密后的所述第二用户的信息之后,将所述第二用户的信息、所述第二摘要信息、所选取的业务节点标识、所述第二哈希值相对应地存储至本地数据库。

值得注意的是,为激励第一业务节点上传更多不同的第一摘要信息,在所述区块链上不存在所述第一哈希值的情况下,向所述第一业务节点对应的奖励值中增加第一奖励值;在所述区块链上存在所述第一哈希值,但所存储的所述第一哈希值对应的业务节点标识与所述第一业务节点标识不一致的情况下,向所述第一业务节点对应的奖励值中增加第二奖励值,且所述第二奖励值小于所述第一奖励值。

与之相对应,为避免第一业务节点滥用从区块链上获取的第二用户的信息,在根据所选取的业务节点标识、所述第二哈希值、所述第一业务节点的公钥,从所述区块链上获取使用所述第一业务节点的公钥加密的所述第二用户的信息时,从所述第一业务节点对应的奖励值中扣除第三奖励值。

参见图3,在上述实施例的基础上,本发明实施例提供了另一个基于区块链的数据共享方法,该方法具体可以包括的步骤如下:

步骤s301,接收第一业务节点的数据上传请求,所述数据上传请求指示了所述第一业务节点所服务的第一用户的信息

步骤s302,从所述第一用户的信息中提取所述第一用户的信息对应的第一摘要信息

步骤s303,生成所述第一摘要信息对应的第一哈希值。

步骤s304,将所述第一摘要信息、所述第一哈希值、第一业务节点标识相对应地上传至区块链,并将所述第一用户的信息存储至本地数据库。

除此之外,在将所述第一摘要信息、所述第一哈希值、第一业务节点标识相对应地上传至区块链之前,判断所述区块链上是否已存在所述第一哈希值;

若不存在,则将所述第一摘要信息、所述第一哈希值、第一业务节点标识相对应地上传至区块链;

若存在,则继续判断所述区块链上存储的所述第一哈希值对应的业务节点标识与所述第一业务节点标识是否一致,若不一致则将所述第一摘要信息、所述第一哈希值、第一业务节点标识相对应地上传至区块链。

步骤s305,在第二业务节点请求获取所述第一用户的信息的情况下,从所述区块链上获取所述第二业务节点的公钥、所述第一摘要信息。

步骤s306,根据所述第一摘要信息,从本地数据库中搜索所述第一摘要信息对应的所述第一用户的信息。

步骤s307,使用所述第二业务节点的公钥,对所述第一用户的信息进行加密。

步骤s308,将加密后的所述第一用户的信息上传至所述区块链,以供所述第二业务节点从所述区块链上获取所述第一用户的信息。

值得注意的是,为激励第一业务节点上传更多不同的第一摘要信息,在所述区块链上不存在所述第一哈希值的情况下,向所述第一业务节点对应的奖励值中增加第一奖励值;在所述区块链上存在所述第一哈希值,但所存储的所述第一哈希值对应的业务节点标识与所述第一业务节点标识不一致的情况下,向所述第一业务节点对应的奖励值中增加第二奖励值,且所述第二奖励值小于所述第一奖励值。

与之相对应,为避免第一业务节点滥用从区块链上获取的第二用户的信息,在根据所选取的业务节点标识、所述第二哈希值、所述第一业务节点的公钥,从所述区块链上获取使用所述第一业务节点的公钥加密的所述第二用户的信息时,从所述第一业务节点对应的奖励值中扣除第三奖励值。

参见图4,在上述实施例的基础上,本发明实施例提供了一种基于区块链的数据获取方法,该方法具体可以包括的步骤如下:

步骤s401,接收第一业务节点发送的数据获取请求,所述数据获取请求指示了待获取的第二用户的信息对应的第二摘要信息、所述第一业务节点的公钥。

步骤s402,根据所述第二摘要信息对应的第二哈希值,从所述区块链上获取所述第二哈希值对应的一个或多个业务节点标识。

步骤s403,从所述业务节点标识中选取一个或多个业务节点标识。

可以理解的是,通过区块链实现的数据共享方法中,第一业务节点本身不仅可以上传第一用户的信息、第一摘要的信息至区块链,还可以根据实际需求从区块链上获取其他业务节点上传的第二摘要信息对应的第二用户的信息。另外,由于不同的业务节点可能会上传同一第二摘要信息,因此,在根据第二哈希值从区块链上查询到的第二摘要信息的来源者可能有多个,即对应的第二业务节点标识有多个,因而可以根据实际需求选取一个或多个第二业务节点标识,以获取对应的第二业务节点上传的第二用户的信息。

步骤s404,根据所选取的业务节点标识、所述第二哈希值、所述第一业务节点的公钥,从所述区块链上获取使用所述第一业务节点的公钥加密的所述第二用户的信息。

步骤s405,使用所述第一业务节点的公钥对应的私钥解密所述第二用户的信息。可以理解的是,为保证获取到的第二用户的信息的安全性,使用第一业务节点的公钥加密第二用户的信息,使得有且仅有第一业务节点采用公钥对应的私钥才能解密该第二用户的信息,保证了数据的安全性。

步骤s406,从所述第二用户的信息中提取所述第二用户的信息对应的第三摘要信息。

步骤s407,生成所述第三摘要信息对应的第三哈希值。

步骤s408,判断所述第三哈希值与所述第二哈希值是否一致,若一致,则继续执行下述步骤s409,若不一致,则继续执行下述步骤s410。也即是说,在使用第一业务节点的公钥对应的私钥解密从区块链上获取到的第二用户的信息明文后,对该第二用户的信息明文作进一步地验证,以确保获取到的第一用户的信息明文确实为实际想要获取的第二用户的信息。若不是,则可以根据该第二用户的信息明文以及对应的第二摘要信息等,向区块链的合约层进行申诉。

步骤s409,向所述第一业务节点展示所述第二用户的信息。

步骤s410,根据解密后的所述第二用户的信息向所述区块链申诉。

更进一步地,在向所述区块链申诉成功的请情况下,通知所述第一业务节点所述数据获取请求失败;在向所述区块链申诉失败的情况下,向所述第一业务节点展示解密后的所述第二用户的信息。

参见图5,在上述实施例的基础上,本发明实施例提供了一种基于区块链的数据共享装置500,包括:上传请求接收模块501、摘要信息提取模块502、哈希值生成模块503、数据上传模块504;其中,

所述上传请求接收模块501,用于接收第一业务节点的数据上传请求,所述数据上传请求指示了所述第一业务节点所服务的第一用户的信息;

所述摘要信息提取模块502,用于从所述第一用户的信息中提取所述第一用户的信息对应的第一摘要信息;

所述哈希值生成模块503,用于生成所述第一摘要信息对应的第一哈希值;

所述数据上传模块504,用于将所述第一摘要信息、所述第一哈希值、第一业务节点标识相对应地上传至区块链,并将所述第一用户的信息存储至本地数据库。

可选地,所述数据上传模块504,还用于,

在将所述第一摘要信息、所述第一哈希值、第一业务节点标识相对应地上传至区块链之前,判断所述区块链上是否已存在所述第一哈希值;

若不存在,则将所述第一摘要信息、所述第一哈希值、第一业务节点标识相对应地上传至区块链;

若存在,则继续判断所述区块链上存储的所述第一哈希值对应的业务节点标识与所述第一业务节点标识是否一致,若不一致则将所述第一摘要信息、所述第一哈希值、第一业务节点标识相对应地上传至区块链。

可选地,所述数据上传模块504,还用于,

在所述区块链上不存在所述第一哈希值的情况下,向所述第一业务节点对应的奖励值中增加第一奖励值;

在所述区块链上存在所述第一哈希值,但所存储的所述第一哈希值对应的业务节点标识与所述第一业务节点标识不一致的情况下,向所述第一业务节点对应的奖励值中增加第二奖励值,且所述第二奖励值小于所述第一奖励值。

可选地,所述数据上传模块504,还用于,

在第二业务节点请求获取所述第一用户的信息的情况下,从所述区块链上获取所述第二业务节点的公钥、所述第一摘要信息;

根据所述第一摘要信息,从本地数据库中搜索所述第一摘要信息对应的所述第一用户的信息;

使用所述第二业务节点的公钥,对所述第一用户的信息进行加密;

将加密后的所述第一用户的信息上传至所述区块链,以供所述第二业务节点从所述区块链上获取所述第一用户的信息。

可选地,还包括:数据获取模块505;所述数据获取模块505,用于,

接收第一业务节点发送的数据获取请求,所述数据获取请求指示了待获取的第二用户的信息对应的第二摘要信息、所述第一业务节点的公钥;

根据所述第二摘要信息对应的第二哈希值,从所述区块链上获取所述第二哈希值对应的一个或多个业务节点标识;

从所述业务节点标识中选取一个或多个业务节点标识;

根据所选取的业务节点标识、所述第二哈希值、所述第一业务节点的公钥,从所述区块链上获取使用所述第一业务节点的公钥加密的所述第二用户的信息。

可选地,所述数据获取模块504,还用于,

在从所述区块链上获取使用所述第一业务节点的公钥加密的所述第二用户的信息之后,使用所述第一业务节点的公钥对应的私钥解密所述第二用户的信息。

可选地,所述数据获取模块504,还用于,

在使用所述第一业务节点的公钥对应的私钥解密所述第二用户的信息之后,从所述第二用户的信息中提取所述第二用户的信息对应的第三摘要信息;

生成所述第三摘要信息对应的第三哈希值;

判断所述第三哈希值与所述第二哈希值是否一致,若一致,则向所述第一业务节点展示所述第二用户的信息,若不一致,则根据解密后的所述第二用户的信息向所述区块链申诉。

可选地,所述数据获取模块504,还用于,

在向所述区块链申诉成功的请情况下,通知所述第一业务节点所述数据获取请求失败;

在向所述区块链申诉失败的情况下,向所述第一业务节点展示解密后的所述第二用户的信息。

可选地,所述数据获取模块504,还用于,

在向所述第一业务节点展示解密后的所述第二用户的信息之后,将所述第二用户的信息、所述第二摘要信息、所选取的业务节点标识、所述第二哈希值相对应地存储至本地数据库。

可选地,所述数据获取模块504,还用于,

在根据所选取的业务节点标识、所述第二哈希值、所述第一业务节点的公钥,从所述区块链上获取使用所述第一业务节点的公钥加密的所述第二用户的信息时,从所述第一业务节点对应的奖励值中扣除第三奖励值。

参见图6,在上述实施例的基础上,本发明实施例提供了一种基于区块链的数据共享系统,该基于区块链的数据共享系统具体包括:区块链、一个或多个基于区块链的数据共享装置以及对应的业务节点。可以理解的是,该实施例中,仅以基于区块链的数据共享装置1、基于区块链的数据共享装置2,对应的业务节点分别是第一业务节点、第二业务节点为例进行说明,在实际的执行过程中,可以根据实际需求更更改基于区块链的数据共享装置或业务节点的数量。

参见图7,在上述实施例的基础上,本发明实施例提供了一种应用于基于区块链的数据共享系统的数据获取方法,该方法具体既可以包括的步骤如下:

步骤s701,基于区块链的数据共享装置1接收第一业务节点的数据上传请求,该数据上传请求指示了第一业务节点所服务的第一用户的信息。

步骤s702,基于区块链的数据共享装置1从所述第一用户的信息中提取所述第一用户的信息对应的第一摘要信息。

步骤s703,基于区块链的数据共享装置1生成所述第一摘要信息对应的第一哈希值。

步骤s704,将所述第一摘要信息、所述第一哈希值、第一业务节点标识相对应地上传至区块链,并将所述第一用户的信息存储至本地数据库。

在一种可选的实施方式中,在将所述第一摘要信息、所述第一哈希值、第一业务节点标识相对应地上传至区块链之前,判断所述区块链上是否已存在所述第一哈希值;若不存在,则将所述第一摘要信息、所述第一哈希值、第一业务节点标识相对应地上传至区块链;若存在,则继续判断所述区块链上存储的所述第一哈希值对应的业务节点标识与所述第一业务节点标识是否一致,若不一致则将所述第一摘要信息、所述第一哈希值、第一业务节点标识相对应地上传至区块链。

在一种可选的实施方式中,在所述区块链上不存在所述第一哈希值的情况下,向所述第一业务节点对应的奖励值中增加第一奖励值;在所述区块链上存在所述第一哈希值,但所存储的所述第一哈希值对应的业务节点标识与所述第一业务节点标识不一致的情况下,向所述第一业务节点对应的奖励值中增加第二奖励值,且所述第二奖励值小于所述第一奖励值。

步骤s705,基于区块链的数据共享装置2接收第二业务节点的第一用户的信息获取请求,该获取请求指示了第二业务节点的公钥,第一用户的信息的第一摘要。

步骤s706,基于区块链的数据共享装置2根据所述第一摘要信息对应的第一哈希值,从区块链上获取所述第一哈希值对应的一个或多个业务节点标识。

步骤s707,基于区块链的数据共享装置2选取第一业务节点标识,也即选择获取第一业务节点上传的第一摘要信息对应的第一用户的信息。可以理解是,本实施例仅以选取第一业务节点标识为例进行说明,在实际的执行过程中,可以根据实际需求选取一个或多个业务节点标识。

步骤s708,基于区块链的数据共享装置2根据第一摘要信息、第一业务节点标识、第二业务节点的公钥请求获取第一用户的信息,也即将第一摘要信息、第一业务节点标识、第二业务节点的公钥上传至区块链,以请求获取第一用户的信息。

步骤s709,基于区块链的数据共享装置2从区块链上获取第一摘要信息、第一业务节点标识、、第二业务节点的公钥对应的响应标识,以根据该响应标识从区块链上获取第一用户的信息。具体地,在收到响应标识时,开启接收消息进程等待数据第一业务节点根据第二业务节点的方公钥对第一用户的信息进行加密后上传到链上的通知,等数据到达链上接收到消息通知后,根据请求响应id去区块链查询数据。该响应标识时随机生成的与每一个数据获取请求一一对应地。

步骤s710,基于区块链的数据共享装置1从区块链上回去第一摘要信息、第二业务节点的公钥。

步骤s711,基于区块链的数据共享装置1根据第一摘要信息在本地数据库中搜索第一用户的信息。

步骤s712,基于区块链的数据共享装置1根据第二业务节点的公钥加密第一用户的信息。

步骤s713,基于区块链的数据共享装置1将使用第二业务节点的公钥加密后的第一用户的信息上传至区块链。

步骤s714,基于区块链的数据共享装置2根据相应标识从区块链上获取加密的第一用户的信息。

步骤s715,基于区块链的数据共享装置2使用第二业务节点的公钥对应的私钥解密第一用户的信息。

步骤s716,从解密后的第一用户的信息中提取第四摘要信息。

步骤s717,生成第四摘要信息的第四哈希值。

步骤s718,判断第一哈希值与第四哈希值是否一致;若一致,则继续执行下述步骤s719,若不一致,则继续执行下述步骤s720。

步骤s719,在第一哈希值与第四哈希值一致的情况下,向第二业务节点展示解密后的第一用户的信息。

步骤s720,在第一哈希值与第四哈希值不一致的情况下,向区块链申诉。更进一步地,在向所述区块链申诉成功的请情况下,通知所述第一业务节点所述数据获取请求失败;在向所述区块链申诉失败的情况下,向所述第一业务节点展示解密后的所述第二用户的信息。

值得注意的是,为激励第一业务节点上传更多不同的第一摘要信息,在所述区块链上不存在所述第一哈希值的情况下,向所述第一业务节点对应的奖励值中增加第一奖励值;在所述区块链上存在所述第一哈希值,但所存储的所述第一哈希值对应的业务节点标识与所述第一业务节点标识不一致的情况下,向所述第一业务节点对应的奖励值中增加第二奖励值,且所述第二奖励值小于所述第一奖励值。

与之相对应,为避免第一业务节点滥用从区块链上获取的第二用户的信息,在根据所选取的业务节点标识、所述第二哈希值、所述第一业务节点的公钥,从所述区块链上获取使用所述第一业务节点的公钥加密的所述第二用户的信息时,从所述第一业务节点对应的奖励值中扣除第三奖励值。

图8示出了可以应用本发明实施例的基于区块链的数据共享方法或基于区块链的数据共享装置)的示例性系统架构800。

如图8所示,系统架构800可以包括终端设备801、802、803,网络804和服务器805。网络804用以在终端设备801、802、803和服务器805之间提供通信链路的介质。网络804可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。

用户可以使用终端设备801、802、803通过网络804与服务器805交互,以接收或发送消息等。终端设备801、802、803上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等。

终端设备801、802、803可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。

服务器805可以是提供各种服务的服务器,例如对用户利用终端设备801、802、803所浏览的购物类网站提供支持的后台管理服务器。后台管理服务器可以对接收到的产品信息查询请求等数据进行分析等处理,并将处理结果反馈给终端设备。

需要说明的是,本发明实施例所提供的基于区块链的数据共享方法一般由服务器805执行,相应地,基于区块链的数据共享装置一般设置于服务器805中。

应该理解,图8中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。

下面参考图9,其示出了适于用来实现本发明实施例的终端设备的计算机系统900的结构示意图。图9示出的终端设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。

如图9所示,计算机系统900包括中央处理单元(cpu)901,其可以根据存储在只读存储器(rom)902中的程序或者从存储部分908加载到随机访问存储器(ram)903中的程序而执行各种适当的动作和处理。在ram903中,还存储有系统900操作所需的各种程序和数据。cpu901、rom902以及ram903通过总线904彼此相连。输入/输出(i/o)接口905也连接至总线904。

以下部件连接至i/o接口905:包括键盘、鼠标等的输入部分906;包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分907;包括硬盘等的存储部分908;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分909。通信部分909经由诸如因特网的网络执行通信处理。驱动器910也根据需要连接至i/o接口905。可拆卸介质911,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器910上,以便于从其上读出的计算机程序根据需要被安装入存储部分908。

特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分909从网络上被下载和安装,和/或从可拆卸介质911被安装。在该计算机程序被中央处理单元(cpu)901执行时,执行本发明的系统中限定的上述功能。

需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、rf等等,或者上述的任意合适的组合。

附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

描述于本发明实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括上传请求接收模块、摘要信息提取模块、哈希值生成模块、数据上传模块。其中,这些模块的名称在某种情况下并不构成对该模块本身的限定,例如,哈希值生成模块还可以被描述为“用于生成所述第一摘要信息对应的第一哈希值的模块”。

作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:接收第一业务节点的数据上传请求,所述数据上传请求指示了所述第一业务节点所服务的第一用户的信息;从所述第一用户的信息中提取所述第一用户的信息对应的第一摘要信息;生成所述第一摘要信息对应的第一哈希值;将所述第一摘要信息、所述第一哈希值、第一业务节点标识相对应地上传至区块链,并将所述第一用户的信息存储至本地数据库。

根据本发明实施例的技术方案,:通过仅将用户的信息的摘要信息以及对应的哈希值上传至区块链上,降低了区块链上存储的数据量;同时,通过区块链上存储的用户信息的摘要信息以及对应的哈希值,实现了业务节点对可获取用户的信息的快速查询,提高了查询的效率;当且仅当用户的信息被请求获取的情况下,才使用请求获取该用户的信息的业务节点的公钥将数据加密后上传至区块链,使得有且仅有请求信息的业务节点使用公钥对应的私钥才能解密相应的用户信息,提高了信息的安全性。

上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。

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