コンテンツにスキップ

鍵コマンドラインガイド

Bursaは、ニーモニックから個別の鍵を導出するために使用できます。

鍵の種類:
ルートキー アカウントキー ペイメントキー
ステークキー プールコールドキー ポリシーキー
Calidusキー VRFキー KESキーペア
DRepキー 憲法委員会コールドキー 憲法委員会ホットキー
Dijkstra BLSステークプール登録鍵

ニーモニックから個別の鍵を導出するためのBursaコマンドラインガイド。

ニーモニックは以下の方法で提供できます:

  1. —mnemonicフラグ
  2. MNEMONIC環境変数
  3. —mnemonic-fileフラグ
  4. デフォルトファイル “seed.txt”

鍵はCardano CIP標準に従って導出され、cardano-cliやその他のツールで使用するのに適したbech32形式で出力されます。

鍵の種類別の導出パス:

  • CIP-1852: root, account, payment, stake (m/1852’/1815’/…)
  • CIP-1853: pool-cold (m/1853’/1815’/…)
  • CIP-1855: policy (m/1855’/1815’/…)
  • CIP-0105: drep, committee-cold, committee-hot (m/1852’/1815’/account’/role/…)
  • CIP-88/151: calidus (m/1852’/1815’/account’/0/index, SPO認証)

HDパスから導出した署名鍵をエクスポートすると、Bursaは拡張Ed25519-BIP32エンベロープに署名鍵を書き込みます。ルート、アカウント、ペイメント、ステーク、ガバナンス、ポリシー、マルチシグ、Calidusの署名鍵ファイルでは、*_ExtendedSigningKeyShelley_ed25519_bip32などのエンベロープタイプを使用し、5880で始まる128バイトのCBORを使用します。従来の非拡張ファイルは、5820で始まる32バイトのCBORを使用します。

プールコールド署名ファイルは例外です。新しいエクスポートでは、署名鍵エンベロープに StakePoolSigningKey_ed25519、検証鍵エンベロープに StakePoolVerificationKey_ed25519 を使用します。読み込み時は従来の StakePoolSigningKeyShelley_ed25519 と StakePoolVerificationKeyShelley_ed25519 も受け付けますが、Bursaはこれらのファイルを自動的に書き換えません。エクスポートされたプールコールド検証鍵は、プールコールド署名シードから導出された標準Ed25519のアイデンティティであり、運用証明書はこのアイデンティティを使用します。オプションの拡張プールコールド表現でも、同じアイデンティティが保持されます。

秘密鍵ファイル(.skey)へのアクセスは所有者に限定します。Unixではグループまたはその他のユーザー向けの権限ビットを設定できません。Windowsでは所有者に限定した制限付きDACLが必要です。Bursaは安全でない秘密鍵ファイルを ErrInsecureFileMode により拒否します。ディレクトリにこの権限チェックで拒否された .skey ファイルしかない場合、Bursaはその権限エラーをディレクトリのエラーとして報告します。公開鍵の .vkey ファイルや運用証明書などの公開アーティファクトは公開鍵の読み込み経路を使用するため、この秘密鍵のアクセス権チェックの対象外です。

鍵ファイルを読み込むとき、Bursaは通常ファイルだけを受け付け、UnixのシンボリックリンクとWindowsの再解析ポイントを拒否します。Bursaは鍵入力のサイズを実装がサポートする最大値以内に制限し、その値を超える鍵ファイルを処理開始前に拒否します。公開鍵ファイルは公開鍵の読み込み経路で引き続き読み込めます。Bursaは秘密鍵マテリアルを実際に読み込む場合にだけ、上記の所有者専用権限チェックを適用します。

非拡張タイプを宣言する従来のHD導出署名鍵ファイルを、typeフィールドだけ変更して修復しないでください。Bursaはこれらのファイルを自動的に書き換えません。元のニーモニックから署名鍵ファイルと検証鍵ファイルを同時に再生成し、署名前に生成されたアドレス、鍵ハッシュ、または現在使用しているその他のアイデンティティと比較してください。

ルートキーは、他のすべての鍵が導出されるマスターキーです。 出力は、—signing-key-fileが指定されていない限り、bech32形式 (root_xskプレフィックス) です。

ターミナルウィンドウ
./bursa key root --mnemonic "word1 word2 ..."

署名鍵ファイル付きルートキーの例:

⚠️ 以下のパスを調整してください。

ターミナルウィンドウ
./bursa key root --signing-key-file /path/root.skey

アカウントキーはCIP-1852のパスに従います: m/1852’/1815’/account’ 出力は、—signing-key-fileが指定されていない限り、bech32形式 (acct_xskプレフィックス) です。

ターミナルウィンドウ
./bursa key account --mnemonic "word1 word2 ..." --index 0

