UNPKG

@nuwa-ai/identity-kit

Version:

SDK for NIP-1 Agent Single DID Multi-Key Model and NIP-3 CADOP (Custodian-Assisted DID Onboarding Protocol)

106 lines (72 loc) 3.44 kB
# @nuwa-ai/identity-kit |[English](./README.md)|中文| > Nuwa Protocol Identity SDK for TypeScript `@nuwa-ai/identity-kit` Nuwa 协议在 TypeScript/JavaScript 环境下的核心 DID SDK。它遵循 [NIP-1](https://github.com/nuwa-protocol/NIPs/blob/main/nips/nip-1.md)(单一 DID / 多密钥模型),并为 [NIP-2](https://github.com/nuwa-protocol/NIPs/blob/main/nips/nip-2.md) 认证协议提供底层支持。 ## ✨ 功能特性 * **简易启动**: 一行 `IdentityKit.bootstrap()` 即可完成 KeyStore、VDR 等环境装配。 * **NIP-1 兼容**: 完整覆盖主密钥、操作密钥、服务声明等 DID Document 元素及生命周期管理。 * **可插拔架构**: 通过 VDR 插件机制支持 `did:key`、`did:rooch` 等多种 DID 方法,也可自定义扩展。 * **浏览器友好**: 内置 `LocalStorage`、`IndexedDB` KeyStore;同时兼容 Node.js / Deno 等运行时。 * **类型安全**: TypeScript 实现,导出完善的类型定义。 ## 📦 安装 ```bash npm install @nuwa-ai/identity-kit @roochnetwork/rooch-sdk ``` --- ## 🚀 快速上手 下面示例展示了「准备环境 加载/创建 DID 基本操作」的完整流程。 ```ts import { IdentityKit, KeyType } from '@nuwa-ai/identity-kit'; import { RoochClient } from '@roochnetwork/rooch-sdk'; // Step 1) 启动运行环境(注册 VDR、创建 KeyManager & KeyStore) const env = await IdentityKit.bootstrap({ method: 'rooch', vdrOptions: { rpcUrl: 'https://test-seed.rooch.network/', }, }); //Step 2-A) 已有 DID 直接加载 const kit = await env.loadDid('did:rooch:0xYourDid', /* 可选自定义 signer */); ``` --- ## ⚙️ 常用操作 ```ts // 读取 DID Document const doc = kit.getDIDDocument(); // 添加一个新设备密钥 await kit.addVerificationMethod( { keyType: KeyType.ECDSA_SECP256K1 }, ['authentication'], ); // 使用 DIDAuth v1 (NIP-2) 对数据进行签名 import { DIDAuth } from '@nuwa-ai/identity-kit'; const sig = await DIDAuth.v1.createSignature( { operation: 'example', params: { message: 'hello' } }, env.keyManager, // SignerInterface 实例(此处复用 env 内置的 KeyManager) doc.verificationMethod![0].id // keyId to sign with ); ``` --- ## 🛠️ 核心概念速查 | 概念 | 说明 | |---|---| | `IdentityEnv` | `IdentityKit.bootstrap()` `IdentityEnvBuilder` 构建的运行环境,持有全局 `VDRRegistry` `KeyManager`。 | | `VDRRegistry` | 全局单例,管理各 DID Method VDR 实例,并提供统一的 DID 解析 / 创建接口。 | | `KeyManager` | SDK 内置的密钥生命周期管理器,实现 `SignerInterface`,可直接用于签名。 | | `KeyStore` | 密钥持久化后端。浏览器默认使用 `LocalStorageKeyStore` / `IndexedDBKeyStore`。 | | `IdentityKit` | 绑定到 **单个 DID** 的高阶对象,暴露 DID 操作(增删 Key、Service、签名、解析等)。 | --- ## 🔬 高级用法 ### `IdentityEnvBuilder` 链式配置 ```ts import { IdentityEnvBuilder } from '@nuwa-ai/identity-kit'; const env = await new IdentityEnvBuilder() .useVDR('rooch', { rpcUrl: 'https://...' }) .useKeyStore(new IndexedDBKeyStore()) .init(); ``` ### 自定义 VDR / KeyStore 实现 `VDRInterface` / `KeyStore` 接口并在 `builder.useVDR()`、`builder.useKeyStore()` 中注入,即可接入新的 DID 方法或存储后端。 --- ## 📄 License Apache-2.0