Bible Network Crypto DeFi Onchain RWA AI Agent Stablecoin Chain SAFU CryptoTax DeFAI AGI Claude Me Claude Skill Claude Design Claude Cowork
獨立知識媒體
與任何項目無關聯
拆解加密世界的 AI Agent:機制、風險、經濟模型
aiagent-bible.com
最新
Onchain Agent 的 Gas 優化設計:批次交易、動態策略、時機選擇,讓你的 Agent 少付 60% 手續費  ·  Agent 代幣經濟設計:為什麼大多數 Agent 代幣失敗,以及好的代幣設計長什麼樣  ·  AI Agent 的 Context Window 管理:為什麼你的 Agent 會「忘事」,以及四種解決方法  ·  MCP 是什麼?為什麼 2025 年每個 AI Agent 都在談它  ·  Agentic Loop 是什麼:AI Agent 怎麼「一直跑」——感知、規劃、執行、觀察的完整循環拆解  ·  2026 年五個主流 Onchain Agent 框架比較:LangGraph、ElizaOS、AutoGen、Olas、ZerePy,各自適合誰
名詞解析 · agent-security

Agent Identity

Agent 身份(Agent Identity)
agent-security 中級

完整解說 +
01 · 這是什麼?

為什麼 Agent 需要可驗證身份?匿名操作有什麼安全問題?

在單個 Agent 系統裡(你部署了一個 Agent,它只和你指定的協議互動),Agent Identity 的問題相對簡單——Agent 的身份就是它持有的私鑰對應的錢包地址。但在以下幾個場景裡,Agent 需要更完整的身份機制:

場景一:多 Agent 系統裡的信任問題 在一個 Orchestrator 協調多個 Sub-agent 的系統裡,Orchestrator 向 Sub-agent 發送指令時,Sub-agent 怎麼確認「這個指令確實來自 Orchestrator,而不是一個偽裝的攻擊者」?如果攻擊者可以偽裝成 Orchestrator 向 Sub-agent 發送指令,且 Sub-agent 沒有驗證指令來源的機制,攻擊者就能控制 Sub-agent 執行惡意操作。可驗證身份讓 Sub-agent 能夠驗證「這個指令的來源是我信任的 Orchestrator」(例如通過 Orchestrator 的簽名驗證)。

場景二:跨系統的 Agent 協作 當你的 Agent 需要和其他服務的 Agent 協作(例如 A2A Protocol 場景)時,對方的 Agent 需要知道「你的 Agent 是誰、被授權做什麼」才能決定是否信任這個 Agent 的請求。沒有可驗證身份,跨系統的 Agent 協作要麼依賴 API Key(靜態、難以管理),要麼完全沒有訪問控制(任何人都能偽裝成你的 Agent)。

場景三:責任追溯 當一個 Onchain Agent 系統出現了意外操作,你需要能夠回答「是哪個 Agent 實例執行了這個操作、在誰的授權下」。如果 Agent 沒有可驗證的身份,事後的責任追溯幾乎不可能——你只知道「某個擁有這個錢包的程序執行了操作」,不知道是哪個 Agent 版本、在哪個時間點被授權執行的。

02 · 為什麼存在?

DID 和可驗證憑證(VC)在 Agent 裡具體怎麼使用?

DID(Decentralized Identifier,去中心化識別符)是 W3C 標準定義的一種去中心化身份標識符格式,不依賴任何中心化的身份提供商(不像 OAuth 依賴 Google / Apple)。一個 DID 看起來像:did:ethr:0x1234...(以太坊地址型 DID)或 did:key:z6MkhaXg...(密鑰對型 DID)。

Agent 使用 DID 的場景

  • Agent 在系統初始化時生成一個 DID(通常基於它的密鑰對)
  • 這個 DID 被 Agent 的部署者(你)在某個 DID Registry 裡登記,關聯「這個 DID 是由 Agent X、在 Y 時間被授權操作 Z 資產」的聲明
  • 當 Agent 和其他系統交互時,它出示這個 DID,對方可以解析 DID Document,驗證 Agent 的聲明(身份和授權)

可驗證憑證(VC,Verifiable Credential) 是附加在 DID 上的聲明,由可信的發行者(Issuer)簽署。在 Agent 場景裡,VC 可以用來表達:「這個 Agent(DID = xyz)被其部署者(Issuer = 0xABC...)授權,可以在 Aave 協議上執行不超過 $10,000 的 USDC 存取操作,有效期至 2026-12-31」。

其他 Agent 或協議在接受這個 Agent 的操作請求時,可以驗證:VC 的簽名是否來自可信的 Issuer;VC 裡的授權範圍是否包含當前請求的操作;VC 是否在有效期內。

