バージョン v0.0.1 | 最終更新 2026-03-13
株式会社ハウディ・クリプト 代表取締役社長 浅田 一憲
Openloop SDK は、Openloop ハードウェアウォレットとの通信を行う TypeScript ライブラリです。
ライセンスについて: Openloop SDK の使用には、株式会社ハウディ・クリプトとのライセンス契約が必要です。ご要望に応じて SDK のカスタマイズも可能ですので、お気軽に info@haudi.co.jp までお問い合わせください。
最も重要な原則: 秘密鍵はデバイス内に保持され、外部に出ることはありません。SDK は APDU(Application Protocol Data Unit)コマンドの送受信のみを行います。署名はすべてデバイス内のセキュアエレメントで実行されます。
| レイヤー | 役割 |
|---|---|
| dApp | ユーザーインターフェース、トランザクション構築 |
| App Class | チェーン固有の APDU コマンド構築・レスポンス解析 |
| ITransport | デバイスとの物理的通信(USB/BLE/WebSocket 等) |
| Device | 秘密鍵管理、署名実行、ユーザー承認 |
0x6985 を返し、署名は実行されない| チェーン | App クラス | 楕円曲線 | BIP44 coin_type |
|---|---|---|---|
| Ethereum (EVM) | EthereumApp |
secp256k1 | 60' |
| Bitcoin | BitcoinApp |
secp256k1 | 0' (mainnet), 1' (testnet) |
| Solana | SolanaApp |
Ed25519 | 501' |
| TRON | TronApp |
secp256k1 | 195' |
| XRP Ledger | XrpApp |
Ed25519 / secp256k1 | 144' |
EthereumApp は Ethereum だけでなく、EVM
互換チェーンで使用できます。signPersonalMessage と
signTypedData の chainId
パラメータでチェーンを指定します。
SDK は 6 種類の接続方式を提供し、幅広いプラットフォームをカバーします。
| Transport | パッケージ | ユースケース |
|---|---|---|
| WebHID (USB) | @openloop/transport-webhid |
Chrome/Edge デスクトップ |
| Web Bluetooth | @openloop/transport-webble |
Chrome/Edge + Android |
| LocalWS | @openloop/transport-local |
全ブラウザ(Connect 経由) |
| Safari Extension | @openloop/transport-safari |
iOS Safari |
| USB HID (native) | @openloop/transport-usb |
Node.js / Electron |
| WalletConnect | @openloop/sdk-core 内蔵 |
全ブラウザ(リモート署名) |
詳細は Transport 選択ガイド を参照してください。
| パッケージ | 説明 | 依存関係 |
|---|---|---|
@openloop/sdk-core |
コアライブラリ(App, Types, Errors, Constants, WcTransport) | なし |
@openloop/transport-webhid |
WebHID (USB) Transport | sdk-core |
@openloop/transport-webble |
Web Bluetooth Transport | sdk-core |
@openloop/transport-local |
LocalWS Transport | sdk-core |
@openloop/transport-safari |
Safari Extension Transport | sdk-core (peer) |
@openloop/transport-usb |
Native USB HID Transport | sdk-core (peer), node-hid |
sdk-core はブラウザ API
やネイティブモジュールに依存しない純粋な TypeScript パッケージです。各
Transport パッケージがプラットフォーム固有の実装を提供します。
SDK とデバイス間の通信は APDU(Application Protocol Data Unit)コマンドで行われます。
[CLA] [INS] [P1] [P2] [Lc] [Data...]
| フィールド | サイズ | 説明 |
|---|---|---|
| CLA | 1 byte | クラスバイト(0xE0: Ledger 互換, 0xF0:
Openloop 独自) |
| INS | 1 byte | 命令コード |
| P1 | 1 byte | パラメータ 1(チャンキング制御等) |
| P2 | 1 byte | パラメータ 2(曲線選択等) |
| Lc | 1 byte | データ長 |
| Data | Lc bytes | コマンドデータ |
[Data...] [SW1] [SW2]
| フィールド | サイズ | 説明 |
|---|---|---|
| Data | 可変 | レスポンスデータ |
| SW1-SW2 | 2 bytes | ステータスワード(0x9000 = 成功) |
| CLA | 用途 |
|---|---|
0xE0 |
Ledger 互換コマンド(ETH, BTC getAddress, SOL, TRON, XRP) |
0xF0 |
Openloop 独自コマンド(chain_id 対応署名, PSBT, BTC xpub) |
詳細な APDU ステータスワードは エラー処理 を参照してください。