8.4 KiB
8.4 KiB
Changelog
All notable changes to this library will be documented in this file.
The format is based on Keep a Changelog, and this library adheres to Rust's notion of Semantic Versioning.
[Unreleased]
Added
- Implementations of
zcash_client_backend::data_api::WalletReadTransparent
andWalletWriteTransparent
have been added. These implementations are available only when thetransparent-inputs
feature flag is enabled. - New error variants:
SqliteClientError::TransparentAddress
, to support handling of errors in transparent address decoding.SqliteClientError::RequestedRewindInvalid
, to report when requested rewinds exceed supported bounds.SqliteClientError::DiversifierIndexOutOfRange
, to report when the space of available diversifier indices has been exhausted.SqliteClientError::AccountIdDiscontinuity
, to report when a user attempts to initialize the accounts table with a noncontiguous set of account identifiers.SqliteClientError::AccountIdOutOfRange
, to report when the maximum account identifier has been reached.
- An
unstable
feature flag; this is added to parts of the API that may change in any release. It enableszcash_client_backend
'sunstable
feature flag. - New summary views that may be directly accessed in the sqlite database.
The structure of these views should be considered unstable; they may
be replaced by accessors provided by the data access API at some point
in the future:
v_transactions
v_tx_received
v_tx_sent
zcash_client_sqlite::wallet::init::WalletMigrationError
- A filesystem-backed
BlockSource
implementationzcash_client_sqlite::FsBlockDb
. This block source expects blocks to be stored on disk in individual files named following the pattern<blockmeta_root>/blocks/<blockheight>-<blockhash>-compactblock
. A SQLite database stored at<blockmeta_root>/blockmeta.sqlite
stores metadata for this block source.zcash_client_sqlite::chain::init::init_blockmeta_db
creates the required metadata cache database.
Changed
- Various BREAKING CHANGES have been made to the database tables. These will
require migrations, which may need to be performed in multiple steps. Migrations
will now be automatically performed for any user using
zcash_client_sqlite::wallet::init_wallet_db
and it is recommended to use this method to maintain the state of the database going forward.- The
extfvk
column in theaccounts
table has been replaced by aufvk
column. Values for this column should be derived from the wallet's seed and the account number; the Sapling component of the resulting Unified Full Viewing Key should match the old value in theextfvk
column. - The
address
andtransparent_address
columns of theaccounts
table have been removed.- A new
addresses
table stores Unified Addresses, keyed on theiraccount
anddiversifier_index
, to enable storing diversifed Unified Addresses. - Transparent addresses for an account should be obtained by extracting the transparent receiver of a Unified Address for the account.
- A new
- A new non-null column,
output_pool
has been added to thesent_notes
table to enable distinguishing between Sapling and transparent outputs (and in the future, outputs to other pools). Values for this column should be assigned by inference from the address type in the stored data.
- The
- MSRV is now 1.56.1.
- Bumped dependencies to
ff 0.12
,group 0.12
,jubjub 0.9
. - Renamed the following to use lower-case abbreviations (matching Rust
naming conventions):
zcash_client_sqlite::BlockDB
toBlockDb
zcash_client_sqlite::WalletDB
toWalletDb
zcash_client_sqlite::error::SqliteClientError::IncorrectHRPExtFVK
toIncorrectHrpExtFvk
.
- The SQLite implementations of
zcash_client_backend::data_api::WalletRead
andWalletWrite
have been updated to reflect the changes to those traits. - Renamed the following to reflect their Sapling-specific nature:
zcash_client_sqlite::wallet
:get_spendable_notes
toget_spendable_sapling_notes
.select_spendable_notes
toselect_spendable_sapling_notes
.
- Altered the arguments to
zcash_client_sqlite::wallet::put_sent_note
to take the components of aDecryptedOutput
value to allow this method to be used in contexts where a transaction has just been constructed, rather than only in the case that a transaction has been decrypted after being retrieved from the network. zcash_client_sqlite::wallet::init_wallet_db
has been modified to take the wallet seed as an argument so that it can correctly perform migrations that require re-deriving key material. In particular for this upgrade, the seed is used to derive UFVKs to replace the currently stored Sapling extfvks (without loss of information) as part of the migration process.
Removed
zcash_client_sqlite::wallet
:get_extended_full_viewing_keys
(usezcash_client_backend::data_api::WalletRead::get_unified_full_viewing_keys
instead).
zcash_client_sqlite::with_blocks
(usezcash_client_backend::data_api::BlockSource::with_blocks
instead)
Fixed
- The
zcash_client_backend::data_api::WalletRead::get_address
implementation forzcash_client_sqlite::WalletDb
now correctly returnsOk(None)
if the account identifier does not correspond to a known account.
Deprecated
- A number of public API methods that are used internally to support the
zcash_client_backend::data_api::{WalletRead, WalletWrite}
interfaces have been deprecated, and will be removed from the public API in a future release. Users should depend upon the versions of these methods exposed via thezcash_client_backend::data_api
traits mentioned above instead.- Deprecated in
zcash_client_sqlite::wallet
:get_address
get_extended_full_viewing_keys
is_valid_account_extfvk
get_balance
get_balance_at
get_sent_memo
block_height_extrema
get_tx_height
get_block_hash
get_rewind_height
get_commitment_tree
get_witnesses
get_nullifiers
insert_block
put_tx_meta
put_tx_data
mark_sapling_note_spent
delete_utxos_above
put_receiverd_note
insert_witness
prune_witnesses
update_expired_notes
put_sent_note
put_sent_utxo
insert_sent_note
insert_sent_utxo
get_address
- Deprecated in
zcash_client_sqlite::wallet::transact
:get_spendable_sapling_notes
select_spendable_sapling_notes
- Deprecated in
[0.3.0] - 2021-03-26
This release contains a major refactor of the APIs to leverage the new Data
Access API in the zcash_client_backend
crate. API names are almost all the
same as before, but have been reorganized.
Added
zcash_client_sqlite::BlockDB
, a read-only wrapper for the SQLite connection to the block cache database.zcash_client_sqlite::WalletDB
, a read-only wrapper for the SQLite connection to the wallet database.zcash_client_sqlite::DataConnStmtCache
, a read-write wrapper for the SQLite connection to the wallet database. Returned byWalletDB::get_update_ops
.zcash_client_sqlite::NoteId
Changed
- MSRV is now 1.47.0.
- APIs now take
&BlockDB
and&WalletDB<P>
arguments, instead of paths to the block cache and wallet databases. - The library no longer uses the
mainnet
feature flag to specify the network type. APIs now take aP: zcash_primitives::consensus::Parameters
variable.
Removed
zcash_client_sqlite::address
module (moved tozcash_client_backend
).
Fixed
- Shielded transactions created by the wallet that have no change output (fully spending their input notes) are now correctly detected as mined when scanning compact blocks.
- Unshielding transactions created by the wallet (with a transparent recipient address) that have no change output no longer cause a panic.
[0.2.1] - 2020-10-24
Fixed
transact::create_to_address
now correctly reconstructs notes from the data DB after Canopy activation (zcash/librustzcash#311). This is critcal to correct operation of spends after Canopy.
[0.2.0] - 2020-09-09
Changed
- MSRV is now 1.44.1.
- Bumped dependencies to
ff 0.8
,group 0.8
,jubjub 0.5.1
,protobuf 2.15
,rusqlite 0.24
,zcash_primitives 0.4
,zcash_client_backend 0.4
.
[0.1.0] - 2020-08-24
Initial release.