top of page
数玺框架

数玺的框架结构采用“顶-底”(Top-Bottom)两层结构。顶层通过Verixyz Agent构建出整个框架的单一入口点。 底层则通过“即插即用”的插件模组构建。

这种架构使数玺模块化、可扩展性得到提升,并与W3C现有的大量标准能够很好的兼容和互通。 

Verixyz agent是Verixyz 框架的单一入口点。

Verixyz 代理是使用插件架构的代理的实现。 这种架构允许 Verixyz 模块化、可扩展并与可验证数据空间中的大量标准很好地兼容。

 

Verixyz agent的结构:
一个V-agent包括 4 个核心组件和定制的构建块:

- 信息
- 标识符
- 证书
- 钥匙
- 自定义(可选)


Verixyz agent的功能
负责但不限于:

- 创建标识符
- 解析标识符
- 证书颁发
- 证书撤销
- 凭证交换
- 秘密分享

2

数玺中的附加功能通过即插即用的插件添加到代理中来实现。

在数玺上构建应用程序时,可以根据他们的自定义需求编写和配置即插即用插件。自定义插件可以只存在于目录、私有存储库或可以与他人共享的 npm 包中。

数玺社区鼓励开发人员在编写/开发插件时遵循一些基本规则,以确保整个数玺生态系统具有高度互操作性。

目前发布的插件(npm包)有:

@verixyz/core#

@verixyz/did-manager#

@verixyz/did-provider-ethr#

@verixyz/did-provider-web#

@verixyz/did-provider-key#

@verixyz/key-manager#

@verixyz/kms-local#

@verixyz/did-resolver#

@verixyz/did-comm#

@verixyz/did-jwt#

@verixyz/message-handler#

@verixyz/url-handler#

@verixyz/selective-disclosure#

@verixyz/credential-w3c#

@verixyz/remote-server#

@verixyz/data-store#

@verixyz/remote-client#

3

DID 方法定义了如何实现本规范描述的特性。 DID 方法通常与特定的可验证数据注册表相关联。 新的 DID 方法在它们自己的规范中定义,以实现同一 DID 方法的不同实现之间的互操作性。 请参阅 DID 方法 W3C 规范

 

目前数玺发布的DID方法有:

- did:ethr
- did:web

- did:key

- did:peopledata
开发者可根据需求开发自定义的 DID 方法。

全域解析器(Universal Resolver)
Universal ResolverDIF 管理,支持全域 DID 方法。还有一些私有 DID 方法可以私下使用。

Universal Resolver 聚集了许多 DID 方法的特定驱动程序,并在同一位置的 Docker 容器中封装对应的API。 这样任何其他应用程序只要向universal Resolver发出请求,就能解析不同的DID。社区开发的其他 DID 方法主要按照约定注册,即可以得到全域支持。

 

可以将新didi方法添加到 Universal Resolver Supported DID 方法中。

4

用户处于信息系统的中心是DID/SSI 背后的核心理念之一。 当用户或个人被置于信息系统的中心时,他们需要一种选择性地共享信息的方法。 这称为选择性公开。 这个概念是为了鼓励和促进用户的隐私和数据控制。

 

例如:KYC 合规性要求用户的法定年龄要求和/或银行信用记录。 如果我们以法定年龄为例,用户可能希望分享他们已达到访问服务时的法定年龄,但不必分享他们的实际出生日期、家庭住址、联系电话和其他个人识别信息 (PII)。

数玺为用户在进行数据分享或隐私保护设置时,提供了这样的能力。

5

事件系统为插件提供了一种以解耦方式进行交互的方式。 Verixyz agent提供了一个简单的事件系统,其中事件可以由应用程序代码或插件发出,并由事件侦听器异步使用。

6

数玺使用 YAML 文件进行各种配置。这样可以很方便对数玺进行定制化以及适配。

例如通过下面的yaml文件配置:

#yaml

server:
  baseUrl: 'http://localhost:3332'
  port: '3332'

  # Array of express middleware
  use:
    # CORS
    - - $require: 'cors?t=function'

    # Add agent to the request object
    - - $require: '@verixyz/remote-server?t=function#RequestWithAgentRouter'
        $args:
          - agent:
              $ref: /agent

  # Execute during server initialization
  init:
    - $require: '@verixyz/remote-server?t=function#createDefaultDid'
      $args:
        - agent:
            $ref: /agent
          baseUrl:
            $ref: /constants/baseUrl
          messagingServiceEndpoint: /messaging

​加入我们

欢迎有兴趣的开发者和社区运营志愿者加入我们!

bottom of page