Skip to main content

Zcash (ZEC)

Reference metadata for Zcash. Full parameter tables and request/response examples are being authored — the verified facts below are accurate today.

FieldValue
coinType133
keyPathm/44'/133'/<accountIdx>'/0/0
amount unitzatoshi (1 ZEC = 1e8)
chainIdbip122:00040fe8ec8471911baa1db1266ea15d/slip44:133

Supported Methods

MethodSupported
getAddress
signTransaction
signMessage
signTypedData
signAuthEntry

Notes

Fully signable UTXO chain. DCENT signs the transparent t-address path only — shielded z-addresses are not supported. The raw transaction carries Zcash consensus branch IDs (Overwinter/Sapling); provide the previous transactions for the inputs you spend. Shares the Bitcoin-family signTransaction path.

option (consensus branch ID)

Zcash's option identifies which network upgrade is currently active. It is a 16-hex-char string: the first 8 chars are the currency's GroupId, the last 8 are the active consensus branch ID. Because the correct branch ID changes at every network-upgrade activation height and the signer has no network access, the app must supply the current value — a value baked in at build time is guaranteed to go stale eventually.

FieldTypeRequiredSourceNotes
option, chars 1–8hexRequiredAppGroupId — must match this currency's version group ID.
option, chars 9–16hexRequiredAppActive consensus branch ID — changes at every network-upgrade activation height.
danger

Don't hardcode this. Fetch it at prepare time from a wallet library call that reads the current chain height (e.g. getZCASHOption(currency)), and pass the result through unchanged. This exact failure mode has shipped before: transactions kept signing successfully with a stale NU6.2 branch ID after NU6.3 activated, and were only rejected at broadcast — the signing success masked the root cause. Either half wrong, or a length other than 16 hex chars, is rejected with -32602.

The signTransaction payload shape (inputs, outputs, previous transactions) matches the Bitcoin-family signing path — only the address version, coinType and amount decimals differ (see above). Per-parameter tables come from the DCENT Web Bridge and the connector presets.

signTransaction

await dcent.sign({
method: 'signTransaction',
chainId: 'bip122:00040fe8ec8471911baa1db1266ea15d/slip44:133',
payload: {
keyPath: "m/44'/133'/0'/0/0",
transaction: {
inputs: [
{ rawTransaction: '<prev tx hex>', index: 0, txType: 'p2pkh', keyPath: "m/44'/133'/0'/0/0" }
],
outputs: [
{ txType: 'p2pkh', amount: '990000', addresses: ['<t1... recipient>'] }
],
option: '<16-hex-char GroupId+branchId, wallet-computed>'
}
}
}) // → body.parameter.signature

signTransaction — full field reference

FieldTypeRequiredSourceUnitNotes
inputs[].rawTransactionhexRequired-RealWalletFull prev-tx hex of the UTXO; must be device-owned
inputs[].indexnumberRequiredAppUTXO output index
inputs[].txTypeenumRequiredAppAlways p2pkh — Zcash has no SegWit variant
inputs[].keyPathstringRequired-RealWalletPath that signs this input
inputs[].sequencenumberOptionalAppSame defaulting behavior as Bitcoin
outputs[].amountstringRequiredAppzatoshiOutput value
outputs[].addressesstring[]Required-RealAppRecipient (transparent t-address only). Only addresses[0] is used, exactly one non-change output allowed — use a second output with txType: 'change' for change.
optionhex (16 chars)RequiredAppConsensus branch ID — sub-field breakdown above.