Xahau (XAH)
Sign Xahau transactions. Xahau is an XRPL-derived sidechain, so the payload reuses the XRP Ledger transaction shape — provide the standard Payment fields and the device signs the serialized transaction.
| Field | Value |
|---|---|
| Family | Xahau (XRPL-derived) |
| coinType | 144 |
| keyPath | m/44'/144'/<accountIdx>'/0/0 |
| amount unit | drops (1 XAH = 1e6) |
| chainId | xahau:mainnet/slip44:144 |
Supported Methods
| Method | Supported |
|---|---|
| getAddress | ✓ |
| signTransaction | ✓ |
| signMessage | ✗ |
| signTypedData | ✗ |
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 | 2.32.0 or higher | 1.0.0 or higher |
signTransaction | 2.32.0 or higher | 1.0.0 or higher |
getAddress
Retrieves the Xahau account address. Returns an XRPL-style classic address (r…).
| Field | Type | Required | Source | Notes |
|---|---|---|---|---|
chainId | string | Required | App | Full CAIP-19 — xahau:mainnet/slip44:144 |
keyPath | string | Required | App | BIP-44 — default m/44'/144'/0'/0/0 |
Request
await dcent.getAddress({
chainId: 'xahau:mainnet/slip44:144',
keyPath: "m/44'/144'/0'/0/0"
})
Response
| Field | Type | Description |
|---|---|---|
address | string | XRPL-style classic address (r…) for this Xahau account. Xahau uses the same classic address format as the XRP Ledger. |
header.status | string | success on completion |
{
"header": {
"version": "1.0",
"status": "success"
},
"body": {
"command": "getAddress",
"parameter": {
"address": "rrrrrrrrrrrrrrrrrrrputRj8Lyv"
}
}
}
signTransaction — Payment
Signs a Xahau transaction. The bridge serializes and signs the XRPL-style transaction and returns the signed tx_blob ready to submit.
payload.transaction:
{
"TransactionType": "Payment",
"Account": "rrrrrrrrrrrrrrrrrrrputRj8Lyv",
"Destination": "rrrrrrrrrrrrrhbyxFUyg4pJeFLCBn",
"Amount": "1000000",
"Fee": "12",
"Sequence": 1,
"LastLedgerSequence": 85000000,
"Flags": 2147483648
}
| Field | Type | Required | Source | Description |
|---|---|---|---|---|
TransactionType | string | Required | App | Payment for a value transfer |
Account | address | Required-Real | Wallet | Device Xahau account (sender) — must exist and be funded on-chain |
Destination | address | Required-Real | App | Recipient classic address (r…) |
Amount | string | Required | App | Value in drops; "1000000" = 1 XAH |
Fee | string | Required | App | Transaction cost in drops; "12" is a typical base fee |
Sequence | number | Required-Real | App | Real, current per-account sequence — the app must supply it, not auto-filled |
LastLedgerSequence | number | Required-Real | App | Highest ledger index this transaction is valid for — required so a stale transaction fails closed instead of lingering; a current ledger index plus a small buffer (e.g. +20) |
Flags | number | Required | App | 2147483648 = tfFullyCanonicalSig (0x80000000) — OR it with the transaction type's own flags. The wire gate no longer rejects a missing Flags, but any transaction the structured path cannot model falls back to blind-signing, and that path does require the canonical-signature flag |
Request
await dcent.sign({
method: 'signTransaction',
chainId: 'xahau:mainnet/slip44:144',
payload: {
keyPath: "m/44'/144'/0'/0/0",
transaction: {
TransactionType: 'Payment',
Account: 'rrrrrrrrrrrrrrrrrrrputRj8Lyv',
Destination: 'rrrrrrrrrrrrrhbyxFUyg4pJeFLCBn',
Amount: '1000000',
Fee: '12',
Sequence: 1,
LastLedgerSequence: 85000000,
Flags: 2147483648
}
}
})
Response
| Field | Type | Description |
|---|---|---|
signature | hex string | The broadcast-ready signed tx_blob — the fully, canonically serialized signed XRPL transaction for Xahau, ready to submit. This is a complete signed transaction blob, not a bare signature. |
body.command | string | signTransaction |
header.status | string | success on completion |
{
"header": {
"version": "1.0",
"status": "success"
},
"body": {
"command": "signTransaction",
"parameter": {
"signature": "120000228000…"
}
}
} // signed tx_blob
Xahau shares the XRP Ledger transaction format. The same Payment shape applies; the device signs the canonically serialized transaction and returns the signed tx_blob.
Common Mistakes
Missing tfFullyCanonicalSig — leaving Flags: 0 (or omitting it) can yield an Invalid Unsigned result. Set Flags: 2147483648 for a standard Payment. Amounts not in drops — Amount and Fee are integer-string drops, not XAH. 1 XAH = "1000000" drops. Unfunded / non-existent Account — the sender must already exist on-chain and meet the base reserve; otherwise sequence lookup and submission fail. Stale Sequence — fetch the account's current sequence immediately before signing; a reused value is rejected on submit.