跳到主要内容

arc did

arc did 管理身份与信任:生成 DID 身份、签发和验证可验证凭证,以及管理你信任哪些签发方。

arc did 管理身份与信任:给自己、给 provider、给 blocklet 生成 DID 身份;签发和验证可验证凭证;管理你信任的签发方列表。

对照版本:arc 2.0.0-beta.50(commit a99fb2c37,main,2026-09-11)。复制 dump 前先跑 arc --version;钉住命令面的是 commit。

bash
arc did <subcommand> [options]

全局选项(见 总览):--json--view--instance / -i(作用在哪个本地 ARC 实例;省略即 default),以及 --home(实例根;要指定作用在哪个实例,用 --instance)。arc did init --home--home 用来在选定根上建身份的场景之一。

身份

arc did init

生成一个 DID 身份。

用法

bash
arc did init [options]
  • --developer:生成开发者根密钥(ROLE_ACCOUNT
  • --provider:从开发者密钥派生 provider DID(ROLE_PROVIDER
  • --blocklet:从开发者密钥派生 blocklet DID(ROLE_BLOCKLET
  • --force:覆盖已有身份

不带 --developer/--provider/--blocklet 任何一个时,会根据你运行的位置自动判断要生成哪种。

arc did info

显示身份和凭证信息。

bash
arc did info

示例(在一个非项目目录下运行)

bash
$ arc did info
ERROR: No entity manifest found in current directory (looked for blocklet.yaml, .aup/, index.html, index.{txt,md,ans}, package.json)

示例(在一个已有身份且已签发凭证的项目里运行)

bash
$ arc did info
acme-widget DID=z2qaHJMfMAjP3t1eooziSUa6n7v25AbyfH4G1 CREDENTIAL=true ISSUER=z2qaHJMfMAjP3t1eooziSUa6n7v25AbyfH4G1

arc did check

对当前 provider 跑一遍一致性测试。

bash
arc did check

arc did list

列出这个实例 home 下存着的身份——直接读磁盘上现有的身份文件,不需要一个正在跑的 daemon。对照版本:arc 2.0.0-beta.48(commit 5a5316bde,main,2026-09-10)。

bash
arc did list [options]

示例(全新 home,还没生成过任何东西)

bash
$ arc did list --home /tmp/arc-did-doc-home
No identities

示例(跑过 arc did init --developer 之后)

bash
$ arc did init --developer --home /tmp/arc-did-doc-home
CREATED developer:developer DID=z1kExiHjGkUcBe6YTpyspLLNy1wb2vfCsV2
Next: arc did list --home /tmp/arc-did-doc-home
$ arc did list --home /tmp/arc-did-doc-home
developer DID=z1kExiHjGkUcBe6YTpyspLLNy1wb2vfCsV2 TYPE=developer

--home 直接指向磁盘上的一个文件夹。--instance / -i 则通过实例注册表(arc service list)解析;did list 本身从不需要一个正在跑的 daemon,但名字仍然必须是你真的建过的那个:

bash
$ arc did list -i doc519-nonexistent
ERROR: no instance named "doc519-nonexistent". `arc service list` shows 5

退出码 1。(shows 后面那个数字是抓这份样例时本机有几个实例,跟你打错的名字无关。)一个真实存在的实例不管它的 daemon 是在跑还是已停都能用——arc service start 已经替它生成过一个 developer 身份,这就是为什么对一个刚起的实例第一次 did list 不是空的,不像一个从没 did init 过的裸 --home 文件夹:

bash
$ arc service start -i doc519didlist --home /tmp/arc-doc519-instance-home --port 0
...
  Status:   up
$ arc did list -i doc519didlist
developer DID=z1jhrDL9b5Et2jgSZJwPkL324R4aVaXBHbf TYPE=developer
$ arc service stop -i doc519didlist
Service stopped: doc519didlist
$ arc did list -i doc519didlist
developer DID=z1jhrDL9b5Et2jgSZJwPkL324R4aVaXBHbf TYPE=developer

(上面 service start / service stop 的输出省略了 splash banner。)--json 把同样的行给成结构化数据:

bash
$ arc did list -i doc519didlist --json
{
  "identities": [
    {
      "name": "developer",
      "did": "z1jhrDL9b5Et2jgSZJwPkL324R4aVaXBHbf",
      "entityType": "developer"
    }
  ],
  "total": 1,
  "hintSelector": "-i doc519didlist"
}

凭证

arc did issue

签发一个可验证凭证。

用法

bash
arc did issue [options]
  • --skip-check:跳过一致性检查
  • --counter-sign:用一个受信任的签发方密钥对已有 VC 做反签名
  • --issuer-key <path>:签发方密钥文件路径,配合 --counter-sign
  • --expiration <date>:过期时间,ISO 格式
  • --all:给所有实体(provider + blocklet)签发 VC
  • --trust:反签名之后自动把这个签发方注册为受信任

arc did verify

验证一个凭证。

bash
arc did verify

受信任的签发方

arc did issuer 管理你的环境信任哪些签发方。

bash
arc did issuer <subcommand> [options]

arc did issuer list

列出全部受信任的签发方。

示例

bash
$ arc did issuer list
No trusted issuers

arc did issuer add

新增一个受信任的签发方。

用法

bash
arc did issuer add <name> [options]
  • --name <name>(必填):签发方标识,用作文件名前缀
  • --from-key <path>:包含 DID 和公钥的密钥文件路径
  • --from-file <path-or-url>.did.json 文件的路径或 HTTPS URL
  • --from-vc <path>:VC 文件路径,提取反签名的签名方
  • --proof-index <n>:配合 --from-vc,有多个 proof 时选择指定索引
  • --did <did>:DID 地址,base58 z... 格式
  • --pk <key>:公钥,十六进制格式

arc did issuer remove

移除一个受信任的签发方。

bash
arc did issuer remove <name>

arc did issuer inspect

显示一个受信任签发方的详细信息。

bash
arc did issuer inspect <name>

arc did issuer reset

重置信任存储:移除手动添加的签发方。本构建没有可恢复的内置种子集合——在干净的 home 上这条命令是 no-op。

用法

bash
arc did issuer reset [options]
  • --yes:跳过确认提示(stdin 不是 TTY 时必须加)

示例(干净 home)

bash
$ arc did issuer reset --yes
RESET no-op

$ arc did issuer list
No trusted issuers

--help 仍然写着 "restore shipped seeds";在本构建上不要信这一句。--json 打出的是 {"removed":[],"restored":[]}。添加过签发方之后,同一条带 --yes 的命令会打印 REMOVED <name>,然后 arc did issuer list 再次报告 No trusted issuers