メインコンテンツへスキップ

APIリファレンス

このセクションでは、@arcblock/did ライブラリ内のすべての公開関数と型に関する包括的なAPIリファレンスを提供します。これには、分散型ID(DID)の作成、検証、検査などの一般的なタスクに対応する、すぐにコピー&ペーストして使用できる実用的なコードスニペットが含まれています。

このセクションでは、@arcblock/did ライブラリ内のすべての公開関数と型に関する包括的なAPIリファレンスを提供します。これには、分散型ID(DID)の作成、検証、検査などの一般的なタスクに対応する、すぐにコピー&ペーストして使用できる実用的なコードスニペットが含まれています。

DIDの作成

これらの関数は、秘密鍵、公開鍵、ハッシュなどのさまざまな暗号学的入力からDIDを生成するために使用されます。

fromSecretKey

秘密鍵と指定されたDIDタイプ設定からDIDを生成します。

パラメータ

  • sk BytesType (required) — 16進数でエンコードされた秘密鍵の文字列。
  • type DIDTypeArg — DIDタイプの設定。ショートカット文字列(例:'arcblock'、'eth')またはタイプオブジェクトを指定できます。デフォルトは標準のArcBlock DIDタイプです。

戻り値

  • did string — 生成されたDID文字列。

アプリケーションDIDの作成

javascript
import { fromSecretKey, types } from '@arcblock/did';

const sk = '0xD67C071B6F51D2B61180B9B1AA9BE0DD0704619F0E30453AB4A592B036EDE644E4852B7091317E3622068E62A5127D1FB0D4AE2FC50213295E10652D2F0ABFC7';

const appType = {
  role: types.RoleType.ROLE_APPLICATION,
  pk: types.KeyType.ED25519,
  hash: types.HashType.SHA3,
};

const did = fromSecretKey(sk, appType);
console.log(did); // zNKtCNqYWLYWYW3gWRA1vnRykfCBZYHZvzKr

fromPublicKey

公開鍵と指定されたDIDタイプ設定からDIDを生成します。

パラメータ

  • pk BytesType (required) — 16進数でエンコードされた公開鍵の文字列。
  • type DIDTypeArg — DIDタイプの設定。デフォルトは標準のArcBlock DIDタイプです。

戻り値

  • did string — 生成されたDID文字列。

イーサリアムスタイルのDIDの作成

javascript
import { fromPublicKey } from '@arcblock/did';

const pk = '0x4bc2a31265153f07e70e0bab08724e6b85e217f8cd628ceb62974247bb493382ce28cab79ad7119ee1ad3ebcdb98a16805211530ecc6cfefa1b88e6dff99232a';

const ethDid = fromPublicKey(pk, 'eth');
console.log(ethDid); // 0x9d8A62f656a8d1615C1294fd71e9CFb3E4855A4F

fromPublicKeyHash

公開鍵ハッシュと指定されたDIDタイプからDIDを生成します。出力形式(Base58またはBase16)は、DIDタイプで指定されたエンコーディングタイプに依存します。

パラメータ

  • buffer string (required) — 16進数でエンコードされた公開鍵ハッシュ。
  • type DIDTypeArg (required) — DIDタイプの設定。

戻り値

  • did string — 生成されたDID文字列。

javascript
import { fromPublicKeyHash, types, DidType } from '@arcblock/did';
import { Hasher } from '@ocap/mcrypto';

const pk = '0xFF47B3022FA503EAA1E9FA4B20FA8B16694EA56096F3A2E9109714062B3486D9';
const pkHash = Hasher.SHA3.hash256(pk);
const nodeType = DidType({ role: types.RoleType.ROLE_NODE });

const did = fromPublicKeyHash(pkHash, nodeType);
console.log(did); // z89nF4GRYvgw5mqk8NqVVC7NeZLWKbcbQY7V

fromHash

汎用の16進数エンコードされたハッシュとロールタイプからDIDを生成します。

パラメータ

  • hash string (required) — 16進数でエンコードされたハッシュ。
  • role number (default: ROLE_ACCOUNT) — mcrypto.types.RoleType からのロールタイプ。デフォルトは ROLE_ACCOUNT です。

戻り値

  • did string — 生成されたDID文字列。

