このセクションでは、ArcBlockの分散型ID(DID)の背後にある基本概念について説明します。ArcBlockエコシステムにおけるDIDは、単なる識別子ではなく、独自の暗号学的プロパティを埋め込んだ自己完結型の自己記述的エンティティです。この設計により、多用途で相互運用可能なIDシステムが可能になります。
DIDの構造
ArcBlock DIDは、did:abt:で始まるW3C DID仕様フォーマットに従う文字列です。プレフィックスに続く部分は、IDに関するすべての必要な情報を含む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_ACCOUNT | ED25519 | SHA3 | BASE58 | 標準的なユーザーおよびアプリケーションアカウント。 |
'eth', 'ethereum' | ROLE_ACCOUNT | ETHEREUM | KECCAK | BASE16 | イーサリアム互換アカウント。 |
'passkey' | ROLE_PASSKEY | PASSKEY | SHA2 | BASE58 | WebAuthn Passkeysによって管理されるDID。 |
DID生成フロー
DIDは秘密鍵とDIDTypeオブジェクトから生成されます。次の図は、標準的なArcBlock DIDのプロセスを示しています。

イーサリアム互換DID
このライブラリは、イーサリアム互換DIDを第一級でサポートします。これらは0xで始まる標準的なイーサリアムアドレスです。
標準のArcBlock DIDとは異なり、イーサリアムDIDはアドレス自体にタイプ情報をエンコードしません。そのタイプはフォーマットから推測されます。ライブラリが有効なイーサリアムアドレスを検出すると、自動的に'ethereum'プリセット(ETHEREUM鍵タイプ、KECCAKハッシュ、BASE16エンコーディング)を適用します。また、ライブラリはEIP-55チェックサムの検証と生成も処理し、より広範なイーサリアムエコシステムとの相互運用性を確保します。