Skip to Content
ハードウェア概念Protocol V1 と V2
このページの内容

Protocol V1 と V2

Hardware SDK 1.2.0 は 2 つの通信プロトコルを扱います。統合側は 1 つの JavaScript API を使い続けます。USB PID、BLE 名、製品文字列で分岐させないでください。

プロトコル V1プロトコル V2
現在のデバイスClassic, Mini, Touch, ProPro 2, Neo
SDK の検出方法接続後の実際の応答接続後の実際の Ping / プロトコル検査
公開メソッド既存の Hardware SDK メソッド同じメソッド。Core 内部で対応付け
呼び出しルール実運用ではデバイスごとに直列化デバイスごとの直列化が必須
ファームウェア更新firmwareUpdateV2 / firmwareUpdateV3firmwareUpdateV4
チェーンメソッドV1+V2 系と V1 専用系V1+V2 系のみ
デバイススナップショットgetDeviceState (getFeatures は非推奨)同じ

Stellar、Alephium、Nexa、Dynex、Nervos、SCDO、Benfen、Neo チェーンは V1 のみです。Pro 2 / Neo は未対応です。完全な対応表: 対応チェーン。デバイスの USB / BLE / Air-Gap: デバイス.

検出

SDK は次からプロトコルを確認します: 有効な接続。次から V1/V2 を推測しないでください:

  • USB PID / VID
  • BLE の広告名
  • 製品文字列または筐体

以前の結果を永続化する場合は、connectId ごとに関連付けます (同じ機器でも USB と BLE は別のエンドポイントです)。公開フィールドはデバイスオブジェクトの connectProtocol です。

connectProtocol を渡すと、厳密な要件として扱われ、SDK が黙ってもう一方のプロトコルにフォールバックすることはありません。

変わらない点

  • HardwareSDK.init({ env }) が選択するのは引き続きトランスポート (USB / BLE / 低レベル) であり、Protocol V1 と V2 のどちらを使うかではありません。
  • searchDevices → connectId → getDeviceState → チェーンメソッド。
  • PIN、パスフレーズ、ボタン確認は、引き続き UI_EVENT として届きます。uiResponse で応答するのは入力リクエストのみです。Core API ガイドを参照してください。

してはいけないこと

  • 同じデバイスで 2 つの業務呼び出しを同時に実行しないでください。
  • 切断やタイムアウトの後に、署名、消去、ファームウェア更新を自動で再実行しないでください。
  • レスポンスからファームウェアの session_id を読み取って保存しないでください。ウォレットの識別情報は deviceId + passphraseState です。ウォレットセッションを参照してください。
  • Protocol V2 の内部 API (DeviceSessionGet、DeviceInfoGet、…) を呼び出さないでください。これらは公開の CoreApi ではありません。

デバイス状態

getDeviceState を使用してください。getFeatures は Protocol V1 専用です (Classic / Mini / Touch / Pro)。Pro 2 と Neo は互換情報への変換前に拒否します。getDeviceState は引き続き V1 と V2 の Features 形式のスナップショットを含みます。

const state = await HardwareSDK.getDeviceState(connectId); if (!state.success) throw new Error(state.payload.error);

該当部分を更新する必要がある場合にのみ、scope: 'settings' または scope: 'firmware' を使用します。戻り値は引き続き完全なスナップショットです。

次へ

最終更新日