このページの内容
Air-Gap (オフライン QR 署名)
UR エンコードされた QR コードを使い、デバイスをオフラインのまま保つ署名フローを構築します。
仕組み
- リクエストを構築: チェーンごとに署名リクエストの UR ペイロードを作成し、アニメーション QR フレームとして描画
- デバイスでスキャン: デバイスが QR をスキャンし、画面上で詳細を確認して、オフラインで署名
- 署名を取得: デバイスが署名の UR をアニメーション QR として表示
- ブロードキャスト: アプリがレスポンスをスキャンして検証し、ネットワーク経由でブロードキャスト
チェーン別クイックスタート
| チェーン | リクエストタイプ (アプリ → デバイス) | レスポンスタイプ (デバイス → アプリ) |
|---|---|---|
| Ethereum と EVM | eth-sign-request | eth-signature |
| Bitcoin (PSBT) | crypto-psbt | crypto-psbt |
| Solana | sol-sign-request | sol-signature |
| Tron | tron-sign-request | tron-signature |
アカウントのエクスポートタイプ (デバイス → アプリ)
これらの UR タイプは、初期設定時にデバイスからアプリへアカウント情報をエクスポートする際に使用します:
| UR タイプ | 説明 |
|---|---|
crypto-hdkey | 単一の HD キーのエクスポート (BCR-2020-007 ) |
crypto-multi-accounts | 複数チェーンのアカウントをまとめてエクスポート |
API リファレンス
- 基本 API – 基本 UR タイプ:
CryptoHDKey,CryptoCoinInfo,CryptoKeypath
パッケージ
# Keystone SDK & UR registries
npm install @keystonehq/keystone-sdk @keystonehq/bc-ur-registry-eth
# UR primitives
npm install @ngraveio/bc-urサードパーティウォレットとの統合
既存のウォレットに OneKey Air-Gap を統合する場合は、QR スキャナーがこれらの UR タイプを次のデコーダーに振り分けるようにしてください: BC-UR v2 デコーダー (ファウンテン符号化)。従来の v1 デコーダーは使用しないでください。
スキャナーで受け付ける必要がある UR タイプ
| 方向 | UR タイプ | 使用場面 |
|---|---|---|
| デバイス → アプリ | crypto-psbt | BTC 署名済み PSBT |
| デバイス → アプリ | crypto-hdkey | 接続時の HD キーのエクスポート |
| デバイス → アプリ | crypto-multi-accounts | 接続時の複数アカウントのエクスポート |
| デバイス → アプリ | eth-signature | ETH 署名レスポンス |
| デバイス → アプリ | sol-signature | SOL 署名済みトランザクション |
| デバイス → アプリ | btc-signature | BTC 署名 (PSBT 以外) |
| アプリ → デバイス | eth-sign-request | ETH 署名リクエスト |
| アプリ → デバイス | sol-sign-request | SOL 署名リクエスト |
| アプリ → デバイス | crypto-psbt | BTC 未署名 PSBT |
| デバイス → アプリ | tron-signature | TRON 署名レスポンス |
| アプリ → デバイス | tron-sign-request | TRON 署名リクエスト |
よくある落とし穴: UR タイプの振り分け
一部のウォレットは 許可リスト を使用して、最新の BC-UR v2 デコーダーでデコードする UR タイプを決めます (ファウンテン符号には次を使用: @ngraveio/bc-ur)。許可リストにないタイプは、まったく異なるエンコード方式を使う従来の v1 デコーダーに渡され、スキャンが進まなくなることがあります。
スキャナーが「スキャンを続けてください」と表示したまま完了しない場合, その UR タイプが v2 の許可リストに含まれているか確認してください。
onekey-app-call-device (非公開プロトコル)
この onekey-app-call-device UR タイプは OneKey 内部用プロトコル で、デバイス管理操作に使用されます (例: getMultiAccounts, verifyAddress)。サードパーティウォレットでは このタイプを実装しないでください — 予告なく変更される場合があります。代わりに標準の Keystone SDK メソッドを使用してください。
デモと使用例
- React Native デモ: GitHub Air-Gap デモ
- スキャナー: AirGapScanner.tsx
- チェーン用ヘルパー: sdk/
注記: Air-Gap は設計上オフラインで動作します。オンラインのブラウザープレイグラウンドはありません。
最終更新日