JSON-RPC altered semantics
Zallet implements a subset of the zcashd JSON-RPC wallet methods. While we
have endeavoured to preserve semantics where possible, for some methods it was
necessary to make changes in order for the methods to be usable with Zallet’s
wallet architecture. This page documents the semantic differences between the
zcashd and Zallet wallet methods.
Changed RPC methods
z_listaccounts
Changes to response:
- New
account_uuidfield.
z_getnewaccount
Changes to parameters:
- New
account_namerequired parameter. - New
seedfpoptional parameter.- This is required if the wallet has more than one seed.
z_getaddressforaccount
Changes to parameters:
accountparameter can be a UUID.
Changes to response:
- New
account_uuidfield. accountfield in response is not present if theaccountparameter is a UUID.- The returned address is now time-based if no transparent receiver is present and no explicit index is requested.
- Returns an error if an empty list of receiver types is provided along with a previously-generated diversifier index, and the previously-generated address did not use the default set of receiver types.
listaddresses
Changes to response:
imported_watchonlyincludes addresses derived from imported Unified Viewing Keys.- Transparent addresses for which we have BIP 44 derivation information are now
listed in a new
derived_transparentfield (an array of objects) instead of thetransparentfield.
getrawtransaction
Changes to parameters:
blockhashmust benullif set; single-block lookups are not currently supported.
Changes to response:
vjoinsplit,joinSplitPubKey, andjoinSplitSigfields are always omitted.
z_viewtransaction
Changes to response:
- Some top-level fields from
gettransactionhave been added:statusconfirmationsblockhash,blockindex,blocktimeversionexpiryheight, which is now always included (instead of only when a transaction has been mined).fee, which is now included even if the transaction does not spend any value from any account in the wallet, but can also be omitted if the transparent inputs for a transaction cannot be found.generated
- New
account_uuidfield on inputs and outputs (if relevant). - New
accountstop-level field, containing a map from UUIDs of involved accounts to the effect the transaction has on them. - Information about all transparent inputs and outputs (which are always visible
to the wallet) are now included. This causes the following semantic changes:
poolfield on both inputs and outputs can be"transparent".- New fields
tInandtOutPrevon inputs. - New field
tOuton outputs. addressfield on outputs: inzcashd, this was omitted only if the output was received on an account-internal address; it is now also omitted if it is a transparent output to a script that doesn’t have an address encoding. UsewalletInternalif you need to identify change outputs.memofield on outputs is omitted ifpool = "transparent".memoStrfield on outputs is no longer only omitted ifmemodoes not contain valid UTF-8.
z_listunspent
Changes to response:
- For each output in the response array:
- The
amountfield has been renamed tovaluefor consistency withz_viewtransaction. Theamountfield may be reintroduced under a deprecation flag in the future if there is user demand. - A
valueZatfield has been added for consistency withz_viewtransaction - An
account_uuidfield identifying the account that received the output has been added. - The
accountfield has been removed and there is no plan to reintroduce it; use theaccount_uuidfield instead. - An
is_watch_onlyfield has been added. - The
spendablefield has been removed; useis_watch_onlyinstead. Thespendablefield may be reintroduced under a deprecation flag in the future if there is user demand. - The
changefield has been removed, as determining whether an output qualifies as change involves a bunch of annoying subtleties and the meaning of this field has varied between Sapling and Orchard. - A
walletInternalfield has been added. - Transparent outputs are now included in the response array. The
poolfield for such outputs is set to the string"transparent". - The
memofield is now omitted for transparent outputs.
- The
z_sendmany
Changes to parameters:
feemust benullif set; ZIP 317 fees are always used.- If the
minconffield is omitted, the default ZIP 315 confirmation policy (3 confirmations for trusted notes, 10 confirmations for untrusted notes) is used.
Changes to response:
- New
txidsarray field in response. txidfield is omitted iftxidshas length greater than 1.
Omitted RPC methods
The following RPC methods from zcashd have intentionally not been implemented
in Zallet, either due to being long-deprecated in zcashd, or because other RPC
methods have been updated to replace them.
| Omitted RPC method | Use this instead |
|---|---|
createrawtransaction | To-be-implemented methods for working with PCZTs |
fundrawtransaction | To-be-implemented methods for working with PCZTs |
getnewaddress | z_getnewaccount, z_getaddressforaccount |
getrawchangeaddress | |
keypoolrefill | |
importpubkey | |
importwallet | |
settxfee | |
signrawtransaction | To-be-implemented methods for working with PCZTs |
z_importwallet | |
z_getbalance | z_getbalanceforaccount, z_getbalanceforviewingkey, getbalance |
z_getmigrationstatus | |
z_getnewaddress | z_getnewaccount, z_getaddressforaccount |
z_listaddresses | listaddresses |