getAddress
Retrieves the account address for a chainId + keyPath. Call before creating transactions. Supported on every network in the connector's chain list except Horizen and JuChain (unsupported_method); on DCENT X, BNB Beacon Chain (mainnet and testnet) fails with 5005 because the device does not list that coin — see Requirements for firmware.
Requirements
getAddress adds no firmware floor of its own, but the chain's own minimum still applies — see the Min FW columns (one per model) in the Support Matrix and each chain page's Requirements table. Horizen and JuChain are rejected with unsupported_method. 🔴 Cardano purpose 1852' is a separate, higher floor —
the device exposes the CIP-1852 tree as a separate coin entry, added in DCENT Biometric Wallet
2.36.2 / DCENT X 1.0.1. Below that the device does not report it at all, so a getAddress on
m/1852'/1815'/… fails with the firmware-update error (5005). Legacy m/44'/1815'/… is
unaffected — it works from the older floor but returns no rewardAddress. See
Cardano — Requirements.
Signature
// v2
await dcent.getAddress({ chainId, keyPath, addressFormat? })
// v1 positional form: still type-checks, but the request carries no chainId,
// so the v2 bridge resolves it as a failure with param_error (an unsupported coinType string
// rejects with coin_type_error, and a parachain coinType whose prefix gives 0 or NaN under Number()
// rejects with param_error, before sending) — use the object form
await dcent.getAddress(coinType, path, prefix?)
Parameters
| Field | Type | Required | Source | Notes |
|---|---|---|---|---|
chainId | string | Required | App | Full CAIP-19, e.g. eip155:1/slip44:60 (Cardano: cip34:1-764824073). A bare CAIP-2 reference such as eip155:1 is not resolved and returns unsupported_method (4200) |
keyPath | string | Required | App | BIP-44; Cardano rewardAddress requires CIP-1852 (m/1852'), and Bitcoin also has BIP-49 / BIP-84 / BIP-86 accounts (m/49', m/84', m/86') |
addressFormat | enum | Optional | App | Bitcoin family encodings, plus the account selectors standard and ledger — see below |
prefix? | string | null | Optional | App | Chain-specific extra value (e.g. czone / parachain prefix). Currently ignored on the v2 path — the connector forwards it but the bridge drops it until the multi-axis currency resolver lands; most chains omit it |
addressFormat values (Bitcoin family)
legacy · segwit-wrapped · segwit-native · taproot
On Bitcoin, all four resolve, but each one belongs with a keyPath purpose: legacy and segwit-native on m/44' (they share that key), segwit-wrapped on m/49', taproot on m/86'. segwit-native also accepts the BIP-84 account on m/84'. A mismatched pair — legacy with m/86', for example — is rejected with -32602. On DigiByte, segwit-native selects the native SegWit account on m/44' and segwit-wrapped / taproot are rejected; the other Bitcoin-family chains (Bitcoin Cash, Litecoin, Dogecoin, Dash, eCash, Zcash, Bitcoin Gold, Ravencoin) have one account and ignore these values. Horizen is discontinued and every call that carries its chainId is rejected.
addressFormat values (account standard)
standard · ledger — these name an account, not an encoding.
| Value | Chain | Selects |
|---|---|---|
standard | Tezos | The Standard (SLIP-10 Ed25519) account. The only way to reach it — its keyPath is the same as the default account's |
ledger | Algorand | The Ledger (BIP32-Ed25519) account. The only way to reach it — its keyPath is the same as the default account's |
The Polkadot / Substrate Ledger accounts and Cardano's m/1852' account are picked by the keyPath instead (Polkadot, Cardano). ledger may be added to those keyPaths (…/0'/0' on Substrate, m/1852' on Cardano) and names the same account. ledger anywhere other than Algorand, Substrate …/0'/0' or Cardano m/1852' is rejected with -32602. standard selects an account only on Tezos; Stellar, Hedera, NEAR and Solana Devnet ignore it, and every other chain — Bitcoin, EVM, Solana mainnet, Cardano, Algorand and the rest — rejects it with -32602. On Tezos and Algorand, legacy names the default account — it is what getAccountInfo reports for it.
signTransaction takes the same addressFormat enum in its payload. Use the same value for both calls so the address you showed the user is the one that signs.
Request / Response
Request
await dcent.getAddress({
chainId: 'eip155:1/slip44:60',
keyPath: "m/44'/60'/0'/0/0"
})
Response
{
"header": {
"version": "1.0",
"status": "success",
"response_from": "getAddress"
},
"body": {
"command": "getAddress",
"parameter": {
"address": "0x6A5C…"
}
}
}
Response — Cardano
Cardano adds a rewardAddress (stake address) to the same parameter object when the keyPath
uses purpose 1852' (CIP-1852). No extra request field is needed; the address bundle comes back
on the default call.
🔴 On legacy purpose 44' the call still returns an address, but rewardAddress is absent —
that tree is plain-transfer only. See
Cardano — Derivation purpose.
{
"header": {
"version": "1.0",
"status": "success",
"response_from": "getAddress"
},
"body": {
"command": "getAddress",
"parameter": {
"address": "addr1…",
"rewardAddress": "stake1…"
}
}
}
Response fields
| Field | Type | Description |
|---|---|---|
body.parameter.address | string | The account address. Format is chain-specific — checksummed 0x… (EVM; xdc… on XDC with DCENT X), bc1… / 1… (Bitcoin), base58 (Solana), addr1… (Cardano), etc. |
body.parameter.rewardAddress | string | Cardano only — the stake (reward) address (stake1…, or stake_test1… on testnet). Present exactly when the keyPath uses purpose 1852'; absent on legacy purpose 44' and on every other chain. On 1852' a success response always carries it — a failure to derive it is reported as internal_error (-32603), never as a silent omission. Cardano public keys are returned by getPublicKey, not getAddress. |
body.parameter.pubkey | string | May be present on some networks; its format varies by network (on Algorand and Cosmos it is 0x-prefixed hex, and on DCENT X it can be empty — "0x"). Use address as the account identifier and getPublicKey for public keys. |
Cardano also returns a rewardAddress (stake address) in parameter — on purpose 1852' only; public keys come from getPublicKey, not getAddress. Bitcoin segwit/legacy are disambiguated by addressFormat + keyPath.