191 lines
9.0 KiB
Markdown
191 lines
9.0 KiB
Markdown
# Changelog
|
|
All notable changes to this library will be documented in this file.
|
|
|
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
and this library adheres to Rust's notion of
|
|
[Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
|
|
## [Unreleased]
|
|
### Added
|
|
- Implementations of `zcash_client_backend::data_api::WalletReadTransparent`
|
|
and `WalletWriteTransparent` have been added. These implementations
|
|
are available only when the `transparent-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.
|
|
- `SqliteClientError::Protobuf`, to support handling of errors in serialized
|
|
protobuf data decoding.
|
|
- An `unstable` feature flag; this is added to parts of the API that may change
|
|
in any release. It enables `zcash_client_backend`'s `unstable` 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` implementation
|
|
`zcash_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.
|
|
- Implementations of `PartialEq`, `Eq`, `PartialOrd`, and `Ord` for `NoteId`
|
|
|
|
### 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 the `accounts` table has been replaced by a `ufvk`
|
|
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 the `extfvk` column.
|
|
- The `address` and `transparent_address` columns of the `accounts` table have
|
|
been removed.
|
|
- A new `addresses` table stores Unified Addresses, keyed on their `account`
|
|
and `diversifier_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 non-null column, `output_pool` has been added to the `sent_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.
|
|
- MSRV is now 1.56.1.
|
|
- Bumped dependencies to `ff 0.12`, `group 0.12`, `jubjub 0.9`, `zcash_primitives 0.8`.
|
|
- Renamed the following to use lower-case abbreviations (matching Rust
|
|
naming conventions):
|
|
- `zcash_client_sqlite::BlockDB` to `BlockDb`
|
|
- `zcash_client_sqlite::WalletDB` to `WalletDb`
|
|
- `zcash_client_sqlite::error::SqliteClientError::IncorrectHRPExtFVK` to
|
|
`IncorrectHrpExtFvk`.
|
|
- The SQLite implementations of `zcash_client_backend::data_api::WalletRead`
|
|
and `WalletWrite` 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` to `get_spendable_sapling_notes`.
|
|
- `select_spendable_notes` to `select_spendable_sapling_notes`.
|
|
- `zcash_client_sqlite::wallet::{get_spendable_sapling_notes, select_spendable_sapling_notes}`
|
|
have also been changed to take a parameter that permits the caller to
|
|
specify a set of notes to exclude from consideration.
|
|
- `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
|
|
- The following functions have been removed from the public interface of
|
|
`zcash_client_sqlite::wallet`. Prefer methods defined on
|
|
`zcash_client_backend::data_api::{WalletRead, WalletWrite}` instead.
|
|
- `get_extended_full_viewing_keys` (use `WalletRead::get_unified_full_viewing_keys` instead).
|
|
- `insert_sent_note` (use `WalletWrite::store_sent_tx` instead)
|
|
- `insert_sent_utxo` (use `WalletWrite::store_sent_tx` instead)
|
|
- `put_sent_note` (use `WalletWrite::store_decrypted_tx` instead)
|
|
- `put_sent_utxo` (use `WalletWrite::store_decrypted_tx` instead)
|
|
- `delete_utxos_above` (use `WalletWrite::rewind_to_height` instead)
|
|
- `zcash_client_sqlite::with_blocks` (use
|
|
`zcash_client_backend::data_api::BlockSource::with_blocks` instead)
|
|
- `zcash_client_sqlite::error::SqliteClientError` variants:
|
|
- `SqliteClientError::IncorrectHrpExtFvk`
|
|
- `SqliteClientError::Base58`
|
|
- `SqliteClientError::BackendError`
|
|
|
|
### Fixed
|
|
- The `zcash_client_backend::data_api::WalletRead::get_address` implementation
|
|
for `zcash_client_sqlite::WalletDb` now correctly returns `Ok(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 the
|
|
`zcash_client_backend::data_api` traits mentioned above instead.
|
|
- Deprecated in `zcash_client_sqlite::wallet`:
|
|
- `get_address`
|
|
- `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`
|
|
- `put_receiverd_note`
|
|
- `insert_witness`
|
|
- `prune_witnesses`
|
|
- `update_expired_notes`
|
|
- `get_address`
|
|
- Deprecated in `zcash_client_sqlite::wallet::transact`:
|
|
- `get_spendable_sapling_notes`
|
|
- `select_spendable_sapling_notes`
|
|
|
|
## [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 by `WalletDB::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 a `P: zcash_primitives::consensus::Parameters` variable.
|
|
|
|
### Removed
|
|
- `zcash_client_sqlite::address` module (moved to `zcash_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.
|