[0.1.0-alpha.4] - 2026-06-25
This release contains substantial upgrades from the previous alpha release.
It adds direct ReadStateService-backed access to Zebra state via a new
zebra-state backend, as well as adding this functionality to the zaino
backend. A significant number of important RPC methods have been
added, in particular z_shieldcoinbase and the functionality of several
of the existing RPC methods have been fixed or improved.
Added
zallet generate-encryption-identitycommand, which generates the wallet's age
encryption identity using theagelibrary that Zallet already embeds. This
removes the need for the externalrage/rage-keygentool when setting up a
wallet. It supports both plain and passphrase-encrypted identities; in
non-interactive contexts the passphrase is read from the
ZALLET_IDENTITY_PASSPHRASEenvironment variable.- Cookie file authentication for the JSON-RPC interface. A random credential
is generated on startup and written to{datadir}/.cookie, enabling
zallet rpcto authenticate automatically without manual password setup.
Cookie auth coexists with configured[[rpc.auth]]users. - RPC methods:
decoderawtransactiondecodescriptgetwalletstatusverifymessagez_converttexz_exportkey(Sapling extended spending keys only)z_importaddressz_importkey(Sapling extended spending keys only)z_shieldcoinbase
Changed
- This release is not compatible with wallets created by earlier alpha
releases. The embedded Zaino chain indexer made a backwards-incompatible
change to its database format (zingolabs/zaino#914), which this release pulls
in. Zallet now refuses to open wallet databases last used by0.1.0-alpha.3
or earlier; start again with a fresh Zallet wallet or a new data directory. - Updated the Zaino chain indexer to a pre-release
rc-0.4.0build
(zingolabs/zaino#1238) that retains NU 6.2 support and adds optional
("ephemeral") finalised state. The embedded indexer now runs in ephemeral
mode, serving finalised chain data directly from the validator instead of
maintaining a persistent finalised-state database. - The wallet sync engine has been migrated to Zaino's
ChainIndexinterface,
and now scans full blocks instead of compact blocks:- Shielded outputs are trial-decrypted by a batched decryption engine.
- Transparent outputs are detected directly while scanning blocks, instead
of by polling the backing node's address index on every chain tip change. - Chain queries made by RPC methods now operate against a stable snapshot of
the chain state.
getrawtransactionnow correctly reports the fieldsasm,reqSigs,kind,
andaddressesfor transparent outputs.z_viewtransaction: Theoutgoingfield is now omitted on outputs that
zcashddidn't include in its response.- Significant performance improvements to
zallet migrate-zcashd-wallet. zallet migrate-zcashd-walletnow accepts--no-scanto skip chain scanning
during migration.zallet rpcnow sends credentials via theAuthorizationheader instead of
embedding them in the HTTP URL.
Fixed
listaddressesno longer returns an internal error when the wallet contains
standalone imported transparent keys (e.g. from azcashdmigration).- No longer crashes in regtest mode when a Sapling or NU5 activation height is
not defined. - Zallet now refuses to open wallet databases from incompatible earlier alpha
releases instead of attempting to migrate them. - The network-mismatch startup error now reports the path of the wallet database
and explains that a database is permanently tied to one network, so the cause
and the available remedies are clear. z_sendmanyno longer drop standalone transparent signing keys when the same
address backs multiple proposal inputs. Keys are now accumulated per address
rather than overwritten.- Transparent UTXO ingestion now records
tx_indexfor coinbase transactions
by routing each observed transaction throughdecrypt_and_store_transaction
in addition toput_received_transparent_utxo. This enables
z_shieldcoinbase(and any other consumer of
TransparentOutputFilter::CoinbaseOnly) to correctly identify coinbase
outputs. z_sendmanyno longer fails withQuery returned no rowswhen a proposal
includes inputs at HD-derived transparent addresses.
The keystore's standalone-key decryption is now invoked only for addresses
that were imported standalone; HD-derived addresses are signed for using
the account's unified spending key.zallet migrate-zcashd-walletnow migrates transparent addresses that were
added to thezcashdwallet viaimportpubkeyorimportaddress <redeemScript>.zallet migrate-zcashd-walletnow migrates view-only Sapling keys that were
added to thezcashdwallet viaz_importviewingkey. Each imported viewing
key becomes its own view-only account.