跳到主要内容

ARC 2.0.0-beta.28

DID 作用域存储

当数据需要 DID 作用域的逻辑存储边界时,把 DID Space 作为 AFS provider 挂载,并按 transport 分别看待能力。

@aigne/afs-did-space 把 DID 作用域持久化存储实现为 AFS provider。一个 principal DID 对应一个 DID Space。服务或 blocklet 只占用该空间内的 path 前缀,而不是获得第二套平行存储产品。

包入口

导入 / 入口作用
@aigne/afs-did-space包根
@aigne/afs-did-space/localNode 本地 provider(DIDSpace)— 文件系统对象 + SQLite 元数据
@aigne/afs-did-space/cloudflareCloudflare provider — D1 索引 + R2 对象
@aigne/afs-did-space client / transports把远程或静态视图挂成 AFS 模块

源码中的包描述:AIGNE AFS provider for DID-scoped persistent storage with CID-based content deduplication

Instance 下的角色前缀

对 instance 片段,本地 provider 要求角色为 systemuser,并在 principal 的 blocklet 空间下构造角色前缀:

text
{principalDid}/blocklets/{instance-did}/system/...   # 安装方 / instance 拥有
{principalDid}/blocklets/{instance-did}/user/...     # 该 principal 作为调用者的用户数据

getInstanceSpace({ instanceDid, role }) 拒绝其它 role 字符串。角色内容树直接落在角色根(没有额外 files/ 包装层)。config/ 是 provider 内部 sibling,不出现在 blocklet 的 /instance 视图里。

用 CLI 检查时,这些前缀表现为逻辑 AFS 路径:

text
/spaces/<user-did>/blocklets/<app-did>/system
/spaces/<user-did>/blocklets/<app-did>/user

arc space path 会打印这些片段。见 检查本地空间

最小本地挂载示意

ts
import { DIDSpace } from "@aigne/afs-did-space/local";

const space = new DIDSpace({
  rootPath: "~/.afs/spaces",
  userDid: "did:abt:z1...",
});

const afs = await space.getInstanceSpace({
  instanceDid: "did:abt:z1blocklet",
  role: "system",
});
await afs.write("/hello.txt", { content: "hello" });

这段示意只说明 provider 边界,不是完整部署配方。在运行中的 blocklet 内,优先使用 session 视图(/user、可选 /space),而不是在应用 UI 代码里重做挂载选择。

Transport 能力并不相等

connectDIDSpace 接受 transport 类型 httpwsstatic-readonly。客户端会剥离 transport 不支持的操作,让 AFS 路由看到 undefined 方法,而不是远程意外失败。

Transport默认访问模式当前客户端剥离或不支持的操作
wsreadwrite(除非覆盖)transport 实现完整时转发完整操作集
httpreadwrite(除非覆盖)不支持 statsearchexecexplain
static-readonlyreadonly不支持 searchexecwrite / delete 按 access mode 剥离

不要把「已挂进 AFS」理解成每个视图都能读、写、搜索、执行。针对所选 transport 实际暴露并测过的操作来写 Blocklet。

本地与 Cloudflare 后端也共享内容寻址对象(.objects/{cid})、树索引与 conformance 套件。后端选择本身不会抹平 transport 能力差异。

本页不规定什么

  • 把某一种物理后端当作唯一支持的部署方式。
  • 公共 CDN、默认匿名分享,或「把整个空间开放到互联网」的行为。
  • 完整的远程 import/export 运维手册(arc space 有云端子命令;它们依赖具体环境鉴权,本页未复跑)。
  • Instance DID 生命周期或 VC trust 门。

要了解 session 可见路径,继续看 Session 数据。本地 CLI 检查见 检查本地空间