javascript
import { fromHash, types } from '@arcblock/did';
import { Hasher } from '@ocap/mcrypto';

const pk = '0xE4852B7091317E3622068E62A5127D1FB0D4AE2FC50213295E10652D2F0ABFC7';
const pkHash = Hasher.SHA3.hash256(pk);

const did = fromHash(pkHash, types.RoleType.ROLE_APPLICATION);
console.log(did); // zNKtCNqYWLYWYW3gWRA1vnRykfCBZYHZvzKr

DIDの検証

これらの関数は、DIDの整合性と公開鍵との関係を検証するのに役立ちます。

isValid

DID文字列の形式とチェックサムを検証して、その有効性を確認します。

パラメータ

  • did string (required) — 検証するDID文字列。

戻り値

  • isValid boolean — DIDが有効な場合は true を、それ以外の場合は false を返します。

javascript
import { isValid } from '@arcblock/did';

// ArcBlock DID (Base58)
console.log(isValid('zNKtCNqYWLYWYW3gWRA1vnRykfCBZYHZvzKr')); // true
console.log(isValid('did:abt:z1nfCgfPqvSQCaZ2EVZPXbwPjKCkMrqfTUu')); // true

// ArcBlock DID (Base16)
console.log(isValid('0x0021e4b8f62674897ed75df0f7356e82c6f9a64a5c13f3cc0cd3')); // true

// イーサリアムDID
console.log(isValid('0x9d8A62f656a8d1615C1294fd71e9CFb3E4855A4F')); // true

// 無効なDID
console.log(isValid('abc')); // false
console.log(isValid('z1muQ3xqHQK2uiACHyChikobsiY5kLqtSha')); // false (チェックサムが不正)

isFromPublicKey

指定されたDIDが特定の公開鍵から生成されたかどうかを確認します。

パラメータ

  • did string (required) — DID文字列。
  • pk BytesType (required) — 照合する16進数エンコードされた公開鍵。

戻り値

  • isMatch boolean — DIDが公開鍵に対応する場合は true を、それ以外の場合は false を返します。

javascript
import { isFromPublicKey } from '@arcblock/did';

const pk = '0xE4852B7091317E3622068E62A5127D1FB0D4AE2FC50213295E10652D2F0ABFC7';
const did = 'zNKtCNqYWLYWYW3gWRA1vnRykfCBZYHZvzKr';

console.log(isFromPublicKey(did, pk)); // true
console.log(isFromPublicKey('abc', pk)); // false

型ユーティリティ

DIDタイプ情報を作成、解析、変換するための関数。

DidType

ショートカット文字列または部分的な型定義から標準化されたDIDタイプオブジェクトを作成します。不足しているプロパティは、ArcBlock DIDのデフォルト値で自動的に補完されます。

パラメータ

  • type DIDTypeArg — ショートカット文字列('arcblock'、'eth'、'passkey')または部分的なDIDTypeオブジェクト。

戻り値

  • didType DIDType — 完全なDIDTypeオブジェクト。

javascript
import { DidType, types } from '@arcblock/did';

// ショートカットの使用
const ethType = DidType('eth');
console.log(ethType);
// { role: 1, pk: 2, hash: 2, address: 1 }

// 部分的なタイプオブジェクトの使用
const nodeType = DidType({ role: types.RoleType.ROLE_NODE });
console.log(nodeType);
// { role: 3, pk: 1, hash: 4, address: 0 }

toTypeInfo

DID文字列からDIDタイプ情報(ロール、キータイプ、ハッシュアルゴリズムなど)を抽出します。

パラメータ

  • did string (required) — DID文字列。

戻り値

  • didType DIDType — 数値タイプのコードを含むDIDTypeオブジェクト。

javascript
import { toTypeInfo } from '@arcblock/did';

const did = 'zNKtCNqYWLYWYW3gWRA1vnRykfCBZYHZvzKr';
const typeInfo = toTypeInfo(did);

console.log(typeInfo);
// { role: 12, pk: 1, hash: 1, address: 0 }

toTypeInfoStr

DID文字列からDIDタイプ情報を抽出し、人間が読める文字列形式で返します。

パラメータ

  • did string (required) — DID文字列。