ペイメントキーはCIP-1852のパスに従います: m/1852’/1815’/account’/0/index 出力は、鍵ファイルが指定されていない限り、bech32形式 (addr_xskプレフィックス) です。

ターミナルウィンドウ
./bursa key payment --mnemonic "word1 word2 ..." --account-index 0 --index 0

ステークキーはCIP-1852のパスに従います: m/1852’/1815’/account’/2/index 出力は、鍵ファイルが指定されていない限り、bech32形式 (stake_xskプレフィックス) です。

ターミナルウィンドウ
./bursa key stake --mnemonic "word1 word2 ..." --account-index 0 --index 0

プールコールドキーはCIP-1853のパスに従います: m/1853’/1815’/0’/index’ これらの鍵は、ステークプールオペレーターの長期的なアイデンティティ鍵として使用されます。 出力は、鍵ファイルが指定されていない限り、bech32形式 (pool_xskプレフィックス) です。

ターミナルウィンドウ
./bursa key pool-cold --mnemonic "word1 word2 ..." --index 0

ポリシーキーはCIP-1855のパスに従います: m/1855’/1815’/policy_ix’ これらの鍵は、ネイティブアセットのミント/バーンポリシーに使用されます。 出力は、鍵ファイルが指定されていない限り、bech32形式 (policy_xskプレフィックス) です。

ターミナルウィンドウ
./bursa key policy --mnemonic "word1 word2 ..." --index 0

CalidusキーはCIP-88/CIP-151で定義されたSPOオンチェーン認証ホットキーです。ペイメントキーと同じ導出パスを使用します: m/1852’/1815’/account’/0/index

この鍵は機能的にはペイメントキーと同一ですが、SPOアイデンティティのために異なるbech32プレフィックス (calidus_xsk/calidus_xvk) と異なるcardano-cliテキストエンベロープタイプを使用します。

出力は、鍵ファイルが指定されていない限り、bech32形式 (calidus_xskプレフィックス) です。

ターミナルウィンドウ
./bursa key calidus --mnemonic "word1 word2 ..." --account-index 0 --index 0

鍵ファイル付きCalidusキーの例

⚠️ 以下のパスを調整してください。

ターミナルウィンドウ
./bursa key calidus --signing-key-file /path/calidus.skey --verification-key-file /path/calidus.vkey

VRF (検証可能ランダム関数) キーペア

Section titled “VRF (検証可能ランダム関数) キーペア”

VRFキーは、Praosコンセンサスプロトコルにおけるリーダー選出のためにステークプールオペレーターによって使用されます。シードはニーモニックから決定論的に導出されるため、鍵を復元できます。

出力には、鍵ファイルが指定されていない限り、署名鍵 (vrf_sk) と検証鍵 (vrf_vk) の両方がbech32形式で含まれます。

ターミナルウィンドウ
./bursa key vrf --mnemonic "word1 word2 ..." --index 0

鍵ファイル付きVRFの例

⚠️ 以下のパスを調整してください。

ターミナルウィンドウ
./bursa key vrf --signing-key-file /path/vrf.skey --verification-key-file /path/vrf.vkey

VRF検証鍵は期待される長さを満たす必要があります。VRF署名鍵には、シード単体またはシードと公開鍵を連結した形式を使用できます。シードと公開鍵の形式では、Bursaがシードから導出した公開鍵と埋め込まれた公開鍵を照合します。Bursaは長さが不正な鍵やシードと公開鍵が一致しない鍵を拒否し、エンベロープを生成しません。


KESキーは、Praosコンセンサスプロトコルにおけるブロック署名のためにステークプールオペレーターによって使用されます。KESは、現在の鍵が侵害されても過去の署名は侵害されない、フォワードセキュアな署名を提供します。

この実装ではCardanoの深さ6を使用し、64の時間期間を提供します。 シードはニーモニックから決定論的に導出されるため、鍵を復元できます。

出力には、鍵ファイルが指定されていない限り、署名鍵 (kes_sk、608バイト) と検証鍵 (kes_vk、32バイト) の両方がbech32形式で含まれます。

ターミナルウィンドウ
./bursa key kes --mnemonic "word1 word2 ..." --index 0

鍵ファイル付きKESキーの例

⚠️ 以下のパスを調整してください。

ターミナルウィンドウ
./bursa key kes --signing-key-file /path/kes.skey --verification-key-file /path/kes.vkey

KES検証鍵は期待される長さを満たす必要があります。KES署名鍵はCardano KES depthとKES secret-key sizeの要件を満たす必要があります。Bursaは長さが不正な検証鍵、無効なKES depth、または無効なKES secret-key sizeを含む鍵を拒否し、エンベロープを生成しません。


