一个 Aries Agent 通常是由以下的组件构成的
密钥管理服务 Key Management Service(KMS)
原来在 Indy 中被称为数字钱包,在 Aries 中被称为 KMS。KMS 就是用来存储像 DIDs,密钥,可验证的凭证以及其他私有信息的一个数据库。
SQLite 实现的 KMS 可以用来做一个小型的 agent,或者是手机的 agent。PostgreSQL 实现的 KMS 可以用于企业级的应用。不管是两种中的哪个,其存储的数据都是经过加密的。
因为存储在 KMS 里的数据都是加密的,那么数据是如何被加密和解密的呢?通常是通过运行着 agent 的设备的硬件来处理的,比如手机上的指纹服务,人脸识别服务。所以所有的需要使用存储在 KMS 中的密钥才能进行的操作,比如创建、存储、验证数据等,都只能通过调用 KMS 的代码以及上边所讲的使用运行 agent 的设备硬件提供的密钥来实现,这样可以避免密钥被暴漏给其他人或者程序。
Agent 通信接口
Agent 通信接口负责在 agent 间建立连接,发送和接收消息。Aries 使用 DIDComm(DID Communication)协议来在 agent 间进行通信的。
账本接口
Agent 需要提供跟账本进行互动的接口,比如查询、插入 DIDs 等。一个 Aries 账本接口一般会分为三部分:
- DID resolver:负责处理接收到的 DID,到账本中取回 DID 文档(DIDDoc)
- 账本写入机制:负责如何向账本中写入数据
- 可验证凭证的处理:负责处理可验证的凭证
控制器 controller
Controller 就是为不同业务服务的应用程序,他提供了业务规则。对于一个手机 agent,它会设计针对不同的操作应该触发指定的服务。对于一个颁发/验证凭证的 agent,controller 可能会是一个企业已有的数据库系统,从中提取元数据并生成新的凭证数据。这个对于企业(凭证颁发者)以及个人(数据持有者)都是有好处的,企业拥有高质量的数据,不需要再进行人工的审核校验,对于个人来说,具有高质量的数据,不需要手动输入以及更快速的回复,不需要再次手动检验。