Skip to Content

識別子

connectId でリクエストをルーティングし、 deviceId でデバイスの現在のシードに関連付け、 passphraseState で隠しウォレットに関連付けます。これらの値は相互に置き換えられません。

識別子のリファレンス

フィールド目的取得場所使用方法
connectIdトランスポートのルーティングキー成功した searchDevices().payload エントリーデバイスおよびウォレットメソッドの第 1 引数。再接続後は再列挙してください。
serialNo取得可能な場合の物理ハードウェア識別情報初期化後の検出結果; getDeviceState().payload.identity.serialNoUSB/BLE に依存せず機器を表示・照合します。ルーティングキーには使わないでください。
deviceId現在のシードの存続期間に対応する識別情報getDeviceState().payload.identity.deviceId; 成功した openWalletSessionウォレットメソッドの第 2 引数。リセット、復元、異なるウォレットを検出します。
passphraseState隠しウォレットのフィンガープリント成功した隠しウォレットの openWalletSession 結果その隠しウォレットのアドレス取得/署名リクエストに毎回渡します。deviceId とともに永続化します。
uuid非推奨の互換識別子一部のデバイス/検索結果ハードウェアの識別には serialNo、ルーティングには connectId を優先してください。初期化前は空の場合があります。
ファームウェア session_id内部のロック解除ハンドルSDK Core 内で管理読み取り、ログ記録、永続化、公開 API 呼び出しへの送信を行わないでください。
name, label, deviceType表示と機能に関する情報検出/デバイス状態一意の識別子ではなく、プロトコルやウォレットの識別情報の証拠にもなりません。

connectId — ルーティングキー

同じ物理機器でも USB 接続と BLE 接続では異なる connectId 値を使います。接続情報はトランスポートごとに分けて保持してください。接続 ID が物理シリアル番号であるとは限りません。USB 記述子は、ハードウェア識別情報の取得前にルーティングパスを提供する場合があります。

この値の内部構造は解釈しないでください。BLE の形式はホストプラットフォームによって異なります (Android のアドレスや iOS の peripheral UUID など)。別のトランスポートの形式へ変換したり、デバイスの真正性の証拠にしたりしてはいけません。

searchDevices は connectId: null を返す場合があります。デバイスを呼び出す前に、有効な接続 ID を持つ候補を選択してください。

deviceId — ウォレット識別情報の確認

const state = await HardwareSDK.getDeviceState(connectId); if (!state.success) throw new Error(state.payload.error); const deviceId = state.payload.identity.deviceId; if (!deviceId) throw new Error('Device has no wallet identity'); const address = await HardwareSDK.evmGetAddress(connectId, deviceId, { path: "m/44'/60'/0'/0/0", useEmptyPassphrase: true, showOnOneKey: true, }); if (!address.success) throw new Error(address.payload.error);

同じシードの標準ウォレットと隠しウォレットは、シードの存続期間に対応する同じ deviceId を共有します。隠しウォレットには、さらに passphraseState が必要です。

DeviceCheckDeviceIdError が発生した場合は、操作を停止してデバイス状態を更新してください。既存の関連付けを更新する前に、目的のウォレットをユーザーに確認します。キャッシュされた ID を黙って置き換えると、後のリクエストが別のウォレットに送られるおそれがあります。

device_id と deviceId

device_id は Protocol V1 の従来のフィールドで、getFeatures() の結果に含まれます。新しいコードでは、両方のプロトコルファミリーに対応する getDeviceState() から、正規化された identity.deviceId を読み取ってください。初期化前の検出では deviceId: null が返る場合があります。

隠しウォレットの関連付け

const opened = await HardwareSDK.openWalletSession(connectId, { mode: 'select-hidden', }); if (!opened.success) throw new Error(opened.payload.error); if (opened.payload.walletType !== 'hidden' || !opened.payload.passphraseState) { throw new Error('A hidden wallet was not opened'); } const address = await HardwareSDK.evmGetAddress(connectId, opened.payload.deviceId, { path: "m/44'/60'/0'/0/0", passphraseState: opened.payload.passphraseState, showOnOneKey: true, }); if (!address.success) throw new Error(address.payload.error);

関連付けはレスポンスの成功後にのみ永続化してください。ウォレット関連のアプリケーションデータとして保護し、パスフレーズ自体やファームウェアのセッションハンドルは永続化してはいけません。

passphraseState を省略すると、呼び出しは目的の隠しウォレットに関連付けられません。隠しウォレットには検証済みのフィンガープリント、標準ウォレットには useEmptyPassphrase: true を使用し、両方を併用してはいけません。

関連付けの不一致が発生した場合は停止し、ユーザーに目的のウォレットを再選択してもらってください。関連付けを上書きして署名リクエストを自動再実行してはいけません。

メソッドシグネチャ

パターン例
SDK ライフサイクル。接続引数なしinit, searchDevices, on/off, dispose
デバイスまたはウォレットの選択、 connectIdgetDeviceState, openWalletSession, deviceSettings, deviceVerify
ウォレット操作、 connectId + deviceIdevmGetAddress, btcSignTransaction, solSignTransaction
隠しウォレット操作ウォレット操作のパラメーターに passphraseState を追加

互換性のため識別子の省略を許すメソッドもあります。各メソッドの公開シグネチャに従い、複数デバイスを扱うアプリケーションでは対象を明示してください。UI 応答の関連付けには別のリクエスト識別情報を使用します。イベントから responseCorrelation をコピーしてください。詳細は UI イベントを参照してください。

最終更新日