目前的成熟度:DID 和 VC 在 Onchain Agent 裡的應用仍在早期。實際上很多系統用更簡單的機制(如 EIP-712 結構化簽名)做 Agent 間的身份驗證。DID/VC 更多出現在需要跨組織協作的 Agent 系統(例如企業 AI Agent 之間的互信)裡。

03 · 如何影響你的決策?

Onchain Agent 的身份和它的錢包地址是同一件事嗎?有什麼情況需要區分?

Onchain Agent 的「鏈上身份」最基本的形式就是它的操作錢包地址——這個地址的私鑰由 Agent 持有,所有鏈上操作都從這個地址發出。但把「Agent 身份 = 錢包地址」等同起來在幾個情況下是不夠的:

需要區分的情況一:多個 Agent 實例共享一個錢包 出於安全設計(例如 ERC-4337 多簽錢包),多個 Agent 實例可能共享同一個操作錢包地址(需要多個 Agent 的多重簽名才能廣播交易)。在這個設計裡,「地址」代表的是整個 Agent 集群的資金帳戶,而不是某個特定 Agent 實例的身份。

需要區分的情況二:Agent 使用 Safe(Gnosis Safe)多簽錢包 Safe 多簽是 Onchain Agent 常用的安全架構——Agent 是 Safe 的一個簽署者(Signer),Safe 地址是「資金持有地址」,Agent 的 EOA 地址是「操作身份」。這裡有兩個地址:Safe 地址(持有資金)和 Agent EOA 地址(Agent 的操作身份),不能混同。

需要區分的情況三:Agent 輪換操作密鑰 出於安全考量(私鑰定期輪換),Agent 的操作地址可能每個月更換。如果「Agent 身份 = 操作地址」,每次地址更換就需要重新建立所有的信任關係(協議白名單、其他 Agent 的信任列表)。更好的設計是把 Agent 的「邏輯身份」(DID 或者一個高層的 Multisig 地址)和「操作地址」分開——操作地址可以輪換,但邏輯身份保持不變,信任關係基於邏輯身份建立,不需要每次操作地址更換都重建。

04 · 你該怎麼辦?

Agent Identity 的最小可行實作是什麼?不用 DID,有沒有更簡單的方案?

對大多數個人 Onchain Agent 開發者來說,完整的 DID + VC 實作過於複雜,性價比不高。以下是一個「最小可行 Agent Identity」設計,能解決最核心的安全問題(Orchestrator 和 Sub-agent 之間的指令驗證),不需要使用 DID/VC:

最小可行方案:EIP-712 結構化簽名 + 指令 Nonce

Orchestrator 對每條發給 Sub-agent 的指令做 EIP-712 結構化簽名:{instruction_type: 'withdraw', protocol: 'aave', amount: 5000, nonce: 12345, expires_at: 1735689600}。Sub-agent 在執行指令前:驗證簽名確實來自 Orchestrator 的密鑰;驗證 nonce 是否已被使用(防止重放攻擊);驗證 expires_at 是否在當前時間之後(防止過期指令)。

這個方案的效果:即使攻擊者截獲了一條 Orchestrator 發給 Sub-agent 的指令,他無法用同一條指令再次執行(nonce 已使用);他無法偽造新指令(沒有 Orchestrator 的私鑰);他無法使用過期的指令(expires_at 驗證)。

成本:實作這個方案,Python 端只需要 eth_account 庫(Web3.py 的一部分,免費)做簽名和驗證;不需要任何額外的基礎設施。這是個人 Onchain Agent 開發者在不引入 DID 複雜度的情況下,能達到的合理安全水準。

實際例子 +

實際架構:一個 DeFi 策略 Agent 系統的身份層設計

一個包含 Orchestrator + 3 個 Sub-agent 的 DeFi 策略系統的最小可行身份設計:

身份層架構:

  • Orchestrator 身份:一個專用的 EOA(0xOrch...),持有 Orchestrator 的簽名密鑰。這個地址不持有任何資金,只用來簽署發給 Sub-agent 的指令
  • Safe 多簽地址0xSafe...):持有所有策略資金(USDC)。需要 Orchestrator + 另一個守護者地址共同簽名才能移動資金
  • 3 個 Sub-agent EOA 地址:各自持有極少量 ETH(支付 Gas 費),不持有 USDC。Sub-agent 只能通過 Orchestrator 簽名的指令調用工具,不能直接訪問 Safe 的資金

