Overview
A browser-native JavaScript SDK for integrating the DCENT hardware wallet into web applications. Retrieve addresses and sign transactions over WebHID or Bluetooth — no Bridge program to install.
WebHID · Bluetooth · CAIP-2 / CAIP-19 · BIP-44 · npm: dcent-web-connector
Looking for the previous API? The v1 guide is still available under v1 (legacy).
What it is
A developer-focused JavaScript SDK for integrating the DCENT hardware wallet into web apps. It runs entirely in the browser — no bridge program or native helper to install.
With it you can:
- Read a wallet address and public key for any supported network.
- Query device info — model, firmware version, connection state.
- Have the user sign a transaction, message, or typed data on the device.
Every method that reaches the device takes a payload and returns the same { header, body } response — the call shape does not change from one network to the next, and sign() and the chainId-scoped account reads identify the network with a chainId. The connection setters (setTimeOutMs, setConnectionListener, setSignProgressListener, setTransport, popupWindowClose) are local configuration and return void. You pick a transport once with setTransport() ('hid' for WebHID, 'ble' for Bluetooth); each call opens the DCENT popup where the user approves the action on the device.
Requirements
| Requirement | Details |
|---|---|
| Device | A DCENT Biometric Wallet or a DCENT X. Get one at the DCENT store. |
| Browser | WebHID and Web Bluetooth run only in Chromium-based browsers — Chrome, Edge, Brave, Opera. Firefox and Safari are not supported. |
| Connection | USB (WebHID) or Bluetooth (Web Bluetooth), selected with setTransport(). No bridge program to install. |
| Firmware | Some networks and methods require a minimum firmware version, listed per model — DCENT Biometric Wallet (1.x~2.x line) and DCENT X (1.x line, from 1.0.0). The two lines are separate and not comparable. An unsupported request returns the firmware-update error, and the bridge prompts to update. |
| Extension | The connector runs unmodified inside a Chrome MV3 extension — measured in an extension tab and the side panel. A toolbar popup is unsuitable — measured: window.open returns null there and the popup is gone within 100 ms, so the call fails with "popup blocked by browser?". A background service worker has no window at all. MV3 CSP (script-src 'self') means the connector must ship inside your extension bundle. |
Install
npm install dcent-web-connector
Select a transport and read an address — a complete first call:
import dcent from 'dcent-web-connector'
dcent.setTransport('hid') // WebHID over USB ('ble' for Bluetooth)
const res = await dcent.getAddress({
chainId: 'eip155:1/slip44:60', // Ethereum mainnet
keyPath: "m/44'/60'/0'/0/0",
})
console.log(res.body.parameter.address) // "0x6A5C…"
Three things to learn first
| Concept | What it is |
|---|---|
| chainId | CAIP-2/19 network identifier, e.g. eip155:1/slip44:60. Replaces v1 coinType. |
| keyPath | BIP-44 path, always purpose 44' on DCENT. Required on every sign call. |
| V1Response | Uniform { header, body } envelope returned by every call that reaches the device (the connection setters return void). |
How it works
Your app talks only to the connector. The connector opens a DCENT popup and reaches the device directly from the browser over WebHID or Bluetooth — there is no native helper to install:
No native app to install. Transport is selected in-page with setTransport() ('hid' = WebHID, 'ble' = Bluetooth).
Packages
Everything ships in the single npm package dcent-web-connector — there is no separate download. The source repository also contains:
src/— the connector library source.docs/— the per-family payload contract (v2-payload-contract.md) and a frozen snapshot of the original single-file guide (legacy-v2-dev-doc.html). This guide is now maintained here, not in that file.playground/— request presets used by the example page (accounts, EVM / non-EVM transactions, REST).
Example code
A runnable example page exercises the API end to end against a connected device:
Version history
Published releases of the dcent-web-connector npm package on the v2 line. The version jumps 0.16.0 → 2.0.0 to align the package version with the v2 API generation — there is no 1.x. Releases numbered 0.x belong to the v1 API; their history is listed on the v1 (legacy) page.
| Version | Date | Change |
|---|---|---|
2.0.0 | 2026-08-27 | First v2 release. The 21 per-chain get*Signed* wrappers are replaced by a single sign({ method, chainId, payload }), chain identity moves from the coinType enum to CAIP-19 chainId, and the DCENT Bridge native app is no longer required — the connector reaches the device over WebHID or Bluetooth. See Migration. |
Support
Need help integrating the connector, or hitting something this guide does not cover?
Email contact@iotrust.kr — include the chainId, the method you are calling, the connector version, and the device model/firmware if the issue involves a device.
- ↗ GitHub Issues — bugs and feature requests