Route node, chain, mempool, and mining calls to Zebra; wallet calls to Zallet.
Changing the RPC URL alone does not preserve parameters or responses.
The tables cover zcashd 6.20.0, Zebra 7.0.0, and
Zallet 0.1.0-beta.3. Zallet’s reference follows development;
the release-specific restrictions here take precedence. Its direct zebra
backend is incompatible with Zebra 7.0.0; see backend requirements
for the unaffected RPC-based zaino backend.
For pool integrations, see the payout RPC compatibility table and tested sidecar
procedure; ownership does not imply that
an unmodified payout processor works with Zallet.
Implements the node-level method or the named replacement.
Zallet
Implements the wallet method or records its disposition in the wallet method status.
—
No implemented target RPC; Notes records proposals or non-RPC alternatives.
Rows name Zebra when wallet state is unnecessary, even if Zallet also serves
the method (getrawtransaction, validateaddress, z_listunifiedreceivers,
and z_converttex).
The sidecar is temporary, not an API owner. Its network and
mempool methods describe its own state. Deprecation flags, index requirements,
sync gates, and wallet restrictions still apply:
Marker
Sidecar behavior
(none)
No special registration marker; other sidecar restrictions still apply.
No authdataroot, chainhistoryroot, chainwork, or anchor. The verbosity argument is numeric, not boolean. Adds nTx and Ironwood tree data. Verbosity 3 adds transparent-input prevout data and non-coinbase fee where spent outputs are available.
No initial_block_download_complete, softforks, or pruneheight. The chainwork value is numeric 0, not a hex string; commitments is 0, pruned is false, and headers equals the committed tip. #11033
Computes the ratio from the high 128 bits of expanded targets. Returns an error when state cannot supply chain information, where zcashd can return 1.0 for an empty chain.
Returns finalRoot and finalState for available Sapling, Orchard, and Ironwood trees. Omits Sprout entirely and does not return skipHash. Ironwood appears from NU6.3. #11033
Accepts a single address or an addresses object with optional inclusive start/end heights. Limits requests to 10,000 addresses and 100,000 matching transactions; narrow oversized ranges.
Returns historical subsidies, including founders’ rewards before the first halving. After reserve-dependent reissuance begins, the preceding block must be available; arbitrary future subsidies cannot be forecast.
Returns only null, duplicate, or rejected. zcashd also returns duplicate-invalid, duplicate-inconclusive, inconclusive, and the specific BIP-22 reject reason in place of a bare rejected.
Returns addr, services, lastrecv, inbound, banscore, subver, version, startingheight, and the added connection_state; pingtime and pingwait are optional. Other zcashd per-peer fields are absent.
Uses numeric verbosity. Outputs expose valueZat, not valueSat, and omit spentTxId, spentIndex, and spentHeight. P2PK outputs have no synthetic address (#9671). Supports Ironwood transaction data.
Build Zallet with zcashd-import
for its wallet-migration CLI. This also enables transparent-key-import;
without it, the registered z_importaddress RPC returns an error.
Balances and counters are placeholders; mnemonic_seedfp is "TODO" and mnemonic_seedfps is absent. Only unlocked_until is live. Use dedicated balance methods.
Use zallet import-address for a bare address, public key, or redeem script. The z_importaddress RPC covers public keys and redeem scripts, not bare addresses.
Includes transparent outputs; uses value, account_uuid, and is_watch_only instead of amount, account, and spendable. Ignores include_watchonly. See response changes.
Accepts one address or account UUID, not *; rejects non-null fees. Allows only AllowRevealedSenders or AllowLinkingAccountAddresses. Check the added broadcast result before assuming submission.
Tip height and hash in one call, so a caller cannot read a torn pair across two requests.
getstandardfee
Zebra
Done
Returns {standard_fee, version}: the next block’s marginal fee per logical action, in zatoshis. Version is 0; the fee is height-dependent (#11557).
generatetoaddress
Zebra
Done
Requires proof-of-work validation to be disabled, including Regtest. Pays the supplied address instead of [mining] miner_address.
preciousblock
Zebra
Done
Returns null; see the tip-selection rules below.
rpc.discover
Zebra
Done
OpenRPC schema for every Zebra RPC method.
preciousblock prefers a non-finalized chain tip only over competing tips with
equal cumulative work; higher-work chains always take precedence. The last call
for competing equal-work tips wins. Preferences are not persisted and are lost
on restart. Finalized blocks and known non-tip blocks succeed without changing
the preference; an unknown hash returns Block not found.
Zebra publishes zcashd-compatible ZMQ hashblock notifications when built with
the optional zmq feature and configured with
[notify] zmqpubhashblock, for example
"tcp://127.0.0.1:28332". The publisher is off by default and has no
authentication; expose it only to trusted clients. Like block notify, it is
suppressed during initial sync. See
ZMQ block notifications for framing and
best-effort delivery semantics. The other ZMQ topics remain proposed in
#11034 and #11036. Zebra’s indexer gRPC streams cover
them but require client changes:
Set [rpc] indexer_listen_addr; the streams need no indexer
build feature. Keep the unauthenticated, plaintext listener on loopback or a
protected private network; JSON-RPC cookie authentication does not apply.
zcashd topic
Owner
Status
Available alternative and limitation
zmqpubhashblock
Zebra
Done
Optional zmq feature and [notify] zmqpubhashblock (#10881). Indexer ChainTipChange, block-notify, and mining long polling are alternatives.
zmqpubrawblock
Zebra
Replaced
Indexer NonFinalizedStateChange streams serialized non-finalized blocks, including forks; use GetBlock for a best-chain block by hash or height. This is not identical to a best-block ZMQ topic (#11034).
zmqpubhashtx
Zebra
Replaced
Indexer MempoolChange reports added, invalidated, and mined transaction IDs. Its events are not the complete zcashd ZMQ transaction contract (#11036).
zmqpubrawtx
Zebra
Replaced
Combine MempoolChange with getrawtransaction; a transaction removed before the lookup can be unavailable. The stream does not contain transaction bytes (#11036).
Streams can close when a consumer falls behind. Reconcile state through RPC
after reconnecting rather than treating notifications as a durable event log.
The non-finalized stream accepts known chain-tip hashes; an empty request
streams the current non-finalized state before subsequent updates.
Indexer MempoolChange reports invalidation without an expiry reason. #11022
-walletnotify hook
Zallet
Unavailable
Zallet beta.3 accepts [external] notify, and migrate-zcash-conf maps walletnotify to it, but startup warns that the hook is not implemented. See its release notes.
Zebra reads TOML, not zcash.conf. These are behavioral mappings, not accepted
aliases. See the configuration reference for defaults and
environment-variable overrides.
zcashd setting
Zebra setting or migration action
conf
Select Zebra’s TOML with zebrad -c zebrad.toml start.
datadir
Set [state] cache_dir for Zebra’s own database. This does not import a zcashd directory.
testnet, regtest
Set [network] network = "Testnet" or "Regtest".
bind, port
Set one [network] listen_addr = "IP:port"; multiple zcashd binds are not a direct mapping.
externalip
Set [network] external_addr to the advertised socket address.
addnode, seednode
Use [network] initial_mainnet_peers or initial_testnet_peers as discovery seeds, not a persistent-peer guarantee.
connect, discover, proxy and relay-policy controls
No equivalent connect-only policy. Initial peers do not constrain later discovery; decisions remain in #11027.
server, rpcbind, rpcport
Set [rpc] listen_addr; the listener is disabled when unset.
rpcuser, rpcpassword, rpcauth
No static-credential mapping. Use Zebra’s cookie authentication and an authenticated deployment boundary for remote access.
rpccookiefile
Set [rpc] cookie_dir; the filename is .cookie, not configurable separately.
rpcallowip
No source-address allowlist setting. Bind to loopback or enforce access at the deployment boundary.
rpcthreads
No equivalent thread-count control; [rpc] parallel_cpu_threads is deprecated and has no effect.
mineraddress
Set [mining] miner_address on Zebra, not the sidecar.
blocknotify
Set [notify] block_notify_command.
Wallet and ZMQ settings retained during migration
Keep them in the sidecar’s zcash.conf; Zebra does not translate or forward them.