Skip to content

v0.1.0-alpha.4

Latest

Choose a tag to compare

@nuttycom nuttycom released this 25 Jun 22:47
v0.1.0-alpha.4

[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-identity command, which generates the wallet's age
    encryption identity using the age library that Zallet already embeds. This
    removes the need for the external rage / rage-keygen tool 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_PASSPHRASE environment variable.
  • Cookie file authentication for the JSON-RPC interface. A random credential
    is generated on startup and written to {datadir}/.cookie, enabling
    zallet rpc to authenticate automatically without manual password setup.
    Cookie auth coexists with configured [[rpc.auth]] users.
  • RPC methods:
    • decoderawtransaction
    • decodescript
    • getwalletstatus
    • verifymessage
    • z_converttex
    • z_exportkey (Sapling extended spending keys only)
    • z_importaddress
    • z_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 by 0.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.0 build
    (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 ChainIndex interface,
    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.
  • getrawtransaction now correctly reports the fields asm, reqSigs, kind,
    and addresses for transparent outputs.
  • z_viewtransaction: The outgoing field is now omitted on outputs that
    zcashd didn't include in its response.
  • Significant performance improvements to zallet migrate-zcashd-wallet.
  • zallet migrate-zcashd-wallet now accepts --no-scan to skip chain scanning
    during migration.
  • zallet rpc now sends credentials via the Authorization header instead of
    embedding them in the HTTP URL.

Fixed

  • listaddresses no longer returns an internal error when the wallet contains
    standalone imported transparent keys (e.g. from a zcashd migration).
  • 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_sendmany no 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_index for coinbase transactions
    by routing each observed transaction through decrypt_and_store_transaction
    in addition to put_received_transparent_utxo. This enables
    z_shieldcoinbase (and any other consumer of
    TransparentOutputFilter::CoinbaseOnly) to correctly identify coinbase
    outputs.
  • z_sendmany no longer fails with Query returned no rows when 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-wallet now migrates transparent addresses that were
    added to the zcashd wallet via importpubkey or importaddress <redeemScript>.
  • zallet migrate-zcashd-wallet now migrates view-only Sapling keys that were
    added to the zcashd wallet via z_importviewingkey. Each imported viewing
    key becomes its own view-only account.