Skip to main content

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-19 · BIP-44 · npm: dcent-web-connector

info

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 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); the first call opens the DCENT popup and later calls reuse it while it stays open — the user approves the action on the device there.

Requirements​

RequirementDetails
DeviceA DCENT Biometric Wallet or a DCENT X. Get one at the DCENT store.
BrowserThe bridge popup requires a browser that exposes WebHID (navigator.hid) or Web Bluetooth (navigator.bluetooth) — today the Chromium-based desktop browsers such as Chrome and Edge — and it is blocked on mobile user agents; elsewhere it shows an unsupported-browser screen.
ConnectionUSB (WebHID) or Bluetooth (Web Bluetooth), selected with setTransport(). No bridge program to install.
FirmwareSome 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.
ExtensionThe 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​

ConceptWhat it is
chainIdFull CAIP-19 network identifier, e.g. eip155:1/slip44:60 (a bare CAIP-2 reference such as eip155:1 is not resolved). Replaces v1 coinType.
keyPathBIP-44 path, purpose 44' on DCENT for most chains. The exceptions are Cardano — its stake / governance surfaces need CIP-1852 (m/1852'/1815'/…) — and Bitcoin, whose BIP-49 / BIP-84 / BIP-86 accounts use m/49', m/84' and m/86'. Required on every sign call.
V1ResponseUniform { 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:

DCENT Web Connector v2 architecture — app → connector → bridge → device

tip

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).

↗ Source on GitHub

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.

VersionDateChange
2.1.02026-09-30Bitcoin Taproot spending through the multi-step builder: addBitcoinTransactionInput() now accepts 'p2tr', so a m/86' Taproot account can spend its own UTXOs with it. The builder helpers no longer keep a fixed list of script types — they check only the shape of type and leave the rest to the wallet, which answers -32602 for a well-formed input type it does not support.
2.0.02026-08-27First 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, unlike v1 (per the v1 guide), no DCENT Bridge native app is 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.