跳到主要內容

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