このページの内容
btcDeriveContextHash
選択した Bitcoin キー、アプリ、コンテキスト、ネットワークに対して、デバイス上で 32 バイトの Babylon コンテキストハッシュを導出します。レスポンスには、アプリで使用する機密値 secret が含まれます。
SDK 1.2.8-alpha.6 で利用できます。Classic 1s または Classic 1s Pure のファームウェア 3.21.0 以降と Protocol V1 が必要です。その他のデバイスシリーズと Protocol V2 はサポートされません。
const result = await HardwareSDK.btcDeriveContextHash(connectId, deviceId, params);呼び出し前の準備
- SDK を初期化し、デバイスを選択します。
- UI イベントハンドラーを登録し、目的のウォレットセッションを明示的に選択してください。
- 呼び出し前に、要求元アプリとそのオリジンについてユーザーの承認を得てください。
appNameは呼び出し元が指定するため、アプリ側でどのサイトやアプリがアクセスを要求しているかを確認する必要があります。
パラメータ
connectIdstring必須デバイス検出で返される接続識別子です。
deviceIdstring必須getDeviceState または openWalletSession で返されるウォレット識別情報です。
params.pathstring | number[]必須接続済み Bitcoin キーの BIP32 パスで、少なくとも 3 つの要素が必要です。スクリプトタイプはパスから推定されます。内部 IKM 導出パスではなく、接続済みキーのパスを使用してください。
params.appNamestring必須[a-z0-9-] に一致する 1–64 文字の ASCII 文字列です。
params.contextstring必須0x プレフィックスなしの、小文字かつ偶数長の 16 進数文字列で、1–1024 バイトを表します。空のコンテキストは無効です。SDK はデコードしたバイト列をデバイスに送信します。
params.networkstring必須bitcoin-mainnet、bitcoin-testnet、bitcoin-signet、bitcoin-regtest のいずれかを正確に指定します。testnet3 と testnet4 はどちらも bitcoin-testnet を使用します。ネットワークはパスから推定されません。
例
このコード断片は、SDK が初期化され、標準ウォレットが選択済みであることを前提とします。例の path、appName、context、network を、ユーザーが承認した値に置き換えてください。以下のコンテキストは 16 進数でエンコードしたデータの例です。
const result = await HardwareSDK.btcDeriveContextHash(connectId, deviceId, {
path: "m/84'/0'/0'/0/0",
appName: 'babylon-example',
context: '48656c6c6f',
network: 'bitcoin-mainnet',
useEmptyPassphrase: true,
});
if (result.success === false) throw new Error(result.payload.error);
const secret = result.payload.secret;
// Use only for the approved application and context. Do not log or persist it.この例では useEmptyPassphrase: true で標準ウォレットを明示的に選択します。隠しウォレットの場合は、接続済み Bitcoin アカウントの確認時に使用したものと同じ passphraseState を渡してください。通常の PIN、パスフレーズ、デバイス確認のフローが引き続き適用されます。
レスポンス
ペイロードを読む前に success を確認してください。成功時の payload.secret は、小文字の 16 進数 64 文字(32 バイト)です。以下のタブはレスポンスの型を示しており、実際の機密値ではありません。
成功
type SuccessResponse = {
success: true;
payload: {
secret: string; // 64 lowercase hexadecimal characters (32 bytes)
};
};エラーと機密値の扱い
path、appName、context、network が無効な場合、導出コマンドの送信前に CallMethodInvalidParameter(405)が返されます。未対応のデバイスシリーズまたは Protocol V2 では DeviceNotSupportMethod(415)が返されます。3.21.0 未満のファームウェアは更新が必要です。
デバイスでキャンセルすると、標準の success: false レスポンスが返されます。要求を停止し、payload.error と payload.code を処理してから、再度呼び出すか判断してください。
SDK は実際の secret をアプリに返します。機密値として扱い、ログ、テレメトリー、クリップボード、永続ストレージに含めないでください。導出はデバイス上で実行され、内部ウォレットキーはエクスポートされません。