戻り値

  • didTypeStr DIDTypeStr — タイプの文字列表現を持つDIDTypeStrオブジェクト。

javascript
import { toTypeInfoStr } from '@arcblock/did';

const did = 'zNKtCNqYWLYWYW3gWRA1vnRykfCBZYHZvzKr';
const typeInfo = toTypeInfoStr(did);

console.log(typeInfo);
// { role: 'ROLE_APPLICATION', pk: 'ED25519', hash: 'SHA3', address: 'BASE58' }

fromTypeInfo

DIDタイプオブジェクトを、そのコンパクトな2バイトの16進数文字列表現に変換します。

パラメータ

  • type DIDTypeArg (required) — DIDタイプオブジェクトまたはショートカット。

戻り値

  • hex string — タイプを表す4文字の16進数文字列。

javascript
import { fromTypeInfo, types } from '@arcblock/did';

const appType = {
  role: types.RoleType.ROLE_APPLICATION,
  pk: types.KeyType.ED25519,
  hash: types.HashType.SHA3,
  address: types.EncodingType.BASE58,
};

const typeHex = fromTypeInfo(appType);
console.log(typeHex); // 0c01

isEthereumDid

文字列が有効なイーサリアムアドレスであるかを、チェックサム検証を含めて確認します。

パラメータ

  • did string (required) — 確認する文字列。

戻り値

  • isEth boolean — 有効なイーサリアムDIDの場合は true を返します。

toChecksumAddress

イーサリアムアドレスをチェックサム付きの形式に変換します。

パラメータ

  • address string (required) — イーサリアムアドレス。

戻り値

  • checksummedAddress string — チェックサム付きのアドレス。

フォーマットユーティリティ

標準のDIDプレフィックスを追加または削除するためのヘルパー関数。

toDid

DID文字列に did:abt: というプレフィックスが付いていることを保証します。

パラメータ

  • address string (required) — 生のDIDアドレス。

戻り値

  • did string — 完全修飾されたDID文字列。

javascript
import { toDid } from '@arcblock/did';

const address = 'z1muQ3xqHQK2uiACHyChikobsiY5kLqtShA';
console.log(toDid(address)); // did:abt:z1muQ3xqHQK2uiACHyChikobsiY5kLqtShA

toAddress

DID文字列から did:abt: プレフィックスを削除し、生のアドレスを返します。

パラメータ

  • did string (required) — 完全修飾されたDID文字列。

戻り値

  • address string — 生のDIDアドレス。

javascript
import { toAddress } from '@arcblock/did';

const did = 'did:abt:z1muQ3xqHQK2uiACHyChikobsiY5kLqtShA';
console.log(toAddress(did)); // z1muQ3xqHQK2uiACHyChikobsiY5kLqtShA

定数

DIDタイプとプレフィックスのための事前定義された定数。

定数説明
DID_PREFIXArcBlock DIDの標準文字列プレフィックス:"did:abt:"
DID_TYPE_ARCBLOCKデフォルトのArcBlock DID設定を表すDIDTypeオブジェクト。
DID_TYPE_ETHEREUMイーサリアム互換DIDのためのDIDTypeオブジェクト。
DID_TYPE_PASSKEYパスキーから派生したDIDのためのDIDTypeオブジェクト。

ライブラリ全体で使用される主要なTypeScriptの型定義。

  • DIDType object — DIDの暗号学的プロパティを定義するオブジェクト。これには、role、pk(キータイプ)、hash(ハッシュアルゴリズム)、および address(エンコーディングタイプ)が含まれます。
  • DIDTypeStr object — DIDType に似ていますが、プロパティ値は数値コードの代わりに人間が読める文字列です。
  • DIDTypeArg DIDTypeShortcut | DIDType — ショートカット文字列または DIDType オブジェクトのいずれかを取ることができる共用体型で、多くの関数で引数として使用されます。
  • DIDTypeShortcut string — 事前定義されたDID設定のためのリテラル文字列型:'default'、'arcblock'、'eth'、'ethereum'、または 'passkey'。
  • BytesType string | Buffer — 16進数エンコードされた文字列またはBufferのいずれかを取ることができる型で、バイナリデータを表します。