Version v0.6.11 | Last updated August 8, 2026
Haudi Crypto,
Inc. — Representative Director, Kazunori Asada
Openloop Connect - Companion application for the Openloop hardware wallet
Openloop Connect is the bridge software that connects the Openloop hardware wallet with dApps (decentralized applications) around the world.
Primary roles:
WalletConnect is an open protocol for connecting wallets and dApps.
WalletConnect is becoming the de facto global standard in the blockchain industry.
| Platform | OS | Framework | Connection Method | Status |
|---|---|---|---|---|
| Desktop | Windows | Electron | USB / BLE | ✓ Supported |
| Desktop | macOS | Electron | USB / BLE | ✓ Supported |
| Desktop | Linux | Electron | USB / BLE | ✓ Supported |
| Mobile | iOS | React Native (Expo) | BLE | ✓ Supported |
| Mobile | Android | React Native (Expo) | BLE | ✓ Supported |
| Connection Method | Description | Supported Platforms |
|---|---|---|
| Deep Link | Select “Openloop Connect” from a dApp’s wallet list to connect automatically (recommended) | All platforms |
| QR Code | Scan the QR code shown by the dApp | All platforms |
| Universal Link | Launch the app directly from an HTTPS link | iOS / macOS |
| Clipboard | Copy and paste a WalletConnect URI | All platforms |
| LocalWebSocket | A browser extension connects directly via ws://127.0.0.1 | Desktop |
| Safari Web Extension | Connect directly over BLE from iOS Safari | iOS |
Openloop Connect adopts a cross-platform architecture that supports five platforms from a single codebase.
| Layer | Technology | Description |
|---|---|---|
| Shared logic | TypeScript | WalletConnect, APDU, protocol handlers |
| Desktop UI | Electron + React | Windows / macOS / Linux |
| Mobile UI | React Native (Expo) | iOS / Android |
| BLE communication | Platform Native | Each OS’s BLE API |
| USB communication | node-hid | Desktop only |
| OTA | Secure update | Firmware update protocol |
| LocalWS | ws (Node.js) | Browser extension bridge |
| Safari Extension | Swift + Manifest V3 | iOS BLE extension |
| Android Background | HeadlessJsTaskService | Foreground service |
A feature that manually disconnects only the device while keeping the WalletConnect session alive, so that other apps (such as Ledger Live) can access the device.
| Platform | Disconnect Method | Reconnect Method |
|---|---|---|
| Desktop (USB) | Disconnect button → USB HID close | Reconnect button → resume USB polling |
| Mobile (BLE) | Disconnect button → BLE disconnect | Automatic (lazy connect on the next operation) |
Signing confirmation UI:
Notifications:
Openloop Connect supports the use of multiple Openloop hardware wallets.
On mobile, you can “register” multiple Openloop devices and “select” which device to use.
Data structure:
interface RegisteredWallet {
id: string // Unique ID (UUID)
deviceId: string // BLE device ID
deviceName: string // "Openloop (E854)"
address: string // Ethereum address "0x..."
createdAt: number // Registration timestamp
lastUsedAt: number // Last-used timestamp
}Wallet management flow:
BLE mutual exclusion:
Device identification:
On desktop, the USB-connected Openloop device is automatically detected and used.
Multi-device use:
Detection method:
| Item | Mobile (BLE) | Desktop (USB) |
|---|---|---|
| Registration required | ✓ Required | ✗ Not required |
| Switching method | In-app selection | Physically swap the connection |
| Simultaneous connections | 1 device | 1 device |
| Reconnect | Automatic (selected device) | Automatic (connected device) |
| Item | Value |
|---|---|
| WalletConnect | 2.0 |
| Relay Server | wss://relay.walletconnect.com |
| Namespace | CAIP-2 Identifier | Description |
|---|---|---|
| eip155 | eip155:1, eip155:11155111, … | Ethereum/EVM chains |
| bip122 | bip122:000000000019d6689c085ae165831e93, … | Bitcoin chains |
| solana | solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp, … | Solana |
| tron | tron:0x2b6653dc, … | TRON |
| Chain | CAIP-2 Identifier |
|---|---|
| Ethereum Mainnet | eip155:1 |
| Ethereum Sepolia | eip155:11155111 |
| Other EVM chains | Supported dynamically by Chain ID |
| Method | Description | Status |
|---|---|---|
| eth_sendTransaction | Send a transaction | ✓ |
| eth_signTransaction | Sign a transaction | ✓ |
| eth_sign | Sign a message (deprecated) | ✓ |
| personal_sign | Sign a message (EIP-191) | ✓ |
| eth_signTypedData | Sign typed data | ✓ |
| eth_signTypedData_v3 | Sign typed data v3 | ✓ |
| eth_signTypedData_v4 | Sign typed data v4 (EIP-712) | ✓ |
| wallet_getCapabilities | Query wallet capabilities (EIP-5792) | ✓ |
The wallet_getCapabilities method is supported. It is
used when a dApp queries the wallet’s advanced capabilities (atomic
batch, paymaster, etc.).
Response format:
{
"0x1": {},
"0xaa36a7": {}
}As a hardware wallet, it returns no special capabilities (empty
objects). The dApp falls back to the standard
eth_sendTransaction.
| Event | Description |
|---|---|
| chainChanged | Chain change notification |
| accountsChanged | Account change notification |
| Chain | CAIP-2 Identifier | Genesis Hash (first 32 chars) |
|---|---|---|
| Bitcoin Mainnet | bip122:000000000019d6689c085ae165831e93 | 000000000019d6689c085ae165831e93 |
| Bitcoin Testnet3 | bip122:000000000933ea01ad0ee984209779ba | 000000000933ea01ad0ee984209779ba |
| Method | Description | Status |
|---|---|---|
| getAccountAddresses | Get the list of BIP32-derived addresses | ✓ |
| signPsbt | Sign a PSBT (BIP-174) | ✓ |
| signMessage | Sign a message (BIP-137) | ✓ |
| sendTransfer | Send Bitcoin | ✓ |
Specification:
Implementation:
Performance:
Specification:
Processing flow:
Supported formats:
| Format | Description | Status |
|---|---|---|
| ECDSA (BIP-137) | Traditional Bitcoin message signing | ✓ |
| BIP-322 | Generic message signing (P2WPKH witness format) | ✓ |
ECDSA (BIP-137):
BIP-322:
Specification:
Processing flow:
| Chain | CAIP-2 Identifier |
|---|---|
| Mainnet Beta | solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp |
| Devnet | solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1 |
| Method | Description | Status |
|---|---|---|
| solana_signTransaction | Sign a transaction | ✓ |
| solana_signAllTransactions | Sign multiple transactions at once | ✓ |
| solana_signAndSendTransaction | Sign + broadcast | ✓ |
| solana_signMessage | Sign a message (off-chain) | ✓ |
Ed25519 signatures. BIP44 path: m/44’/501’/account’/0’
| Chain | CAIP-2 Identifier |
|---|---|
| Mainnet | tron:0x2b6653dc |
| Shasta Testnet | tron:0x94a9059e |
| Method | Description | Status |
|---|---|---|
| tron_signTransaction | Sign a transaction | ✓ |
| tron_signMessage | Sign a message | ✓ |
A local WebSocket server that lets browser extensions (such as the Openloop Web SDK) connect to the hardware wallet through Openloop Connect.
| Item | Value |
|---|---|
| Protocol | WebSocket (ws://) |
| Address | 127.0.0.1 (localhost only) |
| Port | 21320 (default) |
| Data format | JSON-RPC 2.0 |
| Platform | Implementation |
|---|---|
| Desktop (Electron) | Node.js ws library |
| Mobile (Android) | WebSocket server inside a HeadlessJsTaskService |
| Mobile (iOS) | Via the Safari Web Extension (see §10) |
Host header rejects anything other than
localhost / 127.0.0.1 (defense against DNS
rebinding attacks).At the WebSocket handshake, the following are evaluated in order; if any of them is rejected, the connection is dropped with HTTP 403 Forbidden.
| # | Check | Rejection Condition |
|---|---|---|
| 1 | Host header |
Anything other than localhost /
127.0.0.1 |
| 2 | Optional token | A token is configured and the query ?token=... does not
match |
| 3 | LocalWS toggle or PKCS#11 toggle | The user has turned it OFF for the classification by origin (see 9.4) |
| 4 | Origin allowlist | A LocalWS Web Origin that is not in the registered list (when the list is empty, all are allowed) |
The toggles and allowlist can be changed dynamically from the Openloop Connect settings screen, and changes take effect from the next new connection. Established sessions are not disconnected (active-session protection).
The verifyClient hook is called only on a new
handshake. Therefore, even if the user flips a toggle during a
connection:
WebSocket() calls are rejected with 403This is a design decision to avoid suddenly breaking Adobe Acrobat in the middle of PDF signing, or Firefox in the middle of TLS client authentication (because the PKCS#11 library goes through the same server, the same protection applies to PKCS#11 sessions).
The server classifies connections into two types based on the
Origin header of the handshake.
| Origin Value | Classification | Applicable Toggle | Allowlist |
|---|---|---|---|
openloop-pkcs11 |
Bundled PKCS#11 library | PKCS#11 toggle | Not applied |
http://... / https://... / other |
Web dApp / SDK / native app | LocalWS toggle | Applied |
The PKCS#11 library sends the fixed string
Origin: openloop-pkcs11. This makes it possible to control
PKCS#11 access independently of the Web-facing toggle and allowlist
(turning PKCS#11 OFF does not block dApp connections from the Web, and
vice versa).
The user can register allowed origins on the Openloop Connect settings screen. dApp developers must have their origin registered before connecting.
An Origin follows the WHATWG URL Standard’s Origin (RFC 6454 §4) and is a string combining the following three elements:
<scheme>://<host>[:<port>]
http or
httpsExamples:
| Input | Stored Origin |
|---|---|
https://dapp.example.com |
https://dapp.example.com |
https://dapp.example.com/path |
https://dapp.example.com (path discarded) |
https://dapp.example.com:8443 |
https://dapp.example.com:8443 |
https://www.example.com |
https://www.example.com |
https://example.com |
https://example.com (distinct from the previous
row) |
▲ An Origin does not include the path.
https://example.com/dappandhttps://example.com/adminare treated as the same Origin, so registering it makes both connectable. dApp providers should use a domain where user content and the dApp do not coexist (or separate them by subdomain).
*.example.com, etc.) are not
supportedOrigin: null (sandboxed iframe / file://,
etc.) is subject to exact matching, so it passes only when the list is
emptyThe browser does not allow JavaScript to rewrite the
Origin header of a WebSocket handshake. Therefore, a
malicious web page cannot impersonate another site’s Origin. Note,
however, that native processes can set an Origin
freely, so the allowlist is only a protection against browser-originated
dApps.
ws://127.0.0.1:21320403 Forbidden), guide the user
to check the following:
The retry interval, caching, etc. on connection failure are entirely up to the dApp’s design. Openloop Connect does not show a connection-approval UI (allowlist registration is a one-time operation).
A Safari Web Extension for connecting to the Openloop hardware wallet over BLE from iOS Safari. The industry’s first Safari BLE extension for a hardware wallet.
| Component | Technology | Role |
|---|---|---|
| Extension Process | Swift + CoreBluetooth | BLE communication |
| Content Script | JavaScript | Inject the Web3 provider |
| Background Script | JavaScript (Manifest V3) | Message routing |
| Popup | HTML/CSS/JS | User UI |
| Container App | React Native (Expo) | BLE permission management |
dApp → Content Script → Background → Native Messaging → Swift BLE → Openloop
The Android version uses a foreground service to keep the WebSocket server and the BLE connection alive even when the app is in the background.
| Component | Description |
|---|---|
| WsServerService | HeadlessJsTaskService + PARTIAL_WAKE_LOCK + WIFI_LOCK |
| Notification | Runs as a foreground service via a persistent notification |
| Permissions | FOREGROUND_SERVICE, FOREGROUND_SERVICE_CONNECTED_DEVICE, WAKE_LOCK |
Openloop Connect provides the ability to update the Openloop device’s firmware wirelessly or over USB.
| Transport | Platform |
|---|---|
| USB | Desktop |
| BLE | Mobile (iOS/Android) |
| Target | Description |
|---|---|
| Main firmware | The device’s core features (wallet, passkey, etc.) |
| Recovery firmware | FW for recovery mode (OTA Recovery Mini) |
| Item | Specification |
|---|---|
| Chunk verification | Split the transferred data and verify integrity |
| Final verification | SHA-256 hash |
| Signature verification | RSA-3072 (device side) |
On desktop, the HID transport is used preferentially.
Service UUIDs:
| Item | UUID |
|---|---|
| Service | 13D63400-2C97-0004-0000-4C6564676572 |
| Notify Characteristic | 13D63400-2C97-0004-0001-4C6564676572 |
| Write Characteristic | 13D63400-2C97-0004-0002-4C6564676572 |
Frame protocol:
An industry-standard BLE frame-splitting protocol.
| Item | Value |
|---|---|
| Frame prefix | 0x05 |
| First frame header | 5 bytes (PREFIX + INDEX + SIZE) |
| Continuation frame header | 3 bytes (PREFIX + INDEX) |
| MTU | 247 bytes |
| Mode | VID | PID | Notes |
|---|---|---|---|
| Native mode | 0x303A | 0x8341 | Espressif VID / Openloop PID |
| Compatibility mode | 0x2C97 | 0x1011 | Compatible VID / Nano S-compatible PID |
HID response corruption detection:
Because the BLE connection may drop during BIP122’s getAccountAddresses (about 8 seconds), automatic reconnect is performed in the following methods:
APDU distinguishes command groups by their CLA (class byte). Within the same CLA, the INS (instruction byte) is shared across currencies and purposes, and the target currency is determined by the request parameters (path, data body). Therefore, the INS values shown separately for “Ethereum,” “Solana,” “TRON,” etc. in the following sections are not different commands when the CLA is the same; they are the same INS reused per currency.
A set of industry-standard commands based on Ledger compatibility, with Openloop’s own extensions added (ERC20/NFT information provision, EIP-712 streaming, EIP-7702, etc.). The CLA is 0xE0 in common, and the INS is shared via currency determination.
Handshake / read:
| INS | Command | Description |
|---|---|---|
| 0x01 | GET_VERSION | Get the firmware version |
| 0xD8 | OPEN_APP | Switch apps (Safe/MetaMask compatible) |
Ethereum (EVM):
| INS | Command | Description |
|---|---|---|
| 0x02 | GET_PUBLIC_KEY | Get the public key / address |
| 0x04 | SIGN | Sign a transaction |
| 0x08 | SIGN_PERSONAL_MESSAGE | Sign a message (EIP-191) |
| 0x0C | SIGN_EIP712 | EIP-712 signing |
| 0x14 | PROVIDE_ERC20_TOKEN_INFORMATION | Provide ERC20 token information |
| 0x16 | PROVIDE_NFT_INFORMATION | Provide NFT collection information |
| 0x1A | EIP712_STRUCT_DEFINITION | EIP-712 struct definition (streaming) |
| 0x1C | EIP712_STRUCT_IMPLEMENTATION | EIP-712 struct implementation (streaming) |
| 0x1E | EIP712_FILTERING | EIP-712 display filtering |
| 0x34 | SIGN_AUTHORIZATION | EIP-7702 authorization signing |
XRP: Address retrieval and transaction signing share the same INS as Ethereum (0x02 / 0x04); the request’s path and body cause it to be processed as XRP.
Bitcoin (Ledger-compatible flow):
| INS | Command | Description |
|---|---|---|
| 0x40 | GET_WALLET_PUBLIC_KEY | Get the public key / address |
| 0x42 | GET_TRUSTED_INPUT | Generate a Trusted Input (UTXO verification) |
| 0x44 | UNTRUSTED_HASH_TX_INPUT_START | Start signing-hash computation |
| 0x48 | UNTRUSTED_HASH_SIGN | Sign an input |
| 0x4A | UNTRUSTED_HASH_TX_INPUT_FINALIZE | Finalize signing-hash computation |
As part of CLA=0xE0, dedicated Solana INS values are assigned.
| INS | Command | Description |
|---|---|---|
| 0x05 | GET_PUBKEY | Get the public key (Ed25519) |
| 0x06 | SIGN_MESSAGE | Sign a transaction |
| 0x07 | SIGN_OFFCHAIN_MESSAGE | Sign an off-chain message |
Part of CLA=0xE0. GET_ADDRESS / SIGN_TX share the same INS as the EVM family (0x02 / 0x04) and are processed as TRON based on the request contents.
| INS | Command | Description |
|---|---|---|
| 0x02 | GET_ADDRESS | Get the TRON address (Base58Check) |
| 0x04 | SIGN_TX | Sign a transaction (SHA-256) |
| 0x08 | SIGN_PERSONAL_MESSAGE | Sign a message |
Read-only extended-public-key and master-fingerprint retrieval. The signing commands (register/get address/sign PSBT) are not implemented in this version; Bitcoin signing uses the Ledger-compatible flow in 14.1 and the Openloop PSBT flow in 14.5.
| INS | Command | Description |
|---|---|---|
| 0x00 | GET_EXTENDED_PUBKEY | Get the extended public key (xpub) |
| 0x05 | GET_MASTER_FINGERPRINT | Get the master fingerprint |
| INS | Command | Description |
|---|---|---|
| 0x08 | SIGN_PERSONAL_MESSAGE | Sign a message (CLA_OPENLOOP version, with chain_id) |
| 0x0C | SIGN_EIP712 | EIP-712 signing (CLA_OPENLOOP version, with chain_id) |
| 0x70 | SIGN_PSBT | Receive PSBT data and start signing |
| 0x71 | GET_SIGNED_PSBT | Get the signed PSBT |
| 0x72 | GET_ACCOUNT_XPUB | Get the account xpub |
| 0x73 | SIGN_MESSAGE | Sign a message (BIP-137) |
| 0xA0 | GET_DEVICE_INFO | Get device information |
| INS | Command | Description |
|---|---|---|
| 0x01 | OPEN_APP / GET_APP_INFO | Query the current app (Lc=0) / switch apps (Lc>0) |
| 0xA7 | GET_BATTERY_STATUS | Get the battery status |
For details, see
BIP122_signPsbt_Implementation_Spec.md.
openloop-connect/
├── packages/
│ ├── shared/ # Shared TypeScript code
│ │ └── src/
│ │ ├── apdu/ # APDU protocol
│ │ │ ├── ethereum-app.ts
│ │ │ ├── bitcoin-app.ts
│ │ │ ├── solana-app.ts # Solana APDU
│ │ │ └── tron-app.ts # TRON APDU
│ │ ├── bitcoin/ # Shared Bitcoin logic
│ │ │ ├── address-cache.ts # Address ↔ path mapping cache
│ │ │ ├── address-service.ts # Gap-limit scan / address reverse lookup
│ │ │ ├── bip32-derive.ts # BIP32 public key derivation
│ │ │ ├── bip322.ts # BIP-322 message-signing utilities
│ │ │ ├── tx-service.ts # PSBT build / UTXO fetch / broadcast
│ │ │ └── index.ts
│ │ ├── ethereum/ # Ethereum-related utilities
│ │ │ ├── index.ts
│ │ │ ├── mini-ethers.ts
│ │ │ ├── transaction.ts
│ │ │ └── typed-data.ts
│ │ ├── codec/ # Encoding
│ │ │ └── base58.ts # Base58 codec
│ │ ├── ota/ # OTA protocol
│ │ ├── walletconnect/ # WalletConnect
│ │ │ └── namespace-builder.ts # Namespace builder
│ │ ├── sign-handler/ # Shared signing handlers
│ │ ├── i18n/ # Shared multilingual strings
│ │ │ ├── wc-strings.ts # WalletConnect-related (EN/JA)
│ │ │ └── index.ts
│ │ ├── transport/
│ │ │ └── interface.ts # Transport abstraction interface
│ │ ├── constants.ts # Constants / mapErrorToI18nKey()
│ │ ├── ws-protocol.ts # WS protocol definitions
│ │ ├── index.ts
│ │ └── types.ts
│ │
│ ├── desktop/ # Desktop app (Electron)
│ │ └── src/
│ │ ├── main/ # Main process
│ │ │ ├── hid-service.ts # USB HID communication (node-hid)
│ │ │ ├── ws-server.ts # LocalWebSocket server
│ │ │ ├── ota-service.ts # Desktop OTA
│ │ │ ├── device-service.ts # Device disconnect/reconnect management
│ │ │ ├── walletconnect-service.ts
│ │ │ ├── index.ts # Signing hold / confirmation / progress management
│ │ │ └── utils.ts
│ │ ├── preload/
│ │ │ └── index.ts
│ │ └── renderer/ # Renderer process (React)
│ │ ├── App.tsx # Includes the signing confirmation modal
│ │ ├── i18n/ # Desktop-specific + shared i18n
│ │ └── main.tsx
│ │
│ └── mobile/ # Mobile app (React Native)
│ ├── App.tsx
│ ├── ios/
│ │ └── SafariExtension/ # Safari Web Extension
│ └── src/
│ ├── transport/ # BLE transport
│ │ ├── BleTransport.ts
│ │ └── index.ts
│ ├── services/ # Mobile-specific services
│ │ ├── device.ts # BLE connection management
│ │ ├── wallet-storage.ts # Wallet registration / selection
│ │ ├── walletconnect.ts
│ │ ├── ota-service.ts # Mobile OTA
│ │ └── ws-server.ts # Mobile WebSocket server
│ ├── screens/ # UI screens
│ │ ├── ConnectScreen.tsx # dApp connection (main screen)
│ │ ├── SignScreen.tsx # Signing confirmation
│ │ ├── ScanDeviceScreen.tsx # BLE scan
│ │ └── WalletAddedScreen.tsx # Registration complete
│ ├── i18n/ # Mobile-specific + shared i18n
│ └── types/
│ └── navigation.ts
│
└── docs/
├── OpenloopConnect_Spec_2026.md # This specification
└── BIP122_signPsbt_Implementation_Spec.md # BIP122 implementation spec
WalletConnect is the de facto standard protocol of the blockchain industry, adopted by more than 600 dApps.
By fully supporting WalletConnect, Openloop Connect achieves:
Openloop Connect is the primary execution platform for native mode (VID: 0x303A / PID: 0x8341), and the connection methods it supports keep expanding.
Native-mode connections via Openloop Connect:
| Connection Method | Description | Platform |
|---|---|---|
| WalletConnect | Receive signing requests from 600+ dApps | All platforms |
| LocalWebSocket | A browser extension connects directly via ws://127.0.0.1 | Desktop / Android |
| Safari Web Extension | Connect directly over BLE from iOS Safari | iOS |
As a result, the use cases that native mode alone can cover are expanding rapidly — WalletConnect-enabled dApps, browser extensions supporting the Openloop Web SDK, Web3 dApps on Safari, and more.
For the full picture of the native-mode strategy (including WebHID), see the Openloop product specification.
| Document | URL |
|---|---|
| WalletConnect 2.0 Specs | https://specs.walletconnect.com/ |
| WalletConnect Cloud | https://cloud.walletconnect.com/ |
| Sign API | https://docs.walletconnect.com/api/sign |
| React Native SDK | https://docs.walletconnect.com/advanced/walletconnectmodal/about?platform=react-native |
| Electron Integration | https://docs.walletconnect.com/advanced/walletconnectmodal/about?platform=web |
| Standard | Description | URL |
|---|---|---|
| CAIP-2 | Blockchain ID Specification | https://github.com/ChainAgnostic/CAIPs/blob/main/CAIPs/caip-2.md |
| CAIP-10 | Account ID Specification | https://github.com/ChainAgnostic/CAIPs/blob/main/CAIPs/caip-10.md |
| CAIP-25 | Wallet JSON-RPC Methods | https://github.com/ChainAgnostic/CAIPs/blob/main/CAIPs/caip-25.md |
| Document | URL |
|---|---|
| BIP122 Scope (WalletConnect) | https://docs.walletconnect.com/advanced/multichain/rpc-reference/bitcoin-rpc |
| CAIP-122 (signMessage) | https://github.com/ChainAgnostic/CAIPs/blob/main/CAIPs/caip-122.md |
| Document | URL |
|---|---|
| EIP155 Scope (WalletConnect) | https://docs.walletconnect.com/advanced/multichain/rpc-reference/ethereum-rpc |
| EIP-191 | https://eips.ethereum.org/EIPS/eip-191 |
| EIP-712 | https://eips.ethereum.org/EIPS/eip-712 |
| EIP-5792 (Wallet Call API) | https://eips.ethereum.org/EIPS/eip-5792 |
| Standard | Description | URL |
|---|---|---|
| BIP-32 | HD Wallets | https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki |
| BIP-84 | Native SegWit | https://github.com/bitcoin/bips/blob/master/bip-0084.mediawiki |
| BIP-137 | Message Signing | https://github.com/bitcoin/bips/blob/master/bip-0137.mediawiki |
| BIP-174 | PSBT | https://github.com/bitcoin/bips/blob/master/bip-0174.mediawiki |
| Document | URL |
|---|---|
| Solana WalletConnect Scope | https://docs.walletconnect.com/advanced/multichain/rpc-reference/solana-rpc |
| Solana Web3.js | https://solana-labs.github.io/solana-web3.js/ |
| Ledger Solana App | https://github.com/LedgerHQ/app-solana |
| Document | URL |
|---|---|
| TronGrid API | https://www.trongrid.io/ |
| Ledger TRON App | https://github.com/AurelienMusic/app-tron |
| TIP-191 (signMessage) | https://github.com/tronprotocol/TIPs/blob/master/tip-191.md |
| Document | URL |
|---|---|
| CBOR (RFC 8949) | https://www.rfc-editor.org/rfc/rfc8949 |
| FIDO2 / WebAuthn | https://fidoalliance.org/fido2/ |
| Version | Date | Contents |
|---|---|---|
| v0.1.0 | 2026-01-18 | Initial version (EIP155 + BIP122 support) |
| v0.2.0 | 2026-01-18 | Major revision: added desktop support, detailed architecture, added vision, Mermaid diagram support |
| v0.2.2 | 2026-01-19 | Multi-device support: mobile BLE wallet registration system, desktop USB physical switching |
| v0.3.0 | 2026-02-14 | Desktop BIP122 support, shared Bitcoin service (moved to shared) |
| v0.3.1 | 2026-02-14 | Added signing confirmation UI (desktop), standardized error responses, shared i18n module |
| v0.3.4 | 2026-02-15 | EIP-5792 wallet_getCapabilities support, notification sound/vibration, unified error messages, fixed sendTransfer spec, added BIP-322 note |
| v0.3.6 | 2026-02-17 | Solana WalletConnect support, published on App Store / Play Store |
| v0.3.10 | 2026-02-17 | APDU sharing (CLA_OPENLOOP), TRON WalletConnect support |
| v0.3.12 | 2026-02-25 | Unified Desktop/Mobile UI, fixed GitHub Actions CI |
| v0.4.1 | 2026-03-11 | OTA USB HID support, LocalWebSocket server, Safari Web Extension, Android background |
| v0.4.3 | 2026-03-19 | Device disconnect/reconnect, restored Android foreground service |
| v0.6.10 | 2026-05-13 | User-controlled toggles for LocalWS / PKCS#11, Origin allowlist, PKCS#11 lib Origin identification convention (§9.3-9.6 major revision) |
| v0.6.11 | 2026-07-07 | Aligned the §14 APDU spec with the implementation: added CLA=0xE1 (xpub/master fingerprint), BTC signing flow (42/44/48/4A), EIP-712 streaming (1A/1C/1E), EIP-7702 (0x34), ERC20/NFT (14/16), handshake commands (GET_VERSION/OPEN_APP/GET_DEVICE_INFO/GET_BATTERY_STATUS); reorganized per-currency CLA notation |
Openloop Connect - Haudi Crypto, Inc.
© 2026 Haudi Crypto, Inc. All rights reserved.