1. 架构

一共分为三层:

  • Layer 1:区块链层
  • Layer 2:去中心化二层网络
  • Layer 3:可信交换层

(1)Layer 1:区块链层

L1层是区块链层,是整个方案的基础设施。分布式存储中保存的是DID文档(DID Document),在文档内最关键的是DID与公钥的对应关系。在区块链上则锚定着这些身份数据的对应关系。

目前我们方案中区块链支持EthereumQuorum,分布式存储支持IPFS

(2)Layer 2:去中心化二层网络

由于目前区块链较低的TPS无法满足上层业务的需求,百度自研了L2层节点–GermGerm节点会把上层的DID相关的操作 打包,并创建一个 L1 链上交易并在交易中嵌入该操作批次的哈希。从而提高系统的整理处理性能。详见:L2 Germ

同时,我们对上提供了统一的DID解析服务,即DID Resolver,此服务同时也对接DIF社区的通用解析器。

(3)Layer 3:可信交换层

L3是可信交换层,是DID系统中各个生态参与方互相建立安全身份认证与数据交换层。

其中,

  • DID Agent是用户使用的DID客户端,百度发布了DID小程序,作为DID客户端,能够方便用户便捷的管理自己的DID,详见:DID小程序
  • Identity Hub是用户安全存储身份数据的组件,详见:Identity Hub

2. 主要工作流程

(0) 用户使用DID小程序创建自己的DID
(1) 用户在小程序内获取发证方列表
(2) 用户向指定的发证方提交可验证声明申请,并提供相关材料
(3) 发证方审核完材料后,给用户颁发可验证声明
(4) 用户使用DID登入第三方应用,并获知应用需要用户提供某可验证声明
(5) 用户授权第三方应用去Identity-Hub中去获取可验证声明
(6) 第三方应用获取已授权的可验证声明
(7) 用户登入第三方应用成功

3. DID Wallet

DID Wallet(DID钱包),作为用户端,方便用户(Holder)进行DIDClaim的管理。

具备以下功能:

  • DID创建
  • DID及其Document的查看
  • DID管理,包括:私钥查看、私钥重置
  • 使用DID登入Verifier
  • Claim申请
  • Claim查看
  • Claim使用
  • 配置DID Reoslver地址
  • 配置Identity Hub地址

DID Wallet存在多种实现形式,包括:

  • 小程序,见:DID小程序
  • Windows、Linux、Mac 的 UI Wallet (TBD)
  • Chrome 插件(TBD)
  • 命令行工具(TBD)
  • Android App(TBD)
  • iOS App(TBD)

4. Identity Hub

Identity Hub用于保存和管理用户的数据,详见:Identity Hub

5. 发证方签发服务

Issuer Service是发证方对外提供的服务,主要作用是签发声明。

需要提供如下功能:

  • 审核用户的声明请求,并给符合条件的用户签发声明。
  • 提供一个吊销列表,列表中是被吊销的声明。

详见:成为发证方

6. 发证方注册中心

用户申请Claim的时候,需要知道发证方相关信息,包括发证方Claim服务的Endpoint之类的,这类信息会由发证方公布在自己的主页上。

同时,提供Claim Issuer Registry服务,即发证方注册中,用来对外发布一些已知的发证方列表及其相关信息。

此模块目前是中心化部署,所提供的信息都是公布在各个发证方的主页上的。

功能:

  • 查询Issuer List
  • 录入Issuer
  • 删除Issuer

详见:发证方注册中心

7. 应用方

Verifier是能够使用DID的第三方应用,例如网站、移动APP之类。

详见:接入DID系统

8. DID 解析器

DID Resolver提供DID的解析服务,能够根据DID查询对应的DID Document。同时提供DIDCRUD功能。

详见:

9. DIF Universal Resolver

DIF Universal ResolverDecentralized Identity Foundation提供的DID通用解析服务,可以解析非常多的DID。

使用地址:https://uniresolver.io/

10. L2 Germ

L2 Germ基于区块链的Layer 2系统,由于目前主流区块链网络的TPS的限制,要支持一个全网规模的DID系统还达不到吞吐量的要求,而为了解决该问题,引入了二层的系统架构。区块链网络作为一层网络,在区块链上层再实现一个二层的网络,由二层网络先对需要上链的数据打包,计算打包后的hash,再把hash上链,使得每一笔交易都能够包含多个上层的写操作,从而提高吞吐。

详见:Germ节点

11. L1 DLT

L1 DLT即底层的区块链网络,目前支持QuorumEthereum