# 架构设计
## 整体架构
ChainWeaver DID基于W3C的DID Core标准和VC数据模型标准扩展而成,本DID系统整体架构设计如下:
DID整体架构图
主要包括以下模块:
**网关服务**:该服务主要实现请求分发和权限管理。
**APP后端**:主要实现App相关业务逻辑,APP账户管理、DID注册和更新、VC(凭证)管理、扫码授权与App交互(前端)。
**DID核心**:DID文档、核心工具类、VC凭证、VC模板、验证模块。
**DID管理台**:did-mgr-kms提供管理DID的密钥的能力、did-mgr-holder持有者提供管理VC的能力、did-mgr-issuer签发者提供了管理VC的能力、did-mgr-common提供了统一入口和用户中心。
**App**:App提供了在手机端便捷的用户操作体验。
**插件**:插件提供了在PC端便捷的用户操作体验。
**SDK**:SDK提供多语言支持(java, go)。
## 微服务架构
微服务架构图
微服务整体架构包含DID运营方、签发机构、验证方:
- **DID运营方**包含如下模块和服务:
- DID网关(did-gateway)
- App后端(did-app-backend)
- DID核心(did-admin,did,did-subscribe)
- DID管理台(did-mgr-common,did-mgr-holder,did-mgr-issuer,did-mgr-kms)
- **签发机构**包含如下模块和服务:
- DID管理台(did-mgr-common,did-mgr-holder,did-mgr-issuer,did-mgr-kms)
- SDK
- **验证方**包含如下模块和服务:
- App
- DID插件
- SDK
- **App后台**包含如下模块和服务:
- did-app-backend
- 第三方服务对接,短信、邮件、个人实名、企业实名、其他第三方凭证机构
- **同步服务**包含如下模块和服务:
- 同步服务(did-sync)
- **公共服务-存储**包含如下模块和服务:
- 关系型数据库(kingbase人大金仓,MySQL)
- 缓存(Redis)
## 服务架构
在了解到DID整体架构和按微服务机构后,下面介绍每个具体的服务的功能。
### DID核心服务
DID核心服务架构图
DID核心服务包含did服务和did-admin服务,did服务主要实现DID核心逻辑提供gRPC接口;did-admin服务主要实现管理员DID相关业务逻辑包含DID核心逻辑。
DID核心服务主要包含如下模块:
- DID文档:注册Document、更新Document、设置为黑名单、设置为签发者等
- 核心工具类:国密签名验签、签发者模块、验证者模块(验证VC、验证VP)、DID PB结构等
- VC凭证:签发VC、登记VC、查询VC列表、吊销VC等
- VC模板:新增VC模板、升级VC模板、启用/禁用VC模板、查询VC模板列表
- 验证模块:验证VP
### 网关服务
did-gateway服务主要实现请求分发和权限管理。
主要功能:
- 请求分发
- 权限管理
### APP后端服务
did-app-backend主要实现App相关业务逻辑,与App交互。
- APP账户管理
- DID注册和更新
- VC(凭证)管理
- 扫码授权
### DID 管理台服务
DID 管理台架构图
1、did-mgr-kms服务(DID Key Management Service):
这个服务主要负责管理DID的密钥。在DID系统中,每个实体(如个人、组织)都有一个唯一的DID,这个DID通常与一组或者多组公钥/私钥对相关联。did-kms服务负责、存储、更新和撤销这些密钥,并支持对应did
签名,验签,加密,解密等功能。确保DID的安全性和可用性。
2、did-mgr-holder服务(DID Manager Holder Service):
这个服务主要为持有者提供管理其持有的VC的功能。持有者可以使用这个服务来存储、检索、展示他们收到的VC。
3、did-mgr-issuer服务(DID Manager Issuer Service):
运行在签发结构侧的服务,为签发结构提供密钥管理、证书模板管理、以及证书发放、吊销等方面的管理功能。
4、did-mgr-common服务(DID Manager Common Service):
这个服务通常作为整个DID管理系统的统一入口和用户中心。它提供了身份验证、授权、用户管理、配置管理等基础功能,支持其他服务(如did-mgr-kms、did-mgr-issuer、did-mgr-holder)的运行。此外,它还可能包括用户界面(UI)和API网关,以便用户和其他系统能够方便地与DID管理系统进行交互。
这些服务共同构成了一个完整的DID管理系统,支持去中心化身份的创建、管理、验证和使用。在实际部署中,这些服务可能以微服务的形式存在,通过API进行通信和协作。
### DID 同步服务
DID 同步服务架构图
did-sync服务主要负责将主链的DID数据同步到子链。
在主子链架构中,因为DID服务连接的是部署在主链的DID合约,进行操作时只会在主链进行上上链记录。为了保证子链同样可以使用同样的数据,因此开发了主子链同步服务,通过监听主链合约事件,从中解析DID相关交易并写入子链,完成信息同步。
## 用户场景
### DID运营方
搭建**DID运营方**需要部署如下组件:
- DID核心服务 参考:[部署文档](05_%E9%83%A8%E7%BD%B2%E6%96%87%E6%A1%A3.html#核心服务部署文档)
- `did`服务
- `did-admin`服务
- DID管理台 参考:[部署文档](05_%E9%83%A8%E7%BD%B2%E6%96%87%E6%A1%A3.html#管理台部署文档)
- `did-mgr-common`服务
- `did-mgr-holder`服务
- `did-mgr-issuer`服务
- `did-mgr-kms`服务
- App后端 参考:[部署文档](05_%E9%83%A8%E7%BD%B2%E6%96%87%E6%A1%A3.html#APP后端服务部署)
- `did-app-backend`服务
- 网关服务 参考:[部署文档](05_%E9%83%A8%E7%BD%B2%E6%96%87%E6%A1%A3.html#网关服务(did-gateway))
- `did-gateway`服务
### 签发机构
搭建**签发机构**需要部署如下组件:
- DID管理台 参考:[部署文档](05_%E9%83%A8%E7%BD%B2%E6%96%87%E6%A1%A3.html#管理台部署文档)
- `did-mgr-common`服务
- `did-mgr-holder`服务
- `did-mgr-issuer`服务
- `did-mgr-kms`服务
### 验证方
**验证方**可以使用**App**或者**Web插件**客户端接入系统
参考:[App编译文档](05_%E9%83%A8%E7%BD%B2%E6%96%87%E6%A1%A3.html#APP应用编译)
参考:[Web插件安装文档]()
### 数据同步
同步**ChainWeaver 主链**数据可以参考:[部署文档](05_%E9%83%A8%E7%BD%B2%E6%96%87%E6%A1%A3.html#数据同步)
## 核心流程
核心流程-概述
核心流程主要包括:
1. 申请企业实名DID
2. 申请个人实名DID
3. 签发VC
4. 扫码登录
5. 验证VP
具体流程请参考[接入协议文档](04_接入协议.html)