Openloop SDK

仕様書

バージョン v0.0.1 | 最終更新 2026-03-13
株式会社ハウディ・クリプト 代表取締役社長 浅田 一憲


アーキテクチャ概要

Openloop SDK とは

Openloop SDK は、Openloop ハードウェアウォレットとの通信を行う TypeScript ライブラリです。

ライセンスについて: Openloop SDK の使用には、株式会社ハウディ・クリプトとのライセンス契約が必要です。ご要望に応じて SDK のカスタマイズも可能ですので、お気軽に info@haudi.co.jp までお問い合わせください。

最も重要な原則: 秘密鍵はデバイス内に保持され、外部に出ることはありません。SDK は APDU(Application Protocol Data Unit)コマンドの送受信のみを行います。署名はすべてデバイス内のセキュアエレメントで実行されます。

レイヤー構成

Diagram 0

各レイヤーの役割

レイヤー 役割
dApp ユーザーインターフェース、トランザクション構築
App Class チェーン固有の APDU コマンド構築・レスポンス解析
ITransport デバイスとの物理的通信(USB/BLE/WebSocket 等)
Device 秘密鍵管理、署名実行、ユーザー承認

セキュリティモデル

SDK が行うこと

SDK が行わないこと

デバイス側のセキュリティ

対応チェーン

チェーン 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'

EVM 互換チェーン

EthereumApp は Ethereum だけでなく、EVM 互換チェーンで使用できます。signPersonalMessagesignTypedDatachainId パラメータでチェーンを指定します。

Transport 接続方式

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 選択ガイド を参照してください。

npm パッケージ一覧

パッケージ 説明 依存関係
@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

依存関係の図

Diagram 1

sdk-core はブラウザ API やネイティブモジュールに依存しない純粋な TypeScript パッケージです。各 Transport パッケージがプラットフォーム固有の実装を提供します。

APDU プロトコル概要

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 バイト

CLA 用途
0xE0 Ledger 互換コマンド(ETH, BTC getAddress, SOL, TRON, XRP)
0xF0 Openloop 独自コマンド(chain_id 対応署名, PSBT, BTC xpub)

詳細な APDU ステータスワードは エラー処理 を参照してください。

次のステップ