指令流程(Orchestrator → Sub-agent):

  1. Orchestrator 生成指令:{task: 'query_aave_apy', token: 'USDC', nonce: 001, expires_at: +5min}
  2. Orchestrator 用自己的私鑰(0xOrch...)對指令做 EIP-712 簽名
  3. Sub-agent 接收指令,驗證簽名、nonce 和有效期
  4. 驗證通過後,Sub-agent 執行工具調用並返回結果
  5. 所有指令、nonce、執行結果都記錄到 PostgreSQL 的 agent_instruction_log

這個設計解決的安全問題: 攻擊者無法偽裝成 Orchestrator 向 Sub-agent 發指令(沒有 Orchestrator 私鑰);即使 Sub-agent 被 Prompt Injection 攻擊,它也無法直接訪問 Safe 的資金(Safe 需要 Orchestrator 多簽);每條指令有 nonce 和有效期,防止重放攻擊;完整的指令日誌讓事後審計成為可能。

圖解
Agent Identity: Two Layers + Minimum Viable Implementation左側:Agent Identity 兩個層面(技術層/授權層)和三個身份地址的關係圖(Orchestrator EOA / Safe 資金 / Sub-agent EOA);右側:EIP-712 + Nonce 的最小可行實作流程。Agent Identity: Address Separation + Minimum Viable Auth (EIP-712)Three-Address Security ArchitectureOrchestrator EOA (0xOrch...)Signs instructions to Sub-agents · holds NO fundsOnly identity: signs EIP-712 instructionsSafe Multi-sig (0xSafe...)Holds ALL strategy funds (USDC)Requires Orchestrator + guardian co-sign to move fundsSub-agent EOAs (0xSub1.../ 0xSub2...)Hold tiny ETH for Gas only · NO USDCCan only act on Orchestrator-signed instructionsKey Principle: Sub-agent compromise ≠ fund lossFunds in Safe (needs co-sig) · Sub-agent has no USDCOperations address rotatable ≠ identity changeEIP-712 + Nonce: Minimum Viable Auth1. Orchestrator signs instruction{task, protocol, amount, nonce:12345, expires_at:+5min}EIP-712 signature with Orchestrator private key2. Sub-agent verifies before executing✓ Signature valid (from Orchestrator's known pubkey)✓ Nonce unused (check DB) · ✓ expires_at > now3. Execute + log to audit trailMark nonce as used in PostgreSQLLog: instruction, signer, result, timestampWhat this prevents✗ Attacker can't impersonate Orchestrator (no private key)✗ Replay attacks: nonce can only be used once✗ Stale instructions: expires_at check✗ Injected Sub-agent → no USDC access without Safe co-sig✓ Cost: only eth_account library (Web3.py, free)AI Agent Bible · aiagent-bible.com
歡迎截圖分享,轉載請註明來源
常見誤解 +
✕ 誤解1
× 誤解一:Agent 的身份就是它的私鑰,私鑰安全了身份就安全了。私鑰只解決了「這個 Agent 能不能簽署交易」的問題,不解決「其他 Agent 怎麼驗證指令確實來自這個 Agent」的問題。在多 Agent 系統裡,Sub-agent 收到一條指令時,需要能驗證「這條指令是 Orchestrator 發的,而不是一個偽裝的攻擊者」——這需要 Orchestrator 對指令做數字簽名,光有私鑰(用來廣播交易)是不夠的,還需要 Orchestrator 把它的公鑰告訴所有 Sub-agent(讓 Sub-agent 能驗簽)。
✕ 誤解2
× 誤解二:使用相同的地址做 Agent 的「身份地址」和「資金地址」是沒問題的。把 Agent 的操作地址和持有資金的地址合并在一起,是一個常見的安全設計錯誤。如果 Agent 的操作地址被攻擊者控制(例如私鑰洩漏),攻擊者同時取得了 Agent 的身份和資金。正確設計:操作地址(持有少量 ETH 支付 Gas)和資金地址(Safe 多簽)分開,操作地址被攻擊時,資金地址不受直接影響。
這件事跟你有什麼關係 +
直接影響

完整 DID + VC 身份方案 → 支持跨組織的 Agent 協作、授權範圍精細可控、身份和操作地址可分離輪換,但實作複雜(需要 DID Registry、VC 發行/驗證基礎設施),且在個人 Agent 場景裡幾乎沒有可用的標準化生態。EIP-712 簽名 + Nonce 方案 → 實作簡單(只需要 eth_account 庫)、對 Orchestrator-SubAgent 指令驗證已夠用,但不支持跨組織協作、授權描述能力弱。對大多數個人 Onchain Agent:EIP-712 方案夠用,不需要 DID 的複雜度。DID/VC 適合:企業級 Agent 系統、需要與外部 Agent 服務互信的場景。

提問
請至少輸入 10 個字