Litecoin (LTC)
UTXO-based signing with the same input/output contract as Bitcoin. Provide the full previous transactions for the inputs you spend; the device signs each input by its keyPath. The chainId, keyPath, address format and amount unit differ from Bitcoin, along with the defaults and restrictions below.
| Field | Value |
|---|---|
| Family | Bitcoin (UTXO) |
| coinType | 2 |
| keyPath | m/44'/2'/<accountIdx>'/0/0 |
| addressFormat | legacy (SegWit not supported via bridge) |
| amount unit | litoshi (1 LTC = 1e8) |
| chainId | bip122:12a765e31ffd4059bada1e25190f6e98/slip44:2 |
Supported Methods
| Method | Supported |
|---|---|
| getAddress | ✓ |
| signTransaction | ✓ |
| signMessage | ✗ |
| signTypedData | ✗ |
| signData | ✗ |
Requirements
Minimum firmware for each method. The two models are on different version lines, so DCENT Biometric Wallet and DCENT X are listed separately (the numbers are not comparable across models). Below this the request returns the firmware-update error (5005) and the bridge prompts to update.
| Method | DCENT Biometric Wallet | DCENT X |
|---|---|---|
getAddress | 1.5.1 or higher | 1.0.0 or higher |
signTransaction | 1.5.1 or higher | 1.0.0 or higher |
addressFormat
| Format | Path | Prefix | Status |
|---|---|---|---|
legacy (P2PKH) | m/44'/2'/0'/0/0 | L… (base58) | Supported |
segwit-native (P2WPKH) | — | ltc1… (bech32) | Not supported |
segwit-wrapped (P2SH-P2WPKH) | — | M… (base58) | Not supported |
Litecoin is legacy-only through the DCENT bridge. Only legacy P2PKH (base58 L…, derived from m/44'/2') is supported — the DCENT bridge has no Litecoin SegWit account, and a request keyPath (getAddress / payload.keyPath) on m/84' is rejected with -32602 (it does not match Litecoin's m/44'/2' path) — keep inputs[].keyPath on m/44'/2' as well, since input paths are not checked against that template. A native-SegWit (ltc1…) account cannot be used; use the legacy m/44'/2' path. (Litecoin legacy addresses begin with L, not 1 as on Bitcoin.)
getAddress — account address
Derive a Litecoin account address for a keyPath. The connector returns the legacy P2PKH address (base58, L…, from m/44'/2'). Litecoin SegWit is not supported through the DCENT bridge, so omit addressFormat (its encoding values have no effect here). Call this before building a transaction.
Parameters
| Field | Type | Required | Source | Notes |
|---|---|---|---|---|
chainId | string | Required | App | CAIP-19 — fixed for Litecoin |
keyPath | string | Required | App | BIP-44 (legacy m/44'/2') |
addressFormat | enum | Optional | App | The encoding values are ignored — any of them returns the legacy P2PKH (L…) address; Litecoin SegWit is not supported. Omit it |
Request
await dcent.getAddress({
chainId: 'bip122:12a765e31ffd4059bada1e25190f6e98/slip44:2',
keyPath: "m/44'/2'/0'/0/0"
})
Response
| Field | Type | Description |
|---|---|---|
header.status | string | success on completion |
body.command | string | getAddress |
body.parameter.address | string | Litecoin account address. With the default path this is a legacy P2PKH base58 address (L…). No public key is returned for the Bitcoin family. |
{
"header": {
"version": "1.0",
"status": "success",
"response_from": "getAddress"
},
"body": {
"command": "getAddress",
"parameter": {
"address": "L…"
}
}
}
signTransaction — UTXO transaction
The wire payload mirrors Bitcoin: payload.transaction carries inputs[] and outputs[]. Each input references the full previous transaction hex so the device can verify the spent value before signing.
payload.transaction:
{
"inputs": [
{
"rawTransaction": "<prev tx hex>",
"index": 0,
"txType": "p2pkh",
"keyPath": "m/44'/2'/0'/0/0",
"sequence": 4294967295
}
],
"outputs": [
{
"txType": "p2pkh",
"amount": "200000",
"addresses": [
"L…"
]
}
]
}
| Field | Type | Required | Source | Unit | Description |
|---|---|---|---|---|---|
inputs[].rawTransaction | hex | Required-Real | Wallet | — | Full prev-tx hex of the UTXO being spent; must be device-owned |
inputs[].index | number | Required | App | — | UTXO output index (utxo_idx) |
inputs[].txType | enum | Required | App | — | p2pkh |
inputs[].keyPath | string | Required-Real | Wallet | — | Path that signs this input (legacy m/44'/2') |
inputs[].sequence | number | Optional | App | — | When omitted, no sequence is sent and DCENT X then uses 0xffffffff (only Bitcoin mainnet defaults to 0xfffffffd, opt-in RBF). Also note the first input's value applies to the whole transaction (a first-input value of 0 is not sent, so the device's default applies). |
outputs[].txType | enum | Required | App | — | The destination script type is taken from the recipient address (addresses[0]); txType is only checked against the allowed values (p2pkh / p2sh / p2wpkh / p2wsh / change) and marks the change output. p2tr, or a Bitcoin Taproot recipient (bc1p… / tb1p…), is rejected with -32602. Do not send an ltc1p… recipient — the bridge does not catch it |
outputs[].amount | string | Required | App | litoshi | Output value (1 LTC = 1e8 litoshi) |
outputs[].addresses | string[] | Required-Real | App | — | Recipient. Only addresses[0] is signed (later entries are not signed, but a Bitcoin Taproot address (bc1p… / tb1p…) among them is rejected with -32602 — send a single address), and exactly one non-change output is allowed — more than one destination is rejected with param_error. Use a second output with txType: 'change' for change. The change output's addresses[0] is a BIP-32 derivation path on your own account (for example m/44'/2'/0'/1/0), not an address — the device derives the change address from that path itself. Use a path on the account you are signing with; the full rule is on the Bitcoin page. |
Common Mistakes
Reusing Bitcoin coinType / keyPath — Litecoin is slip44:2, so the path is m/44'/2'/0'/0/0, not …/0'/… (Bitcoin's coinType 0). Trying to use native SegWit — Litecoin SegWit (ltc1…, m/84'/2') is not supported through the DCENT bridge; use legacy m/44'/2' P2PKH (L…). A request keyPath on m/84' is rejected with -32602; keep inputs[].keyPath on m/44'/2' too. Missing change output — any unspent input value silently becomes the miner fee. Amounts not in litoshi — values are integers in litoshi (1 LTC = 1e8), never decimal LTC.