数字身份管理方法、装置、系统、计算机设备和存储介质与流程

文档序号:28319661发布日期:2022-01-04 21:59阅读:114来源:国知局
数字身份管理方法、装置、系统、计算机设备和存储介质与流程

1.本技术涉及区块链的技术领域,具体涉及数字身份管理方法、装置、系统、计算机设备和存储介质。


背景技术:

2.区块链分为公有链、私有链以及联盟链等,应用于不同的场景。在区块链一些应用场景中,要验证用户身份,通常是将用户数字身份部署在区块链上,再进行验证,例如将用户数字身份写入区块链账本上,根据用户数字身份与区块链账本验证用户身份。
3.然而,将用户数字身份部署在区块链上,会使链上要处理大量的用户数字身份,导致区块链性能降低,是当前面临的重大技术问题。


技术实现要素:

4.本技术实施例提供数字身份管理方法、装置、系统、计算机设备和存储介质,通过根据当前数字身份哈希值创建当前区块链交易,将当前数字身份以及上一交易哈希值发送至存储服务器,将用户数字身份对应的哈希值部署在区块链上,但将用户数字身份部署在区块链下的存储服务器内,大大减少区块链上处理的数据量,可以提升区块链性能。
5.本技术实施例提供一种数字身份管理方法,应用于区块链上的创建节点,所述创建节点为区块链上的任意节点,包括:获取当前数字身份以及上一交易哈希值,所述上一交易哈希值为上一区块链交易的哈希值;根据所述当前数字身份以及所述上一交易哈希值,得到当前数字身份哈希值;根据所述当前数字身份哈希值,创建当前区块链交易;将所述当前区块链交易发送至接收节点,所述接收节点为区块链上除所述创建节点以外的节点;将所述当前数字身份以及所述上一交易哈希值发送至存储服务器,以便所述接收节点根据所述当前区块链交易从所述创建节点或所述存储服务器获取所述当前数字身份以及所述上一交易哈希值。
6.本技术实施例还提供一种数字身份管理方法,应用于区块链上的接收节点,包括:获取当前区块链交易,所述当前区块链交易由创建节点创建,所述创建节点为区块链上的任意节点,所述接收节点为区块链上除所述创建节点以外的节点,所述当前区块链交易包括当前数字身份哈希值,所述当前数字身份哈希值根据当前数字身份以及上一交易哈希值得到,所述上一交易哈希值为上一区块链交易的哈希值;根据所述当前数字身份哈希值,从创建节点或存储服务器获取所述当前数字身份以及所述上一交易哈希值;根据所述上一交易哈希值,将所述当前数字身份作为本地数字身份写入本地存储,以便从所述本地存储获取所述本地数字身份。
7.本技术实施例还提供一种数字身份管理装置,集成在区块链上的创建节点,所述创建节点为区块链上的任意节点,包括:获取单元,用于获取当前数字身份以及上一交易哈希值,所述上一交易哈希值为上一区块链交易的哈希值;处理单元,用于根据所述当前数字身份以及所述上一交易哈希值,得到当前数字身份哈希值;交易单元,用于根据所述当前数
字身份哈希值,创建当前区块链交易;第一发送单元,用于将所述当前区块链交易发送至接收节点,所述接收节点为区块链上除所述创建节点以外的节点;第二发送单元,用于将所述当前数字身份以及所述上一交易哈希值发送至存储服务器,以便所述接收节点根据所述当前区块链交易从所述创建节点或所述存储服务器获取所述当前数字身份以及所述上一交易哈希值。
8.本技术实施例还提供一种数字身份管理装置,集成在区块链上的接收节点,包括:接收单元,用于获取当前区块链交易,所述当前区块链交易由创建节点创建,所述创建节点为区块链上的任意节点,所述接收节点为区块链上除所述创建节点以外的节点,所述当前区块链交易包括当前数字身份哈希值,所述当前数字身份哈希值根据当前数字身份以及上一交易哈希值得到,所述上一交易哈希值为上一区块链交易的哈希值;调用单元,用于根据所述当前数字身份哈希值,从创建节点或存储服务器获取所述当前数字身份以及所述上一交易哈希值;存储单元,用于根据所述上一交易哈希值,将所述当前数字身份作为本地数字身份写入本地存储,以便从所述本地存储获取所述本地数字身份。
9.本技术实施例还提供一种数字身份管理系统,包括创建节点以及接收节点,所述创建节点为区块链上的任意节点,所述接收节点为区块链上除所述创建节点以外的节点,其中:所述创建节点用于:获取当前数字身份以及上一交易哈希值,所述上一交易哈希值为上一区块链交易的哈希值;根据所述当前数字身份以及所述上一交易哈希值,得到当前数字身份哈希值;根据所述当前数字身份哈希值,创建当前区块链交易;将所述当前区块链交易发送至所述接收节点;将所述当前数字身份以及所述上一交易哈希值发送至存储服务器,以便所述接收节点根据所述当前区块链交易从所述创建节点或所述存储服务器获取所述当前数字身份以及所述上一交易哈希值;所述接收节点用于:获取当前区块链交易;根据所述当前数字身份哈希值,从所述创建节点或所述存储服务器获取当前数字身份以及上一交易哈希值;根据所述上一交易哈希值,将所述当前数字身份作为本地数字身份写入本地存储,以便从所述本地存储获取所述本地数字身份。
10.本技术实施例还提供一种计算机设备,包括存储器存储有多条指令;所述处理器从所述存储器中加载指令,以执行本技术实施例所提供的任一种数字身份管理方法中的步骤。
11.本技术实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有多条指令,所述指令适于处理器进行加载,以执行本技术实施例所提供的任一种数字身份管理方法中的步骤。
12.本技术实施例可以获取当前数字身份以及上一交易哈希值,所述上一交易哈希值为上一区块链交易的哈希值;根据当前数字身份以及所述上一交易哈希值,得到当前数字身份哈希值;根据所述当前数字身份哈希值,创建当前区块链交易;将所述当前区块链交易发送至接收节点,所述接收节点为区块链上除所述创建节点以外的节点;将所述当前数字身份以及所述上一交易哈希值发送至存储服务器,以便所述接收节点根据所述当前区块链交易从所述创建节点或所述存储服务器获取所述当前数字身份以及所述上一交易哈希值。本技术实施例通过根据当前数字身份哈希值创建当前区块链交易,将当前数字身份以及上一交易哈希值发送至存储服务器,以将用户数字身份对应的哈希值部署在区块链上,将用户数字身份部署在区块链下的存储服务器内,大大减少区块链上处理的数据量,提升区块
链性能。此外,在对当前数字身份进行处理和存储时加入上一交易哈希值,通过区块链交易将数字身份对应的哈希值发送至区块链上的节点,增加存储在区块链节点的当前数字身份哈希值可靠性,并将当前数字身份以及上一交易哈希值发送至存储服务器,使在链下对当前数字身份进行处理时具有上一交易属性,增加在链下存储数据的可靠性。
13.同时,本技术实施例可以获取当前区块链交易,所述当前区块链交易由创建节点创建,所述创建节点为区块链上的任意节点,所述接收节点为区块链上除所述创建节点以外的节点,所述当前区块链交易包括当前数字身份哈希值,所述当前数字身份哈希值根据当前数字身份以及上一交易哈希值得到,所述上一交易哈希值为上一区块链交易的哈希值;根据所述当前数字身份哈希值,从创建节点或存储服务器获取当前数字身份以及上一交易哈希值;根据所述上一交易哈希值,将所述当前数字身份作为本地数字身份写入本地存储,以便从所述本地存储获取所述本地数字身份。本技术实施例将当前数字身份写入接收节点的本地存储中,便于用户从本地存储调用数字身份,在获取当前数字身份时,根据当前身份哈希值从创建节点或存储服务器获取当前数字身份以及上一交易哈希值,以从链下获取当前数字身份,通过将当前数字身份哈希值以及当前数字身份分别部署在链上和链下,大大减少区块链上处理的数据量,提升区块链性能。在将当前数字身份写入本地存储时,根据上一交易哈希值确定是否将当前数字身份写入本地存储,使得当前数字身份与上一交易哈希值有关联性才保存在本地,增加保存在本地存储的当前数字身份的可靠性。
附图说明
14.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
15.图1是本技术实施例提供的数字身份管理系统的场景示意图;
16.图2是本技术实施例提供的数字身份管理方法的流程示意图;
17.图3是本技术另一个实施例提供的数字身份管理方法的流程示意图;
18.图4是本技术另一个实施例提供的基于btc网络进行分布式数字身份标识符管理系统的场景示意图;
19.图5是本技术另一个实施例提供的数字身份管理方法的流程示意图;
20.图6是本技术另一个实施例提供的获取目标用户身份数据的流程示意图;
21.图7是本技术实施例提供的数字身份管理装置的结构示意图;
22.图8是本技术另一个实施例提供的数字身份管理装置的结构示意图
23.图9是本技术实施例提供的计算机设备的结构示意图。
具体实施方式
24.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
25.在对本技术实施例进行详细地解释说明之前,先对本技术实施例涉及到的一些名词进行解释说明。
26.其中,数字身份:是将真实身份信息浓缩为数字代码,形成可通过网络、相关设备等查询和识别的公共秘钥。数字身份的对象可以包括人、组织(机构),等等。
27.区块链:区块链技术脱胎于比特币技术,是比特币的底层技术,其是去中心化的分布式账本数据库。区块链本身是一串使用密码学算法相关联产生的数据块(即区块数据),每一个区块数据中包含了多次区块链网络交易有效确认的信息。正是基于此,所以无法通过篡改区块上的数据来进行作弊,能够确保任何区块链上的数据均是公开透明的,确保了数据的安全性。在以下描述中为了明确区块链系统和区块数据组成的链,可以将包含多个节点的区块链系统称为区块链,将区块链中存储的数据组成的链称为区块数据链。
28.区块链可以分为公有链、私有链、联盟链。其中,联盟链则介于公有链和私有链之间,由若干组织一起合作维护一条区块链,该区块链的使用是有权限的管理,相关信息会得到保护,典型如金融组织。总结来说,区块链是由节点参与的分布式数据库系统,或者,也可称之为一个基于p2p(点对点)网络的分布式公共账本,其特点是不可更改、不可伪造,还可以将其理解为账簿系统。
29.区块链的节点:参与构建区块链的设备,比如,参与构建区块链的各内容厂商的计算机设备,该计算机设备可以为单台计算机设备如某个内容厂商的单台服务器,也可以为某个内容厂商的计算机设备集群如服务器集群。区块链的节点可以为信息处理的执行主体、节点之间交互可以实现交易等业务等。该节点存储有相关区块数据,比如,该区块数据可以包括虚假信息、信息查证结果等等。
30.交易:也称为交易请求,等同于计算机术语事务(transaction),交易包括了需要提交到区块链网络执行的操作,以及对应的交易结果。并非单指商业语境中的交易,鉴于在区块链技术中约定俗成地使用了“交易”这一术语,本发明实施例遵循了这一习惯。例如,交易可以包括部署(deploy)交易和调用(invoke)交易,部署交易用于将智能合约到区块链网络的节点中并准备好被调用;调用(invoke)交易用于对账本中的状态数据库进行查询操作(即读操作)或更新操作(即写操作,包括增加、删除和修改)。
31.本技术实施例提供数字身份管理方法、装置、系统、计算机设备和存储介质。
32.其中,该数字身份管理装置具体可以集成在电子设备中,该电子设备可以为终端、服务器等设备。其中,终端可以为手机、平板电脑、智能蓝牙设备、笔记本电脑、或者个人电脑(personal computer,pc)等设备;服务器可以是单一服务器,也可以是由多个服务器组成的服务器集群。
33.在一些实施例中,该数字身份管理装置还可以集成在多个电子设备中,比如,数字身份管理装置可以集成在多个服务器中,由多个服务器来实现本技术的数字身份管理方法。
34.在一些实施例中,服务器也可以以终端的形式来实现。
35.例如,参考图1,在一些实施例中提供了一种数字身份管理系统的场景示意图,该系统可以实现数字身份管理等业务。该系统可以包括区块链网络上的多个节点1000和终端2000,以及存储服务器3000,终端2000可以为手机、电脑等,其中多个节点1000之间通过区块链网络4000连接,节点和终端之间通过网络5000连接,节点1000和存储服务器3000之间
通过网络连接。
36.在区块链网络中,通过向区块链节点提交相应的区块链交易(简称交易),并由区块链节点执行区块链交易,以实现相应的操作目的。
37.区块链网络的类型是灵活多样的,例如可以为公有链、私有链或联盟链中的任意一种。以公有链为例,任何业务主体的终端或服务器中运行的客户端,都可以在无需授权的情况下接入区块链网络而成为一类特殊的节点,成为客户端节点;以联盟链为例,业务主体在被授权成为区块链网络的成员后,对应的客户端可以接入区块链网络而成为客户端节点。
38.其中,在本技术的实施例中,该数字身份管理系统可以包括创建节点以及接收节点,创建节点为区块链上的任意节点,接收节点为区块链上除创建节点以外的节点。其中:
39.创建节点用于:获取当前数字身份以及上一交易哈希值,上一交易哈希值为上一区块链交易的哈希值;根据当前数字身份以及上一交易哈希值,得到当前数字身份哈希值;根据当前数字身份哈希值,创建当前区块链交易;将当前区块链交易发送至接收节点;将当前数字身份以及上一交易哈希值发送至存储服务器,以便接收节点根据当前区块链交易从创建节点或存储服务器获取当前数字身份以及上一交易哈希值。
40.接收节点用于:获取当前区块链交易;根据当前数字身份哈希值,从创建节点或存储服务器获取当前数字身份以及上一交易哈希值;根据上一交易哈希值,将当前数字身份作为本地数字身份写入本地存储,以便从本地存储获取本地数字身份。
41.本技术实施例通过将用户数字身份对应的哈希值部署在区块链上,将用户数字身份部署在区块链下的存储服务器内大大减少区块链上处理的数据量,提升区块链性能,也便于从本地存储获取本地数字身份。将当前数字身份写入本地存储时,根据上一交易哈希值确定是否将当前数字身份写入本地存储,使得当前数字身份与上一交易哈希值有关联性才保存在本地,增加保存在本地存储的当前数字身份的可靠性。
42.以下分别进行详细说明。需说明的是,以下实施例的序号不作为对实施例优选顺序的限定。
43.在本实施例中,提供了一种数字身份管理方法,应用于区块链上的创建节点,创建节点为区块链上的任意节点,如图2所示,该数字身份管理方法的具体流程可以如下:
44.110、获取当前数字身份以及上一交易哈希值,上一交易哈希值为上一区块链交易的哈希值。
45.其中,创建节点可以是部署在区块链上的服务器,创建节点与终端通过网络连接,操作人员可以用过终端向创建节点发送当前数字身份。
46.其中,当前数字身份是指当前时刻或当前时间段内获取的用户数字身份,当前数字身份可以包括数字代码。获取当前数字身份后,在下一时刻或下一时间段内获取的用户数字身份为下一数字身份。在获取当前数字身份前,在上一时刻或上一时间段内获取的用户数字身份为上一数字身份。当前时间段、上一时间段以及下一时间段可以为预设的一段时间,也可以为按照其他规则确定的时间段,如按获取的用户数字身份数据量大小确定的时间段,等等。用户可以为个人或机构,例如,当用户为个人时,用户可以为操作人员,操作人员可以通过与创建节点连接的终端创建该操作人员的数字身份(即当前数字身份),以使得创建节点获取该操作人员的数字身份;当用户为机构时,用户为操作人员代表的机构,操
作人员可以通过与创建节点连接的终端创建该机构的数字身份(即当前数字身份),以使得创建节点获取该机构的数字身份。
47.其中,上一区块链交易为当前区块链交易的上一个交易,当前区块链交易的下一个交易为下一区块链交易。当前区块链交易、上一区块链交易以及下一区块链交易分别根据当前数字身份哈希值、上一数字身份哈希值以及下一数字身份哈希值创建得到。交易哈希值是指对区块链交易信息进行哈希计算得到的字符串,能用于获取对应的区块链交易信息。
48.需要说明的是,当在获取当前数字身份时不存在上一交易哈希值,也即该当前数字身份为第一次创建的数字身份时,可以根据该当前数字身份创建区块链交易,并将该当前数字身份发送至存储服务器。例如,该当前数字身份进行哈希计算,得到当前数字身份哈希值,根据该当前数字身份哈希值创建当前区块链交易,将该当前区块链交易发送至接收节点,并将该当前数字身份发送至存储服务器;还可以直接根据该当前数字身份创建当前区块链交易,将该当前区块链交易发送至接收节点,并将该当前数字身份发送至存储服务器。
49.在一些实施方式中,步骤110可以包括步骤(1.1)~(1.4)、如下:
50.(1.1)、获取缓存队列。
51.(1.2)、获取当前身份数据,并将获取到的当前身份数据加载到缓存队列中。
52.(1.3)、当缓存队列满足预设条件时,将缓存队列中的所有当前身份数据作为当前数字身份。
53.(1.4)、获取上一交易哈希值。
54.其中,缓存队列是指用于缓存身份数据的队列,可以在获取当前身份数据之前建立,也可以在获取当前身份数据时建立,等等。
55.其中,当前身份数据是指当前时刻或当前时间段内获取的一组用户身份数据,可以为由字符串组成的标识符,例如分布式数字身份标识符(did),网络身份标识(eid),等等。当前数字身份包括至少一组当前身份数据,每组当前用户数据可以与一个用户对应。在一些实施方式中,当前身份数据也可以为用于更新或删除身份标识的指令。
56.其中,预设条件可以为缓存队列已满,也可以为缓存队列中最早的身份数据与最新的身份数据的时间间隔达到预设值,等等。例如,缓存队列可以设置一个容量上限或等待时间上限,根据容量上限或等待时间上限确定是否处理缓存队列中的数据。
57.通过缓存队列缓存当前身份数据,可以按批次获取并处理批量的当前身份数据,提高处理效率。
58.120、根据当前数字身份以及上一交易哈希值,得到当前数字身份哈希值。
59.其中,当前数字身份哈希值可以为对当前数字身份以及上一交易哈希值进行哈希计算得到的字符串,可以通过哈希寻址来获取当前数字身份以及上一交易哈希值。
60.130、根据当前数字身份哈希值,创建当前区块链交易。
61.其中,当前区块链交易为包含当前数字身份哈希值的交易,通过解析当前区块链交易,能够得到当前数字身份哈希值。通过创建当前区块链交易,将当前数字身份哈希值存储在区块链上。
62.140、将当前区块链交易发送至接收节点,接收节点为区块链上除创建节点以外的
节点。
63.其中,接收节点可以是部署在区块链上的服务器,接收节点与终端通过网络连接,接收节点监听区块链网络,并获取当前区块链交易。
64.需说明的是,本技术中的创建节点以及接收节点用以表示参与同一区块链交易中的两种节点身份,可以根据节点在交易中的操作而改变,例如,区块链上的节点在某一区块链交易中可以为创建节点,在另一区块链交易中为接收节点。此外,接收节点可以为区块链上除创建节点以外的部分或全部节点,可以根据具体的数字身份管理场景设置和调整。
65.150、将当前数字身份以及上一交易哈希值发送至存储服务器,以便接收节点根据当前区块链交易从创建节点或存储服务器获取当前数字身份以及上一交易哈希值。
66.其中,存储服务器可以为部署在区块链下的服务器,或ipfs网络,等等。其中ipfs网络为分布式存储网络,具有多个可以用来存储的节点。存储服务器与创建节点以及接收节点在链下进行信息交互,存储服务器、创建节点以及接收节点可以通过网络连接。此外,操作人员可以通过终端向接收节点发出获取指令,控制接收节点从创建节点或存储服务获取当前数字身份以及上一交易哈希值,其中接收节点从链下网络获取当前数字身份以及上一交易哈希值。
67.did是由字符串组成的标识符,用来代表一个数字身份,不需要中央注册机构就可以实现全球唯一性,did是一种去中心化的可验证的数字标识符,具有分布式、自主可控、跨链复用等特点,实体可自主完成did的注册、解析、更新或者撤销操作。did具体解析为did document(did文档),did文档包括did标识,公钥列表和公钥的详细信息(持有者、加密算法、密钥状态等),以及did持有者的其他属性,等等。显然,did文档中不包含用户敏感的数字身份。
68.在一些实施方式中,当当前数字身份包括did信息时,存储服务器为ipfs网络。其中did信息可以为包括包含did标识的did文档,因此将did信息存储在ipfs网络后,ipfs网络中并没有用户的敏感数字身份,以实现对敏感隐私数据的可靠保护,同时,利用ipfs网络的分布式存储架构存储did信息,通过哈希寻址,能够从ipfs网络中快速定位到对应的did信息,以实现快速查did信息。
69.在一些实施方式中,当前身份数据可以包括与一个用户对应的did信息,也可以包括与一个用户对应的用于更新或删除该用户did信息的指令。
70.在一些实施方式中,在接收节点获取到当前数字身份以及上一交易哈希值,操作人员可以通过终端向接收节点发出验证指令,通过解析获取到的当前数字身份,验证用户身份,用户可以为操作人员、或操作人员代表的机构,等等。在一些实施方式中,用户身份验证通过的用户,具有在区块链上操作的权限,例如:通过区块链上的节点创建区块链交易。
71.在步骤150中,接收节点可以选择不同的方式获取当前数字身份以及上一交易哈希值。例如,在一些实施方式中,仅从创建节点获取当前数字身份以及上一交易哈希值;在一些实施方式中,为了避免创建节点被破坏、硬件故障或通信故障等导致的创建节点上数据丢失或无法获取,先从创建节点的本地存储中获取当前数字身份以及上一交易哈希值,当未获取到时,从存储服务器获取当前数字身份以及上一交易哈希值;在一些实施方式中,仅从存储服务器获取当前数字身份以及上一交易哈希值。需要说明的是,步骤150中通过普通网络(非区块链网络)从创建节点或存储服务器获取当前数字身份以及上一交易哈希值。
72.本技术实施例通过根据当前数字身份哈希值创建当前区块链交易,将当前数字身份以及上一交易哈希值发送至存储服务器,以将用户数字身份对应的哈希值部署在区块链上,将用户数字身份部署在区块链下的存储服务器内,大大减少区块链上处理的数据量,提升区块链性能。此外,在对当前数字身份进行处理和存储时加入上一交易哈希值,通过区块链交易将数字身份对应的哈希值发送至区块链上的节点,增加存储在区块链节点的当前数字身份哈希值可靠性,并将当前数字身份以及上一交易哈希值发送至存储服务器,使在链下对当前数字身份进行处理时具有上一交易属性,增加在链下存储数据的可靠性。本技术实施例提供的数字身份管理方案可以应用在各种区块链上数字身份管理场景中,例如可以应用在联盟链上,通过将用户数字身份存储在链下,用户可以通过网络在链下获取,便于区块链节点上用户的身份验证且链上要处理的数据量大大减少,使联盟链能处理更多交易信息,解决联盟链只能在小范围应用的问题。
73.在本实施例中,提供了一种数字身份管理方法,应用于区块链上的接收节点,如图3所示,该数字身份管理方法的具体流程可以如下:
74.210、获取当前区块链交易,当前区块链交易由创建节点创建,创建节点为区块链上的任意节点,接收节点为区块链上除创建节点以外的节点,当前区块链交易包括当前数字身份哈希值,当前数字身份哈希值根据当前数字身份以及上一交易哈希值得到,上一交易哈希值为上一区块链交易的哈希值。
75.本实施例中当前区块链交易、创建节点、接收节点、当前数字身份哈希值、上一交易哈希值、上一区块链交易以及存储服务器等的解释均可参照前述实施例中对应部分。
76.在一些实施方式中,步骤210可以包括步骤(2.1)~(2.3),如下:
77.(2.1)、当区块链上有新区块产生时,判断目标区块中是否存在预设数量的包含数字身份哈希值的区块链交易,目标区块包括新区块的前n个区块,其中n为正整数。
78.(2.2)、当目标区块中存在预设数量的包含数字身份哈希值的区块链交易时,从新区块获取当前区块链交易。
79.(2.3)、当目标区块中不存在预设数量的包含数字身份哈希值的区块链交易时,确定本地存储保存的本地数字身份的完整性。
80.其中,数字身份哈希值是与区块链交易对应的哈希值,当区块链交易为上一区块链交易时,数字身份哈希值为上一身份哈希值。包含数字身份哈希值的区块链交易是指根据该区块链交易能得到与其对应的该数字身份哈希值。
81.其中,预设数量以及n值都可以根据实际的需要进行设置或调整,例如,根据包含数字身份哈希值的区块链交易出现的频次设置或调整n值。在一些实施方式中,预设数量为新区块的前n个区块中的任意一个区块有至少一个包含数字身份哈希值的区块链交易。
82.其中,本地数字身份的完整性是指本地存储中的数字身份是否完整保存了与区块链网络中所有数字身份哈希值的区块链交易对应的数字身份。完整性可以通过将接收节点获取的区块链交易与账本数据中交易进行比较确定,也可以通过将本地存储中的数字身份与区块链网路中数字身份哈希值对应的数字身份进行比较确定,等等。
83.区块链本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块(即区块),每一个数据块中包含了一批次网络交易的信息。本技术实施例的区块链网络可能应用在不同的行业,例如银行业务领域数据、保险业务领域数据、公安业务领域数
据,等等,甚至可能跨行业应用。因此区块链网络上存储的数据不仅包括数字身份哈希值,例如当区块链网络应用于银行业务领域数据时,还可以包括数字资产信息、数字票据信息,等等,对不同数据操作可能创建不同的交易,也即区块网络上除对数字身份创建包含数字身份哈希值的区块链交易以外,还会对其他数据创建包含其他数据信息的区块链交易。
84.由于,在区块链网络中并不是每个区块中都会有包含数字身份哈希值的区块链交易。在区块链网络节点对数字身份哈希值的区块链交易的监听过程中,当监听地址丢失,例如由于区块链交易断开导致监听地址丢失,以使得接收节点未能获取到该交易以及后续交易,导致本地存储的信息不完整。
85.在区块链网络中,每个参与区块链的节点都会保存与区块链同步的状态数据库(即账本数据),记录区块链中的交易,用于支持对区块链交易的快速查询。在账本数据中,与数字身份相关的交易会具有相应的标识,便于快速查询。在一些实施方式中,根据区块链上的交易以及接收节点获取的上一区块链交易确定本地数字身份的完整性。例如,当接收节点获取的上一区块链交易为账本数据中的最后一条包含数字身份哈希值的区块链交易时,则确定本地数字身份完整,若不为,则不完整。
86.在一些实施方式中,接收节点上的监听器在第一笔包含数字身份哈希值的区块链交易时监听数字身份操作的创始地址,当有新的包含数字身份哈希值的区块链交易出现时,则监听最新的地址,以此类推。
87.因此,本技术实施例在新区块产生时,判断新区块之前的区块是否有包含数字身份哈希值的区块链交易,当新区块的前n个区块都没有包含数字身份哈希值的区块链交易时,则可能存在监听地址丢失。再通过确定本地数字身份的完整性,判断是否存在监听地址丢失的情况。通过上述判断过程,能获取监听异常情况,并只对n个区块交易进行解析判断,不需要遍历所有交易,节省算力。
88.在一些实施方式中,步骤(2.2)中的从新区块获取当前区块链交易,包括:判断新区块中是否有包含数字身份哈希值的区块链交易,若有,则将该包含数字身份哈希值的区块链交易作为当前区块链交易,若无,则对下一区块执行步骤210,以此类推,直至获取到包含数字身份哈希值的区块链交易。
89.在一些实施方式中,步骤(2.3)可以包括步骤(2.3.1)~(2.3.3),如下:
90.(2.3.1)、获取历史区块链交易。
91.(2.3.2)、根据历史区块链交易,得到历史数字身份哈希值。
92.(2.3.3)、根据历史数字身份哈希值以及本地数字身份,确定本地存储保存的本地数字身份的完整性。
93.其中,历史区块链交易为上一区块链交易之前的交易,历史区块链交易可以为上一区块链交易之前的所有区块链交易,也可以为上一区块链交易的前一区块链交易等等。历史区块链交易为包含数字身份哈希值的区块链交易。
94.在一些实施方式中,步骤(2.3.3)包括步骤:判断本地存储中是否有与历史数字身份哈希值对应的历史数字身份,若有,则本地数字身份完整,若无,则不完整。其中,判断本地存储中是否有与历史数字身份哈希值对应的历史数字身份的方法可以为:根据历史数字身份哈希值从存储服务器获取历史数字身份,再确定本地存储中是否有与历史数字身份相同的数字身份,若有则为完整,若无则不完整,或在步骤220之后还包括将上一信息哈希值
写入本地存储,在步骤(2.3.3)确定本地存储中是否有与历史数字身份哈希值相同的数字身份哈希值,若有则为完整,若无则不完整,等等。
95.因此,本技术实施例获得的历史数字身份哈希值作为判断要素确定本地数字身份的完整性,由于历史数字身份哈希值来源于链上,本地数字身份存储在链下,通过链上链下信息的融合判断过程,增加判断结果的可靠性。
96.在一些实施方式中,在步骤(2.3)之后,还可以包括步骤(2.4)~(2.5),如下:
97.(2.4)、当本地存储保存的本地数字身份完整时,从新区块获取当前区块链交易。
98.(2.5)、当本地存储保存的本地数字身份不完整时,根据历史数字身份哈希值,从存储服务器获取历史数字身份,并将历史数字身份写入本地存储。
99.在一些实施方式中,在步骤(2.3.1)之前还包括步骤:从账本数据中获取最后一次区块链交易作为历史区块链交易,该最后一次区块链交易为包含数字身份哈希值的区块链交易。在一些实施方式中,步骤(2.5)之后还包括步骤:从账本数据中获取最后一次区块链交易的前一区块链交易作为历史区块链交易,并执行步骤(2.3.1)~(2.3.3)以及步骤(2.4)~(2.5),以此类推,直至交易列表中的区块链交易与上一区块链交易连续,该最后一次区块链交易的前一区块链交易为包含数字身份哈希值的区块链交易。
100.在一些实施方式中,在步骤(2.5)中将历史数字身份写入本地存储之后还包括步骤:更新监听地址。其中,将监听地址更新为最新的监听地址。
101.因此,本技术实施例在本地存储的本地数字身份不完整时,从存储服务器获取数字身份,无需上链,就能保证链下数据的完整性,大大提升了区块链网络性能,也保证了链下数据的可靠性。
102.220、根据当前数字身份哈希值,从创建节点或存储服务器获取当前数字身份以及上一交易哈希值。
103.根据当前数字身份哈希值,通过哈希寻址获取当前数字身份以及上一交易哈希值。在步骤220中,接收节点可以选择不同的方式获取当前数字身份以及上一交易哈希值。例如,在一些实施方式中,仅从创建节点获取当前数字身份以及上一交易哈希值;在一些实施方式中,为了避免创建节点被破坏、硬件故障或通信故障等导致的创建节点上数据丢失或无法获取,先从创建节点的本地存储中获取当前数字身份以及上一交易哈希值,当未获取到时,从存储服务器获取当前数字身份以及上一交易哈希值;在一些实施方式中,仅从存储服务器获取当前数字身份以及上一交易哈希值。需要说明的是,步骤220中通过普通网络(非区块链网络)从创建节点或存储服务器获取当前数字身份以及上一交易哈希值。
104.230、根据上一交易哈希值,将当前数字身份作为本地数字身份写入本地存储,以便从本地存储获取本地数字身份。
105.其中,本地数字身份是指保存在接收节点本地存储中的数字身份。
106.在一些实施方式中,步骤230可以包括步骤(3.1)~(3.4),如下:
107.(3.1)、根据上一交易哈希值,获取上一区块链交易。
108.(3.2)、根据上一区块链交易,得到上一数字身份哈希值。
109.(3.3)、根据上一数字身份哈希值以及本地存储保存的本地数字身份,确定当前数字身份与本地存储保存的本地数字身份的连续性。
110.(3.4)、当当前数字身份与本地存储保存的本地数字身份的连续时,将当前数字身
份作为本地数字身份写入本地存储,以便从本地存储获取本地数字身份。
111.其中,本地存储是指设置在接收节点本地的存储区域,可以为与接收节点连接的终端或服务器。本地存储可以用于保存每次获取到的区块链交易对应的本地数字身份。
112.其中,连续性是指当前数字身份与本地存储保存的本地数字身份是否连续,例如,将本地存储保存的所有本地数字身份按交易时间排序,确定的最后一个数字身份,若当前数字身份为该最后一个数字身份的下一数字身份则连续,若不为则不连续。
113.在一些实施方式中,步骤(3.3)包括步骤:判断本地存储中是否有与上一数字身份哈希值对应的本地数字身份,即上一数字身份,若有,则本地数字身份连续,若无,则不连续。其中,判断本地存储中是否有与历史数字身份哈希值对应的历史数字身份的方法可以为:根据上一数字身份哈希值从存储服务器获取上一数字身份,再确定本地存储中是否有与上一数字身份相同的数字身份,若有则为连续,若无则不连续,或在步骤220之后还包括将上一信息哈希值写入本地存储,在步骤(2.3.3)确定本地存储中是否有与上一数字身份哈希值相同的数字身份哈希值,若有则为连续,若无则不连续,等等。
114.在将当前数字身份写入本地存储时,根据上一交易哈希值确定是否将当前数字身份写入本地存储,使得当前数字身份与上一交易哈希值有关联性才保存在本地,即利用上一交易哈希值验证当前数字身份真伪,增加保存在本地存储的当前数字身份的可靠性。
115.在一些实施方式中,在步骤(3.3)之后,还可以包括步骤(3.5),如下:
116.(3.5)、当当前数字身份与本地存储保存的本地数字身份的不连续时,根据上一数字身份哈希值,从存储服务器获取上一数字身份,并确定获取到的上一数字身份与本地存储保存的本地数字身份的连续性。
117.因此,本技术实施例获得的上一身份哈希值作为判断要素确定数字身份的连续性,由于上一身份哈希值来源于链上,本地数字身份存储在链下,通过链上链下信息的融合判断过程,增加判断结果的可靠性。
118.在一些实施方式中,在步骤(3.5)之后,还可以包括步骤(3.6)~(3.7),如下:
119.(3.6)、当获取到的上一数字身份与本地存储保存的本地数字身份连续时,将当前数字身份作为本地数字身份写入本地存储。
120.(3.7)、当获取到的上一数字身份与本地存储保存的本地数字身份不连续时,从存储服务器获取上一数字身份的前一数字身份,并确定获取到的上一数字身份的前一数字身份与本地存储保存的本地数字身份的连续性。
121.其中,上一数字身份的前一数字身份是指上一区块链交易的前一个区块链交易对应的数字身份,前一个区块链交易为包含数字身份哈希值的区块链交易。需要说明的是,步骤(3.7)中,当判断结果为不连续时,继续获取上一数字身份的前一数字身份的前一数字身份,以执行步骤(3.6)~(3.7),以此类推,直至获取到的数字身份与本地存储保存的本地数字身份连续。
122.在一些实施方式中,步骤(3.6)之后还包括:将所有获取到的数字身份作为本地数字身份写入本地存储。
123.由前述描述可知,在节点从区块链网络获取交易过程中,可能因监听地址丢失导致获取的数据不完整。为了避免因数据不完整导致的当前数字身份验证失败,当不连续时,进一步获取前一数字身份,确定当前数字身份的连续性。由于存储服务器中的数字身份是
由创建节点发送的,因此不会受到监听地址丢失的影响。由此,通过存储服务器中的数字身份进一步验证本地存储数字身份的连续性,以保证本地存储信息的完整性。
124.在一些实施方式中,通过确定本地存储中是否保存有与上一数字身份的前一数字身份保存相同的本地数字身份,以确定连续性。若有,则连续,若无,则不连续。
125.在一些实施方式中,本地数字身份包括至少一组本地身份数据,在步骤230之后,还可以包括步骤240~250,如下:
126.240、将当前数字身份哈希值作为本地数字身份哈希值写入本地存储。
127.250、响应于目标用户身份数据读取指令,根据本地数字身份哈希值,从本地存储获取目标用户身份数据。
128.其中,本地数字身份哈希值是指保存在接收节点本地的数字身份哈希值。本地身份数据是指一组用户身份数据,数据特征与前述的当前身份数据相同,在此不再赘述。
129.其中,目标用户身份数据是与目标用户对应的身份数据。在步骤250中,先根据本地数字身份哈希值从本地存储获取本地数字身份,再从本地数字身份中识别出目标用户身份数据。
130.通过将至少一组本地身份数据纳入本地数字身份中,可以按批次获取并处理批量的当前身份数据,提高处理效率。同时,在接收节点调用目标用户身份数据时,直接从本地就能获取到数据,大大提升了数据调用的便利性。
131.在一些实施方式中,步骤240可以包括步骤(4.1)~(4.2),如下:
132.(4.1)、从本地存储获取哈希表。
133.(4.2)、将当前数字身份哈希值作为本地数字身份哈希值写入哈希表。
134.其中,哈希表可以在节点加入区块链网络时创建,也可以在接收节点第一次获取包含数字身份哈希值的区块链交易时创建,等等。
135.通过将当前数字身份哈希值写入哈希表,在获取目标用户身份数据时,能够通过哈希表依序查找目标用户对应的数字身份哈希值,提高查找效率。
136.在一些实施方式中,本地身份数据包括身份标识以及更新指令中的至少一种,步骤(4.2)包括:当本地身份数据包括身份标识时,将当前数字身份哈希值作为本地数字身份哈希值写入哈希表;当本地身份数据包括身份标识时,将哈希表中与当前数字身份对应的哈希值更新为当前数字身份哈希值。在一些实施方式中,哈希表由每个用户对应的最新数字身份哈希值组成。在一些实施方式中,响应于目标用户身份数据删除指令,删除目标用户对应的本地数字身份哈希值。
137.在一些实施方式中,本地身份数据包括身份标识,步骤250可以包括步骤(5.1)~(5.3),如下:
138.(5.1)、响应于目标用户身份数据读取指令,从本地数字身份哈希值中确定与目标用户身份标识对应的目标哈希值。
139.(5.2)、根据目标哈希值,从本地数字身份中获取目标本地数字身份。
140.(5.3)、根据目标本地数字身份,确定目标用户身份标识。
141.其中,目标用户身份标识是与目标用户对应的身份标识,目标哈希值是指与目标用户身份标识对应的哈希值。在一些实施方式中,步骤(5.1)包括:响应于目标用户身份数据读取指令,从本地存储的哈希表中确定与目标用户身份标识对应的目标哈希值。
142.在一些实施方式中,本地身份数据包括身份标识以及更新指令中的至少一种,步骤250可以包括步骤(5.4)~(5.7),如下:
143.(5.4)、当本地存储中存储有目标用户身份标识以及目标更新指令时,响应于目标用户身份数据读取指令,从本地数字身份哈希值中确定与目标用户身份标识对应的第一哈希值,以及与目标更新指令对应的第二哈希值,目标更新指令为用于更新目标用户身份标识的更新指令。
144.(5.5)、根据第一哈希值,从本地数字身份中确定第一本地数字身份,并根据第二哈希值,从本地数字身份中确定第二本地数字身份。
145.(5.6)、从第一本地数字身份中获取目标用户身份标识,并从第二本地数字身份中获取目标更新指令。
146.(5.7)、根据目标用户身份标识以及目标更新指令,得到更新后的目标用户身份标识。
147.其中,更新指令是指用于更新身份标识的指令。身份标识以及更新指令可以在同一本地数字身份内,也可以在不同本地数字身份内。每一组本地身份数据只能包括身份标识以及更新指令中的一种。对于目标用户而言,会先建立身份标识对应的交易,若有对身份标识进行更新,则会建立更新指令对应的交易。目标用户身份标识以及目标更新指令是与目标用户对应的身份标识和更新目标用户身份标识的指令。第二哈希值与至少一个目标更新指令对应。当有多个目标更新指令时,获取所有目标更新指令,并获取每个目标更新指令对应的第二哈希值以及第二本地数字身份。
148.其中,第一哈希值以及第二哈希值是分别于目标用户身份标识、目标更新指令对应的哈希值。
149.当目标用户在区块链网络中只有与其身份标识对应的交易时,执行步骤(5.1)~(5.3),当目标用户在区块链网络中有与其身份标识对应的交易以更新指令对应的交易时,执行步骤(5.4)~(5.7)。
150.其中,步骤(5.4)中的当本地存储中存储有目标用户身份标识以及目标更新指令中,这一过程并不是要执行本地存储中存储有目标用户身份标识以及目标更新指令的判断操作,只是对目标用户数字身份的状态描述。可以根据目标用户数字身份的操作记录确定本地存储中存储有目标用户身份标识以及目标更新指令。
151.在一些实施方式中,步骤(5.4)包括:当本地存储中存储有目标用户身份标识以及目标更新指令时,响应于目标用户身份数据读取指令,从本地存储的哈希表中确定与目标用户身份标识对应的第一哈希值,以及根据第一哈希值从本地数字身份哈希值中确定与目标更新指令对应的第二哈希值,目标更新指令为用于更新目标用户身份标识的更新指令。
152.在基于区块链网络创建及更新用户身份数据时,将用户的初始身份数据(身份标识)以及更新指令保存在接收节点本地,而不是在接收到更新指令后修改身份标识,使得用户在获取其身份数据时能直接获取初始身份数据和更新指令,由于初始身份数据和更新指令能够根据链上及链下的数据溯源,以验证其可靠性,但修改后的身份标识无法直接根据链上及链下的数据进行验证,因此本技术实施例方案能大大提升用户身份数据的可靠性。
153.需说明的是,本技术所有实施例中的步骤标号不作为对步骤的顺序限定,可以根据实际的需要进行设置或调整,本技术所有实施例可以不按照标号以及撰写的先后顺序进
行,可以存在并发执行的可能。
154.本技术实施例将当前数字身份写入接收节点的本地存储中,便于用户从本地存储调用数字身份,在获取当前数字身份时,根据当前身份哈希值从创建节点或存储服务器获取当前数字身份以及上一交易哈希值,以从链下获取当前数字身份,通过将当前数字身份哈希值以及当前数字身份分别部署在链上和链下,大大减少区块链上处理的数据量,提升区块链性能。在将当前数字身份写入本地存储时,根据上一交易哈希值确定是否将当前数字身份写入本地存储,使得当前数字身份与上一交易哈希值有关联性才保存在本地,增加保存在本地存储的当前数字身份的可靠性。本技术实施例提供的数字身份管理方案可以应用在各种区块链上数字身份管理场景中,例如可以应用在联盟链上,通过将用户数字身份存储在链下,用户可以通过网络在链下获取,便于在区块链节点获取用户的数字身份,便于节点用户接入使用,解决联盟链只能在小范围应用的问题。
155.根据上述实施例所描述的方法,以下将作进一步详细说明。
156.在本实施例中,将以基于btc网络进行分布式数字身份标识符(did)管理为例,对本技术实施例的方法进行详细说明。
157.如图4所示,提供了基于btc网络的did管理系统的场景示意图,该系统包括btc网络,btc网络上的多个节点,以及ipfs分布式存储网络。其中btc网络上的多个节点包括a节点以及b节点,a节点为创建节点,b节点为接收节点。
158.btc网络,用于存储did批量操作以及上一区块链交易哈希值的哈希值,并把did操作通过区块链交易通知区块链网络上的其他节点。btc网络,即比特币网络,是基于公链的点对点数字货币交易系统,任何计算机都能加入这个网络成为节点,每个节点都包含了所有区块数据。整个比特币点对点网络的节点都会自动检测交易和区块的有效性,并忽略任何不符合规则的交易和区块。
159.ipfs分布式存储网络,用于通过哈希寻址,用来存储did操作与did文档等具体的did数据。ipfs分布式存储网络,简称ipfs网络,与分布在不同位置的计算机系统互连,网络中没有中心节点,通信子网为封闭结构,通信控制功能分布于各个节点。
160.a节点或b节点包括did应用程序编程接口(did api)、本地存储以及did缓存、操作请求队列、did批量处理器、did监听器、btc网络的did读写接口、btc网络适配器、ipfs网络的did读写接口、ipfs网络适配器。其中:did应用程序编程接口,用于获取用户的did操作;本地存储以及did缓存,用于存储从btc网络与ipfs网络上获取的数据;操作请求队列,用于缓存did操作,did操作可以为创建、更新或删除操作;did批量处理器,用于从操作请求队列中批量读取did操作数据,并按批次处理打包以及处理之后,把数据写入到btc网络、ipfs网络以及本地存储;did监听器,用于通过轮询的方法监听btc网络上交易,实时读取交易数据并验证,把最新的数据写入到did缓存与本地存储;btc网络的did读写接口,用于基于btc网络适配器实现did的读写操作与监听操作;btc网络适配器,用于访问btc网络的通用适配器;ipfs网络的did读写接口,用于基于ipfs的网络适配器实现did的读写操作与监听操作;ipfs网络适配器,用于访问ipfs网络的通用适配器。
161.如图5和图6所示,一种数字身份管理方法具体流程如下:
162.310、用户在a节点进行did操作,a节点验证该did。
163.其中,a节点为前述实施例中的创建节点,在一些实施方式中,在区块链上所有节
点都为参与did数据更新的节点或者由需求获取did数据的节点时,a节点为区块链上任意一个节点,当区块链上有参与did数据更新的节点或者由需求获取did数据的节点时,a节点为区块链上有参与did数据更新的节点或者由需求获取did数据的节点中的任意一个。did类型是did字符串二进制格式的前1个字节。它包含三个部分:以下4位表示keytype,将密钥转换为公钥的算法0:secp256k1,1:ed25519,后4位代表哈希函数来计算公钥的哈希,0:sha3,1:sha3_512。所以did类型的字节0x10可以解释如下:0001:ed25519,0000:sha3。
164.其中,did操作可以包括创建did、更新did操作以及注销did操作。当为创建did操作时,先判断要创建的did是否已经注册过,若已经注册,则创建失败,若没有注册过,则在创建后,根据did文档中的控制者的公钥与验证算法did操作的签名,若签名验证通过,则创建成功,执行后续步骤。当为更新或注销did操作时,从本地缓存中读取该did的操作数据,如果本地不存在该did或者该did已经注销,则认为更新失败,根据本地did的文档中控制者的公钥与验证算法验证did操作中的签名。
165.其中,创建did的过程包括:第1步:选择密钥类型和哈希从上面,例如使用ed25519和sha3;第2步:随机选择一个密钥,例如d67c071b6f51d2b61180b9b1aa9be0dd0704619f0e30453ab4a592b036ede644e4852b7091317e3622068e62a5127d1fb0d4ae2fc50213295e10652d2f0abfc7;第3步:使用secp256k1生成此密钥的公钥,所以可以得到公钥e4852b7091317e3622068e62a5127d1fb0d4ae2fc50213295e10652d2f0abfc7;第4步:获取公钥的哈希,ec8e681514753fe5955d3e8b57daec9d123e3db146bddfc3787163f77f057c27;第5步:取公钥哈希的前20个字节,ec8e681514753fe5955d3e8b57daec9d123e3db1;第6步:0x10在第5步的哈希前面加上did类型的字节,并对其他base58编码,10ec8e681514753fe5955d3e8b57daec9d123e3db1;第7步:组装零件并获得完整的did,did:bfid:pccdhsm8yk9zyrhbfozjufnw5hwvaw8stqpvwzlm6thnaec4am1hcrf4u;第8步:生成did文档:did文档设置验证算法与验证公钥。
166.320、验证通过后,a节点将该did操作加载在操作请求队列中。
167.其中,操作请求队列即为前述实施例中的缓存队列。
168.330、当操作请求队列满足预设条件时,a节点获取上一交易哈希值。
169.340、a节点对获取到的上一交易哈希值以及操作请求队列中的所有did操作进行哈希计算,得到当前数字身份哈希值。
170.其中,操作请求队列中的所有did操作为一个批次的did操作,当前数字身份哈希值为该批did操作对应的哈希值。在一些实施方式中,在步骤330包括步骤:从操作请求队列中批量读取did操作数据,并按批次处理打包。
171.350、a节点创建当前区块链交易,并在当前区块链交易中嵌入当前数字身份哈希值,并将上一交易哈希值以及操作请求队列中的所有did操作发送至ipfs网络。
172.其中,在ipfs网络有非常多个节点,上一交易哈希值以及该批次的did操作数据是发送到ipfs网络的某个节点上,不管did操作数据在哪个节点上,都可以通过哈希寻址,快速找到该内容。
173.360、b节点轮询监听区块链上的交易,当区块链上有新区块产生时,判断目标区块中是否存在预设数量的包含数字身份哈希值的区块链交易,所述目标区块包括所述新区块以及所述新区块的前n个区块。若有,b节点执行步骤371~376,若无,b节点执行步骤381~
383。
174.其中,b节点为前述实施例中的接收节点。在一些实施方式中,当区块链网络上有未参与did数据更新的节点或者由需求获取did数据的节点时,b节点并不是区块链上除a节点以外的所有节点,而是在除a外的节点中,参与did数据更新的节点或者由需求获取did数据的节点。
175.监听器是区块链节点的功能,只需要将监听的地设置号,当该地址有新的交易发生,就会发出通知。b节点的监听器在获取到第一次区块链交易前,监听did操作创世地址,在有新的did操作出现后,则监听最新出现的地址。在一些实施方式中,通过步骤360~383的方法更新监听地址。
176.在一些实施方式中,当b节点采用步骤360中的方法进行监听,其中n的个数以及预设数量可以根据did的操作频率调整。在一些实施方式中,n为6。
177.371、从新区块获取当前区块链交易,并获取当前数字身份哈希值。
178.b节点获取到当前数字身份哈希值后,会将元数据固定在本地,然后执行步骤372~376,以验证获取到的数据。
179.372、根据当前数字身份哈希值,从创建节点或存储服务器获取当前数字身份以及上一交易哈希值。
180.373、根据上一交易哈希值,获取上一区块链交易,并从上一区块链交易,解析得到上一数字身份哈希值。
181.374、确定本地存储中是否有与上一数字身份哈希值对应的本地数字身份,若有,则执行步骤375,若无,则执行步骤376。
182.其中,当步骤374为步骤373的后续步骤时,该得到的数字身份哈希值为上一数字身份哈希值。当步骤374位步骤376的后续步骤时,该得到的数字身份哈希值为步骤376中从a节点或存储服务器获取的哈希值。
183.375、将当前数字身份作为本地数字身份写入本地存储。
184.其中,当步骤310中did操作为创建did操作时,将当前数字身份哈希值插入b节点本地存储中保存的哈希表中。当步骤310中did操作为更新did操作或注销did操作时,根据更新指令或注销指令将哈希表中该did对应的哈希值替换为当前数字身份哈希值。
185.376、根据上一数字身份哈希值,从a节点或存储服务器获取上一数字身份以及上一交易的前一交易的哈希值,并执行步骤374中的判断过程,确定本地存储中,直至本地存储中有与从存储服务器获取的数字身份哈希值对应的本地数字身份,执行步骤375。
186.其中,b节点先从a节点的本地存储中获取,如果a节点网络不通或者数据不存在,则向ipfs网络获取,如果都不存在,则获取失败。
187.381、确定本地存储保存的本地数字身份的完整性,若完整,则执行步骤371~376,若不完整,则执行步骤382~383。
188.382、根据历史数字身份哈希值,从存储服务器获取历史数字身份,并将历史数字身份写入本地存储,直至本地存储保存的本地数字身份完整。
189.在一些实施方式,步骤375、步骤376以及步骤382中将数字身份写入本地存储包括将该批次的did操作,上一交易哈希值,以及did地址与批次操作哈希的映射表。在将数字身份写入本地存储,还可以将数字身份插入本地缓存。
190.383、更新监听地址,并执行步骤371~376。
191.390、用户在c节点对目标用户的did进行读取操作。
192.在一些实施方式中,步骤390还可以包括步骤391~394,如下:
193.391、用户在c节点输入目标用户身份数据读取指令。
194.392、c节点从本地存储保存的哈希表中获取目标用户对应的最新的本地数字身份哈希值。
195.393、c节点根据目标用户对应的最新的本地数字身份哈希值获取目标用户对应的修改记录。
196.394、c节点将获取到的所有数据按照更新顺序组装,得到目标用户身份数据。
197.其中,c节点为区块链网络中的任意一个节点,在一些实施方式中,在区块链上所有节点都为参与did数据更新的节点或者由需求获取did数据的节点时,c节点为区块链上任意一个节点,当区块链上有参与did数据更新的节点或者由需求获取did数据的节点时,c节点为区块链上有参与did数据更新的节点或者由需求获取did数据的节点中的任意一个。
198.其他用户或者验证机构在c节点发起读取目标用户的did操作,c节点可以先去本地缓存读取did操作,缓存中没有则去本地存储读取,如果本地存储也没有则返回读取失败,读取成功返回数据给其他用户或者验证机构,当其他用户或者验证机构通过终端与c节点连接时,数据返回给该终端。
199.具体的,在步骤391~394中,c节点先读取本地保存哈希表,如果表中不存在,则返回失败,表中存在,则根据最新哈希值在本地存储中查找对应的修改记录,并判断上一批did操作是否为0,如果不为则依次读取,直到上一个did操作批次为0,并把读到的数据按照更新顺序组装,如果多次修改中存在相同的修改,则以后更新的为准。例如在区块链网络中依次发生了交易a~d,交易a~d分别对应数字身份哈希值a~d,其中数字身份哈希值a、c、d对应的数字身份包括用户h对应的身份数据,数字身份哈希值d被记录在哈希表中,因此,当在c节点获取用户h的身份数据时,先从c节点的本地存储中的哈希表获取数字身份哈希值d,再依据数字身份哈希值d从c节点的本地存储中获取数字身份哈希值a和c,并将三个哈希值按数字身份哈希值a、c、d的顺序组装,得到用户h的身份数据。
200.由上可知,本技术实施例通过在a节点(创建节点)获取did数据以及上一交易哈希值,将在a节点本地计算得到的哈希值通过区块链交易部署在链上,同时将该哈希值对应的did数据通过链下网络发送至ipfs分布式存储网络,使did数据部署在链下。在b节点(接收节点)获取did相关数据时,一方面,通过链上的哈希值以及利用上一交易哈希值能验证获取到的did数据的可靠性,另一方面,将did数据部署在链下,大大减少区块链上处理的数据量,提升区块链性能。此外,在现有技术中,当将did应用在区块链中时,由于需要配置专门的did装置,因此通常都只能在小范围的联盟内使用,然而通过本技术实施例的方法,将did数据部署在链下,用户在节点本地就能直接获取到可靠的did数据,因此能够将did广泛应用于公链(如btc网络)上,大大提高了其应用范围。
201.为了更好地实施以上方法,本技术实施例还提供一种数字身份管理装置,该数字身份管理装置具体可以集成在电子设备中,该电子设备可以为终端、服务器等设备。其中,终端可以为手机、平板电脑、智能蓝牙设备、笔记本电脑、个人电脑等设备;服务器可以是单一服务器,也可以是由多个服务器组成的服务器集群。
202.比如,在本实施例中,将以数字身份管理装置具体集成在区块链上的创建节点为例,创建节点为区块链上的任意节点,对本技术实施例的方法进行详细说明。
203.例如,如图7所示,该数字身份管理装置可以包括获取单元410、处理单元420、交易单元430、第一发送单元440以及第二发送单元450,如下:
204.(一)获取单元410:
205.用于获取当前数字身份以及上一交易哈希值,上一交易哈希值为上一区块链交易的哈希值。
206.在一些实施方式中,获取单元410还可以用于步骤(6.1)~(6.4),如下:(6.1)、获取缓存队列。
207.(6.2)、获取当前身份数据,并将获取到的当前身份数据加载到缓存队列中。
208.(6.3)、当缓存队列满足预设条件时,将缓存队列中的所有当前身份数据作为当前数字身份。
209.(6.4)、获取上一交易哈希值。
210.(二)处理单元420:
211.用于根据当前数字身份以及上一交易哈希值,得到当前数字身份哈希值。
212.(三)交易单元430:
213.用于根据当前数字身份哈希值,创建当前区块链交易。
214.(四)第一发送单元440:
215.用于将当前区块链交易发送至接收节点,接收节点为区块链上除创建节点以外的节点。
216.(五)第二发送单元450:
217.用于将当前数字身份以及上一交易哈希值发送至存储服务器,以便接收节点根据当前区块链交易从创建节点或存储服务器获取当前数字身份以及上一交易哈希值。
218.具体实施时,以上各个单元可以作为独立的实体来实现,也可以进行任意组合,作为同一或若干个实体来实现,以上各个单元的具体实施可参见前面的方法实施例,在此不再赘述。
219.由上可知,本实施例的数字身份管理装置通过根据当前数字身份哈希值创建当前区块链交易,将当前数字身份以及上一交易哈希值发送至存储服务器,以将用户数字身份对应的哈希值部署在区块链上,将用户数字身份部署在区块链下的存储服务器内,大大减少区块链上处理的数据量,提升区块链性能。此外,在对当前数字身份进行处理和存储时加入上一交易哈希值,通过区块链交易将数字身份对应的哈希值发送至区块链上的节点,增加存储在区块链节点的当前数字身份哈希值可靠性,并将当前数字身份以及上一交易哈希值发送至存储服务器,使在链下对当前数字身份进行处理时具有上一交易属性,增加在链下存储数据的可靠性。
220.为了更好地实施以上方法,本技术实施例还提供一种数字身份管理装置,该数字身份管理装置具体可以集成在电子设备中,该电子设备可以为终端、服务器等设备。其中,终端可以为手机、平板电脑、智能蓝牙设备、笔记本电脑、个人电脑等设备;服务器可以是单一服务器,也可以是由多个服务器组成的服务器集群。
221.比如,在本实施例中,将以数字身份管理装置具体集成在区块链上的接收节点为
例,对本技术实施例的方法进行详细说明。
222.例如,如图8所示,该数字身份管理装置可以包括接收单元510、调用单元520以及存储单元530,如下:
223.(一)接收单元510:
224.用于获取当前区块链交易,当前区块链交易由创建节点创建,创建节点为区块链上的任意节点,接收节点为区块链上除创建节点以外的节点,当前区块链交易包括当前数字身份哈希值,当前数字身份哈希值根据当前数字身份以及上一交易哈希值得到,上一交易哈希值为上一区块链交易的哈希值。
225.在一些实施方式中,接收单元510还可以用于步骤(7.1)~(7.3),如下:
226.(7.1)、当区块链上有新区块产生时,判断目标区块中是否存在预设数量的包含数字身份哈希值的区块链交易,目标区块包括新区块的前n个区块,其中n为正整数。
227.(7.2)、当目标区块中存在预设数量的包含数字身份哈希值的区块链交易时,从新区块获取当前区块链交易。
228.(7.3)、当目标区块中不存在预设数量的包含数字身份哈希值的区块链交易时,确定本地存储保存的本地数字身份的完整性。
229.在一些实施方式中,步骤(7.3)可以包括步骤(7.3.1)~(7.3.3),如下:
230.(7.3.1)、获取历史区块链交易。
231.(7.3.2)、根据历史区块链交易,得到历史数字身份哈希值。
232.(7.3.3)、根据历史数字身份哈希值以及本地数字身份,确定本地存储保存的本地数字身份的完整性。
233.在一些实施方式中,在步骤(7.3)之后,还可以包括步骤(7.4)~(7.5),如下:
234.(7.4)、当本地存储保存的本地数字身份完整时,从新区块获取当前区块链交易。
235.(7.5)、当本地存储保存的本地数字身份不完整时,根据历史数字身份哈希值,从存储服务器获取历史数字身份,并将历史数字身份写入本地存储。
236.(二)调用单元520:
237.用于根据当前数字身份哈希值,从创建节点或存储服务器获取当前数字身份以及上一交易哈希值。
238.(三)存储单元530:
239.用于根据上一交易哈希值,将当前数字身份作为本地数字身份写入本地存储,以便从本地存储获取本地数字身份。
240.在一些实施方式中,存储单元530还可以用于包括步骤(8.1)~(8.4),如下:
241.(8.1)、根据上一交易哈希值,获取上一区块链交易。
242.(8.2)、根据上一区块链交易,得到上一数字身份哈希值。
243.(8.3)、根据上一数字身份哈希值以及本地存储保存的本地数字身份,确定当前数字身份与本地存储保存的本地数字身份的连续性。
244.(8.4)、当当前数字身份与本地存储保存的本地数字身份的连续时,将当前数字身份作为本地数字身份写入本地存储,以便从本地存储获取本地数字身份。
245.在一些实施方式中,在步骤(8.3)之后,还可以包括步骤(8.5),如下:
246.(8.5)、当当前数字身份与本地存储保存的本地数字身份的不连续时,根据上一数
字身份哈希值,从存储服务器获取上一数字身份,并确定获取到的上一数字身份与本地存储保存的本地数字身份的连续性。
247.在一些实施方式中,在步骤(8.5)之后,还可以包括步骤(8.6)~(8.7),如下:
248.(8.6)、当获取到的上一数字身份与本地存储保存的本地数字身份连续时,将当前数字身份作为本地数字身份写入本地存储。
249.(8.7)、当获取到的上一数字身份与本地存储保存的本地数字身份不连续时,从存储服务器获取上一数字身份的前一数字身份,并确定获取到的上一数字身份的前一数字身份与本地存储保存的本地数字身份的连续性。
250.在一些实施方式中,本地数字身份包括至少一组本地身份数据,存储单元530还可以用于步骤(9.1)~(9.2),如下:
251.(9.1)、将当前数字身份哈希值作为本地数字身份哈希值写入本地存储。
252.(9.2)、响应于目标用户身份数据读取指令,根据本地数字身份哈希值,从本地存储获取目标用户身份数据。
253.在一些实施方式中,步骤(9.1)可以包括步骤(9.1.1)~(9.1.2),如下:
254.(9.1.1)、从本地存储获取哈希表。
255.(9.1.2)、将当前数字身份哈希值作为本地数字身份哈希值写入哈希表。
256.在一些实施方式中,本地身份数据包括身份标识,步骤(9.2)可以包括步骤(9.2.1)~(9.2.3),如下:
257.(9.2.1)、响应于目标用户身份数据读取指令,从本地数字身份哈希值中确定与目标用户身份标识对应的目标哈希值。
258.(9.2.2)、根据目标哈希值,从本地数字身份中获取目标本地数字身份。
259.(9.2.3)、根据目标本地数字身份,确定目标用户身份标识。
260.在一些实施方式中,本地身份数据包括身份标识以及更新指令中的至少一种,步骤(9.2)可以包括步骤(9.2.4)~(9.2.7),如下:
261.(9.2.4)、当本地存储中存储有目标用户身份标识以及目标更新指令时,响应于目标用户身份数据读取指令,从本地数字身份哈希值中确定与目标用户身份标识对应的第一哈希值,以及与目标更新指令对应的第二哈希值,目标更新指令为用于更新目标用户身份标识的更新指令。
262.(9.2.5)、根据第一哈希值,从本地数字身份中确定第一本地数字身份,并根据第二哈希值,从本地数字身份中确定第二本地数字身份。
263.(9.2.6)、从第一本地数字身份中获取目标用户身份标识,并从第二本地数字身份中获取目标更新指令。
264.(9.2.7)、根据目标用户身份标识以及目标更新指令,得到更新后的目标用户身份标识。
265.具体实施时,以上各个单元可以作为独立的实体来实现,也可以进行任意组合,作为同一或若干个实体来实现,以上各个单元的具体实施可参见前面的方法实施例,在此不再赘述。
266.由上可知,本实施例的数字身份管理装置将当前数字身份写入接收节点的本地存储中,便于用户从本地存储调用数字身份,在获取当前数字身份时,根据当前身份哈希值从
创建节点或存储服务器获取当前数字身份以及上一交易哈希值,以从链下获取当前数字身份,通过将当前数字身份哈希值以及当前数字身份分别部署在链上和链下,大大减少区块链上处理的数据量,提升区块链性能。在将当前数字身份写入本地存储时,根据上一交易哈希值确定是否将当前数字身份写入本地存储,使得当前数字身份与上一交易哈希值有关联性才保存在本地,增加保存在本地存储的当前数字身份的可靠性。
267.为了更好地实施以上方法,本技术实施例还提供一种数字身份管理系统,该数字身份管理系统具体可以应用在区块链网络中,以下对本技术实施例的方法进行详细说明。
268.例如,如图1所示,该数字身份管理系统可以包括创建节点以及接收节点,创建节点为区块链上的任意节点,接收节点为区块链上除创建节点以外的节点,其中:
269.创建节点用于:
270.获取当前数字身份以及上一交易哈希值,上一交易哈希值为上一区块链交易的哈希值。
271.根据当前数字身份以及上一交易哈希值,得到当前数字身份哈希值。
272.根据当前数字身份哈希值,创建当前区块链交易。
273.将当前区块链交易发送至接收节点。
274.将当前数字身份以及上一交易哈希值发送至存储服务器,以便接收节点根据当前区块链交易从创建节点或存储服务器获取当前数字身份以及上一交易哈希值。
275.接收节点用于:
276.获取当前区块链交易。
277.根据当前数字身份哈希值,从创建节点或存储服务器获取当前数字身份以及上一交易哈希值。
278.根据上一交易哈希值,将当前数字身份作为本地数字身份写入本地存储,以便从本地存储获取本地数字身份。
279.具体实施时,以上各个步骤可以作为独立的实体来实现,也可以进行任意组合,作为同一或若干个实体来实现,以上各个步骤的具体实施可参见前面的方法实施例,在此不再赘述。
280.由上可知,本实施例的数字身份管理系统通过创建节点获取当前数字身份以及上一交易哈希值,将在a节点本地计算得到的哈希值通过区块链交易部署在链上,同时将该哈希值对应的当前数字身份通过链下网络发送至存储服务器,使当前数字身份部署在链下。在接收节点获取当前数字身份相关数据时,一方面,通过链上的哈希值以及利用上一交易哈希值能验证获取到的当前数字身份的可靠性,另一方面,将当前数字身份部署在链下,大大减少区块链上处理的数据量,提升区块链性能,同时将当前数字身份数据部署在链下,用户在节点本地就能直接获取到可靠的当前数字身份数据,可以应用在不同的区块链场景中。
281.相应的,本技术实施例还提供一种计算机设备,该计算机设备可以为终端或服务器,该终端可以为智能手机、平板电脑、笔记本电脑、触控屏幕、游戏机、个人计算机、个人数字助理(personal digital assistant,pda)等终端设备。
282.如图9所示,图9为本技术实施例提供的计算机设备的结构示意图,该计算机设备700包括有一个或者一个以上处理核心的处理器710、有一个或一个以上计算机可读存储介
质的存储器720及存储在存储器720上并可在处理器上运行的计算机程序。其中,处理器710与存储器720电性连接。本领域技术人员可以理解,图中示出的计算机设备结构并不构成对计算机设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
283.处理器710是计算机设备700的控制中心,利用各种接口和线路连接整个计算机设备700的各个部分,通过运行或加载存储在存储器720内的软件程序和/或模块,以及调用存储在存储器720内的数据,执行计算机设备700的各种功能和处理数据,从而对计算机设备700进行整体监控。
284.在本技术实施例中,计算机设备700中的处理器710会按照如下的步骤,将一个或一个以上的应用程序的进程对应的指令加载到存储器720中,并由处理器710来运行存储在存储器720中的应用程序,从而实现前述创建节点以及接收节点的方法,具体实施可参见前面的实施例,在此不再赘述。
285.可选的,如图9所示,计算机设备700还包括:触控显示屏730、射频电路740、音频电路750、输入单元760以及电源770。其中,处理器710分别与触控显示屏730、射频电路740、音频电路750、输入单元760以及电源770电性连接。本领域技术人员可以理解,图9中示出的计算机设备结构并不构成对计算机设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
286.触控显示屏730可用于显示图形用户界面以及接收用户作用于图形用户界面产生的操作指令。触控显示屏730可以包括显示面板和触控面板。其中,显示面板可用于显示由用户输入的信息或提供给用户的信息以及计算机设备的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。可选的,可以采用液晶显示器(lcd,liquid crystal display)、有机发光二极管(oled,organic light

emitting diode)等形式来配置显示面板。触控面板可用于收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板上或在触控面板附近的操作),并生成相应的操作指令,且操作指令执行对应程序。可选的,触控面板可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器710,并能接收处理器710发来的命令并加以执行。触控面板可覆盖显示面板,当触控面板检测到在其上或附近的触摸操作后,传送给处理器710以确定触摸事件的类型,随后处理器710根据触摸事件的类型在显示面板上提供相应的视觉输出。在本技术实施例中,可以将触控面板与显示面板集成到触控显示屏730而实现输入和输出功能。但是在某些实施例中,触控面板与显示面板可以作为两个独立的部件来实现输入和输出功能。即触控显示屏730也可以作为输入单元760的一部分实现输入功能。
287.射频电路740可用于收发射频信号,以通过无线通信与网络设备或其他计算机设备建立无线通讯,与网络设备或其他计算机设备之间收发信号。
288.音频电路750可以用于通过扬声器、传声器提供用户与计算机设备之间的音频接口。音频电路750可将接收到的音频数据转换后的电信号,传输到扬声器,由扬声器转换为声音信号输出;另一方面,传声器将收集的声音信号转换为电信号,由音频电路750接收后转换为音频数据,再将音频数据输出处理器710处理后,经射频电路740以发送给比如另一
计算机设备,或者将音频数据输出至存储器720以便进一步处理。音频电路750还可能包括耳塞插孔,以提供外设耳机与计算机设备的通信。
289.输入单元760可用于接收输入的数字、字符信息或用户特征信息(例如指纹、虹膜、面部信息等),以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。
290.电源770用于给计算机设备700的各个部件供电。可选的,电源770可以通过电源管理系统与处理器710逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源770还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
291.尽管图9中未示出,计算机设备700还可以包括摄像头、传感器、无线保真模块、蓝牙模块等,在此不再赘述。
292.在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
293.由上可知,本实施例提供的计算机设备可以通过创建节点获取当前数字身份以及上一交易哈希值,将在a节点本地计算得到的哈希值通过区块链交易部署在链上,同时将该哈希值对应的当前数字身份通过链下网络发送至存储服务器,使当前数字身份部署在链下。在接收节点获取当前数字身份相关数据时,一方面,通过链上的哈希值以及利用上一交易哈希值能验证获取到的当前数字身份的可靠性,另一方面,将当前数字身份部署在链下,大大减少区块链上处理的数据量,提升区块链性能,同时将当前数字身份数据部署在链下,用户在节点本地就能直接获取到可靠的当前数字身份数据,可以应用在不同的区块链场景中。
294.本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。
295.为此,本技术实施例提供一种计算机可读存储介质,其中存储有多条计算机程序,该计算机程序能够被处理器进行加载,以执行本技术实施例所提供的任一种数字身份管理方法中的步骤。例如,该计算机程序可以执行前述创建节点以及接收节点的方法,具体实施可参见前面的实施例,在此不再赘述。
296.其中,该存储介质可以包括:只读存储器(rom,read only memory)、随机存取记忆体(ram,random access memory)、磁盘或光盘等。
297.由于该存储介质中所存储的计算机程序,可以执行本技术实施例所提供的任一种数字身份管理方法中的步骤,因此,可以实现本技术实施例所提供的任一种数字身份管理方法所能实现的有益效果,详见前面的实施例,在此不再赘述。
298.以上对本技术实施例所提供的一种数字身份管理方法、装置、存储介质及计算机设备进行了详细介绍,本文中应用了具体个例对本技术的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本技术的方法及其核心思想;同时,对于本领域的技术人员,依据本技术的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本技术的限制。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1