DRepキーはCIP-0105のパスに従います: m/1852’/1815’/account’/3/index これらの鍵は、Delegated Representativeとしてのガバナンス参加に使用されます。 出力は、鍵ファイルが指定されていない限り、bech32形式 (drep_xskプレフィックス) です。

ターミナルウィンドウ
./bursa key drep --mnemonic "word1 word2 ..." --account-index 0 --index 0

鍵ファイル付きDRepキーの例

⚠️ 以下のパスを調整してください。

ターミナルウィンドウ
./bursa key drep --signing-key-file /path/drep.skey --verification-key-file /path/drep.vkey

委員会コールドキーはCIP-0105のパスに従います: m/1852’/1815’/account’/4/index これらの鍵は、憲法委員会のメンバーシップ (長期的なアイデンティティ) に使用されます。 出力は、鍵ファイルが指定されていない限り、bech32形式 (cc_cold_xskプレフィックス) です。

ターミナルウィンドウ
./bursa key committee-cold --mnemonic "word1 word2 ..." --account-index 0 --index 0

鍵ファイル付き憲法委員会コールドキーの例

⚠️ 以下のパスを調整してください。

ターミナルウィンドウ
./bursa key committee-cold --signing-key-file /path/committee-cold.skey --verification-key-file /path/committee-cold.vkey

委員会ホットキーはCIP-0105のパスに従います: m/1852’/1815’/account’/5/index これらの鍵は、憲法委員会の投票 (運用鍵) に使用されます。 出力は、鍵ファイルが指定されていない限り、bech32形式 (cc_hot_xskプレフィックス) です。

ターミナルウィンドウ
./bursa key committee-hot --mnemonic "word1 word2 ..." --account-index 0 --index 0

鍵ファイル付き憲法委員会ホットキーの例

⚠️ 以下のパスを調整してください。

ターミナルウィンドウ
./bursa key committee-hot --signing-key-file /path/committee-hot.skey --verification-key-file /path/committee-hot.vkey

Dijkstra BLSステークプール登録鍵

Section titled “Dijkstra BLSステークプール登録鍵”

bursa key bls は、Dijkstra時代のLeiosおよびPerasでステークプールを登録するためのBLS12-381 MinSig鍵と所有証明を生成します。このコマンドは、他の鍵コマンドで使用するニーモニックやニーモニックファイルを読み取らず、暗号学的に安全な乱数から新しい鍵の素材を生成します。

ターミナルウィンドウ
./bursa key bls --signing-key-file /path/to/bls.skey

3つの出力先を指定する例:

ターミナルウィンドウ
./bursa key bls --signing-key-file bls.skey --verification-key-file bls.vkey --output-file bls-registration.json

--signing-key-file は必須です。--verification-key-file と --output-file は任意です。

  • --signing-key-file は、BLS署名鍵を書き込むファイルのパスです。Bursaは署名鍵をcardano-cli互換のBlsSigningKey_bls12-381-BLS-Signature-Minimal-Signature-Sizeエンベロープに格納します。
  • --verification-key-file は、BLS検証鍵を書き込むファイルのパスです。指定した場合、Bursaは検証鍵をcardano-cli互換のBlsVerificationKey_bls12-381-BLS-Signature-Minimal-Signature-Sizeエンベロープに格納します。
  • --output-file は、登録用JSONを書き込むファイルのパスです。省略すると、Bursaは登録用JSONを標準出力に書き込みます。

登録用JSONは次のフィールドを出力します。Bursaは出力前に生成した所有証明を検証します。

  • publicKey: 96バイトの公開鍵を表す小文字の16進数文字列
  • possessionProof: 48バイトの所有証明を表す小文字の16進数文字列

Bursaは指定した各生成先ファイルを、所有者だけが読み書きできる権限で作成します。--signing-key-file のファイルはステークプールの認証情報として厳重に保護し、安全なバックアップを作成してください。

--signing-key-file、--verification-key-file、--output-file に指定する3つのパスは、同じ生成先を指してはいけません。Bursaは正規化したパスが一致する場合や、シンボリックリンクをたどった結果が同じファイルになる場合に、パスの衝突を拒否します。


その他のBursaコマンドを探索

Bursaコマンドカテゴリ

  1. wallet   - Cardanoウォレットの管理に必要なウォレットおよびファイルを生成するコマンド
  2. api     - APIを実行するコマンド
  3. kes-agent     - KESエージェントを実行するコマンド
  4. cert    - 各種Cardano証明書を生成するコマンド
  5. hash     - Cardanoで使用される暗号ハッシュを生成するコマンド
  6. script    - マルチシグネチャ操作用のコマンド
  7. address - Cardanoアドレスを操作するコマンド
  8. key     - ニーモニックから個別の鍵を導出するコマンド


Doc Holiday logo

Docs authored by Doc Holiday