1. 架构
一共分为三层:
- Layer 1:区块链层
- Layer 2:去中心化二层网络
- Layer 3:可信交换层
(1)Layer 1:区块链层
L1层是区块链层,是整个方案的基础设施。分布式存储中保存的是DID文档(DID Document),在文档内最关键的是DID与公钥的对应关系。在区块链上则锚定着这些身份数据的对应关系。
目前我们方案中区块链支持Ethereum
和Quorum
,分布式存储支持IPFS
。
(2)Layer 2:去中心化二层网络
由于目前区块链较低的TPS无法满足上层业务的需求,百度自研了L2层节点–Germ
。Germ
节点会把上层的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
)进行DID
和Claim
的管理。
具备以下功能:
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
。同时提供DID
的CRUD
功能。
详见:
9. DIF Universal Resolver
DIF Universal Resolver
是Decentralized Identity Foundation
提供的DID通用解析服务,可以解析非常多的DID。
10. L2 Germ
L2 Germ
基于区块链的Layer 2
系统,由于目前主流区块链网络的TPS的限制,要支持一个全网规模的DID系统还达不到吞吐量的要求,而为了解决该问题,引入了二层的系统架构。区块链网络作为一层网络,在区块链上层再实现一个二层的网络,由二层网络先对需要上链的数据打包,计算打包后的hash,再把hash上链,使得每一笔交易都能够包含多个上层的写操作,从而提高吞吐。
详见:Germ节点
11. L1 DLT
L1 DLT
即底层的区块链网络,目前支持Quorum
和Ethereum
。