# @enbox/dwn-sdk-js 中文文档

规范地址：https://npmcn.com/package/%40enbox/dwn-sdk-js/

版本：0\.4\.32
npm 元数据更新时间：2026-11-12T05:34:05.656Z
中文译文更新时间：2026-11-13T23:49:52.297Z
软件包许可：Apache-2\.0

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40enbox/dwn-sdk-js
原文对照：https://npmcn.com/package/%40enbox/dwn-sdk-js/?lang=original
项目主页：https://github.com/enboxorg/enbox/tree/main/packages/dwn-sdk-js#readme
源码仓库：https://github.com/enboxorg/enbox

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：18.4 MB，1279 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：8 个
- peer 依赖：level 8\.0\.1，abstract-level 1\.0\.4，interface-store 8\.0\.0，interface-blockstore 7\.0\.1，ipfs-unixfs-exporter 16\.0\.2
- 首次发布：2025-08-03T02:44:52.169Z
- 最新版本发布：2026-11-12T05:34:05.127Z
- 近 30 天下载量：2862（2026-10-14 至 2026-11-12，npm 官方下载统计）
- 已发布版本数：57（近 12 个月 55 个）

## 中文简介

参考实施情况 [https://identity.foundation/去中央集权-web-node/ spec/](https://identity.foundation/decentralized-web-node/spec/)

## 安装

```sh
npm install @enbox/dwn-sdk-js
```

也可以使用：`pnpm add @enbox/dwn-sdk-js`、`yarn add @enbox/dwn-sdk-js`、`bun add @enbox/dwn-sdk-js`

## README

# 分散式网络节点( DWN) SDK

> **研究预览** ——Enbox正在积极开发. API可不经通知而更改.

[![Coverage](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/LiranCohen/02d15f39a46173a612a8862ec6d7cfcf/raw/dwn-sdk-js.json)](https://github.com/enboxorg/enbox/actions/workflows/ci.yml)

类型脚本执行 [分散式网络节点](https://identity.foundation/decentralized-web-node/spec/) ——由模块驱动的用户控制的个人数据存储.

## 概览

这个包是Enbox堆栈其余部分使用的核心 DWN 引擎. 它处理消息处理,模块授权,记录存储,以及加密. 大多数应用程序应当使用 [`@enbox/api`](https://npmcn.com/package/%40enbox/api/) 而不是这个包直接.

## 安装

```bash
bun add @enbox/dwn-sdk-js
```

## 使用量

```ts
import { Dwn, DataStream, Jws, RecordsWrite } from '@enbox/dwn-sdk-js';
import { DataStoreLevel, MessageStoreLevel, ResumableTaskStoreLevel } from '@enbox/dwn-sdk-js/stores/level';

const messageStore = new MessageStoreLevel();
const dataStore = new DataStoreLevel();
const resumableTaskStore = new ResumableTaskStoreLevel();
const dwn = await Dwn.create({ messageStore, dataStore, resumableTaskStore });

// Create and process a RecordsWrite message
const data = new TextEncoder().encode('Hello, World!');
const recordsWrite = await RecordsWrite.create({
  data,
  dataFormat  : 'application/json',
  published   : true,
  schema      : 'example/post',
  signer      : Jws.createSigner(persona),
});

const dataStream = DataStream.fromBytes(data);
const result = await dwn.processMessage(persona.did, recordsWrite.message, { dataStream });
console.log(result.status); // { code: 202, detail: 'Accepted' }

await dwn.close();
```

级别支持的存储执行从 `@enbox/dwn-sdk-js/stores/level` 因此仅需要信件的应用程序和模块 API 默认不会加载 L等值存储模块图. 可供替代商店执行时使用的共享块状辅助工具来自 `@enbox/dwn-sdk-js/stores/blockstore`。 。 。 .

### 背景角色偏好

`resolveModuleContextRoles(graph, contextPath)` 返回根 提供直接儿童角色路径 `read`输入 `$actions` 数组顺序。 这个顺序 选择此精确根后, 声明客户端; 对象属性顺序 不影响它。 它不会改变DWN的授权,意味着角色继承, 或修改角色分配。 高级共享文本 API产生其作用 同一解析模块图中的候选人.

见 [上下文角色偏好](https://npmcn.com/package/apps/docs/content/docs/packages/dwn-sdk-js.mdx#context-role-preference) 定义公约,以及一个带有编辑和查看器角色的笔记本示例.

### 自定义租户图

默认情况下,所有委托人都可以作为租户。 提供自定义 `TenantGate` 限制访问:

```ts
import { ActiveTenantCheckResult, Dwn, TenantGate } from '@enbox/dwn-sdk-js';

class CustomTenantGate implements TenantGate {
  public async isActiveTenant(did: string): Promise<ActiveTenantCheckResult> {
    // custom logic
  }
}

const dwn = await Dwn.create({ messageStore, dataStore, resumableTaskStore, tenantGate: new CustomTenantGate() });
```

### 自定义签名符

使用 `PrivateKeySigner` 如果您有可用的密钥,或者执行 `Signer` 与外部签名服务整合的接口 HSM等 :

```ts
import type { Signer } from '@enbox/dwn-sdk-js';

class CustomSigner implements Signer {
  public keyId = 'did:example:alice#key1';
  public algorithm = 'EdDSA';
  public async sign(content: Uint8Array): Promise<Uint8Array> {
    // custom signing logic
  }
}
```

## 建筑

![DWN architecture diagram](https://npmcn.com/package/%40enbox/dwn-sdk-js/images/dwn-architecture.png)

> 该图是一个概念性观点;来源中的实际成分名称可能不同.

## 发展

```bash
# Build
bun run build

# Test
bun run test:node

# Test with grep filter (from this package directory)
GREP="ModulesConfigure" bun run test:node-grep

# Lint
bun run lint
```

## 许可证

阿帕奇 - 2.0

## 常见问题

### @enbox/dwn-sdk-js 是什么？

参考实施情况 https://identity\.foundation/去中央集权-web-node/ spec/

### 如何安装 @enbox/dwn-sdk-js？

在项目目录运行 npm install @enbox/dwn-sdk-js，或使用 pnpm add / yarn add / bun add。

### @enbox/dwn-sdk-js 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @enbox/dwn-sdk-js 支持 ESM 还是 CommonJS？

以 ES Module 形式发布，推荐使用 import 引入。在 CommonJS 项目中，Node\.js 20\.19\+ / 22\.12\+ 可以直接 require\(\) 不含顶层 await 的 ES Module，更早的版本需要改用动态 import\(\)。

### @enbox/dwn-sdk-js 可以商用吗？

@enbox/dwn-sdk-js 使用 Apache-2\.0 许可。宽松许可：允许商业使用、修改和再分发，并附带明确的专利授权；分发时需保留许可与 NOTICE 文件，修改过的文件要注明改动。以上为概括，不构成法律意见，请以许可原文为准。

### @enbox/dwn-sdk-js 的下载量有多少？

根据 npm 官方下载统计，@enbox/dwn-sdk-js 在 2026/10/14 – 2026/11/12 这 30 天内被下载 2,862 次，日均约 95 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @enbox/dwn-sdk-js 还在维护吗？

最新版本 0\.4\.32 发布于 2026/11/12（1 天前）；至今共发布 57 个版本，其中过去 12 个月发布了 55 个；首次发布于 2025/08/03。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

