跳到主要內容

核心概念

本節說明 ArcBlock 去中心化身分(DID)背後的基本概念。在 ArcBlock 生態系中,DID 不僅僅是一個識別碼;它是一個獨立、自描述的實體,內嵌了自身的密碼學屬性。這種設計實現了一個多功能且可互通的身分系統。

DID 結構

ArcBlock DID 是一個遵循 W3C DID 規範格式的字串,前綴為 did:abt:。前綴之後的部分是一個 Base58 編碼的字串,其中包含有關該身分的所有必要資訊。

例如:did:abt:zNKoDmH82m9fW5n444z4T8tWz9t2v7q3m6s

DID 的核心是一個 26 位元組的緩衝區,其中包含:

  • 類型資訊(2 位元組): 編碼 DID 使用的密碼學套件。
  • 公鑰雜湊(20 位元組): 與 DID 關聯的公鑰的雜湊值。
  • 校驗和(4 位元組): 確保 DID 字串的完整性。

這種結構使得 ArcBlock DID 具有自我驗證和自描述的特性,因為您可以直接從 DID 字串本身推導出 DID 的功能。

DIDType 物件

DIDType 物件是一個關鍵的設定物件,它定義了 DID 的密碼學特性。它指定了用於金鑰對、雜湊和地址編碼的演算法。

  • role number (required) — 指定 DID 的目的或角色。不同的角色可能有不同的密碼學要求。例如,ROLE_NODE 使用 SHA2 進行雜湊,而 ROLE_ACCOUNT 使用 SHA3。常見的角色包括 ROLE_ACCOUNT、ROLE_APPLICATION、ROLE_NODE 和 ROLE_PASSKEY。
  • pk number (required) — 定義用於簽章和驗證的公鑰密碼學方案。支援的類型包括 ED25519、ETHEREUM 和 PASSKEY。
  • hash number (required) — 指定用於產生公鑰雜湊和校驗和的雜湊演算法。支援的演算法包括 SHA3、SHA2 和 KECCAK。
  • address number (required) — 決定最終 DID 地址字串的編碼格式。主要格式為 BASE58(用於標準 ArcBlock DID)和 BASE16(用於與以太坊相容的 DID)。

DID 類型預設集

為了簡化 DID 的建立,該函式庫提供了幾個字串捷徑,對應於常見用例的預先設定的 DIDType 物件。

捷徑角色金鑰類型雜湊類型編碼使用案例
'default', 'arcblock'ROLE_ACCOUNTED25519SHA3BASE58標準使用者和應用程式帳戶。
'eth', 'ethereum'ROLE_ACCOUNTETHEREUMKECCAKBASE16與以太坊相容的帳戶。
'passkey'ROLE_PASSKEYPASSKEYSHA2BASE58由 WebAuthn Passkeys 管理的 DID。

DID 產生流程

DID 是從一個私鑰和一個 DIDType 物件產生的。下圖說明了標準 ArcBlock DID 的產生過程。

Core Concepts

與以太坊相容的 DID

該函式庫為與以太坊相容的 DID 提供了一流的支援。這些是標準的以太坊地址,前綴為 0x

與標準的 ArcBlock DID 不同,以太坊 DID 不會在其地址本身中編碼其類型資訊。相反,其類型是透過其格式推斷出來的。當函式庫遇到一個有效的以太坊地址時,它會自動應用 'ethereum' 預設集(ETHEREUM 金鑰類型、KECCAK 雜湊、BASE16 編碼)。該函式庫還會處理 EIP-55 校驗和的驗證和產生,以確保與更廣泛的以太坊生態系的互通性。