Clean up changelogs

This commit is contained in:
Jack Grigg 2022-11-11 20:29:26 +00:00
parent 116ed0a3fc
commit 318d1b7522
3 changed files with 160 additions and 173 deletions

View File

@ -10,23 +10,23 @@ and this library adheres to Rust's notion of
### Added
- Functionality that enables the receiving and spending of transparent funds,
behind the new `transparent-inputs` feature flag.
- A new `data_api::wallet::shield_transparent_funds` method has been added
to facilitate the automatic shielding of transparent funds received
by the wallet.
- A `zcash_client_backend::wallet::WalletTransparentOutput` type
in support of `transparent-inputs` functionality.
- A new `data_api::wallet::spend` method has been added, which is
intended to supersede the `data_api::wallet::create_spend_to_address`
method. This new method now constructs transactions via interpretation
of a `zcash_client_backend::zip321::TransactionRequest` value.
This facilitates the implementation of ZIP 321 support in wallets and
provides substantially greater flexibility in transaction creation.
- A new `zcash_client_backend::data_api::wallet::shield_transparent_funds`
method has been added to facilitate the automatic shielding of transparent
funds received by the wallet.
- A `zcash_client_backend::wallet::WalletTransparentOutput` type in support of
`transparent-inputs` functionality.
- An `unstable` feature flag; this is added to parts of the API that may change
in any release.
- `zcash_client_backend::address`:
- `RecipientAddress::Unified`
- `AddressMetadata`
- `impl Eq for UnifiedAddress`
- `zcash_client_backend::data_api`:
- `wallet::spend` method, intended to supersede the `wallet::create_spend_to_address`
method. This new method now constructs transactions via interpretation of a
`zcash_client_backend::zip321::TransactionRequest` value. This facilitates
the implementation of ZIP 321 support in wallets and provides substantially
greater flexibility in transaction creation.
- `PoolType`
- `ShieldedPool`
- `Recipient`
@ -63,18 +63,16 @@ and this library adheres to Rust's notion of
- `zcash_client_backend::encoding`
- `KeyError`
- `AddressCodec` implementations for `sapling::PaymentAddress` and
`UnifiedAddress`
`UnifiedAddress`.
- `zcash_client_backend::fees`
- `ChangeError`
- `ChangeStrategy`
- `ChangeValue`
- `TransactionBalance`
- `BasicFixedFeeChangeStrategy` - a `ChangeStrategy` implementation that
reproduces current wallet change behavior
- `fixed`, a new module containing of change selection strategies for the
existing fixed fee rule.
- `zip317`, a new module containing change selection strategies for the ZIP
317 fee rule.
- `fixed`, a module containing change selection strategies for the old fixed
fee rule.
- `zip317`, a module containing change selection strategies for the ZIP 317
fee rule.
- New experimental APIs that should be considered unstable, and are
likely to be modified and/or moved to a different module in a future
release:
@ -83,11 +81,10 @@ and this library adheres to Rust's notion of
- `zcash_client_backend::encoding::AddressCodec`
- `zcash_client_backend::encoding::encode_payment_address`
- `zcash_client_backend::encoding::encode_transparent_address`
- `impl Eq for zcash_client_backend::address::UnifiedAddress`
### Changed
- MSRV is now 1.56.1.
- Bumped dependencies to `ff 0.12`, `group 0.12`, `bls12_381 0.7`, `jubjub 0.9`,
- Bumped dependencies to `ff 0.12`, `group 0.12`, `bls12_381 0.7`
`zcash_primitives 0.8`, `orchard 0.3`.
- `zcash_client_backend::proto`:
- The Protocol Buffers bindings are now generated for `prost 0.11` instead of
@ -102,58 +99,74 @@ and this library adheres to Rust's notion of
been replaced by `ephemeral_key`.
- `zcash_client_backend::proto::compact_formats::CompactSaplingOutput`: the
`epk` method has been replaced by `ephemeral_key`.
- Renamed the following in `zcash_client_backend::data_api` to use lower-case
abbreviations (matching Rust naming conventions):
- `testing::MockWalletDB` to `testing::MockWalletDb`
- Changes to the `data_api::WalletRead` trait:
- `WalletRead::get_target_and_anchor_heights` now takes
a `min_confirmations` argument that is used to compute an upper bound on
the anchor height being returned; this had previously been hardcoded to
`data_api::wallet::ANCHOR_OFFSET`.
- `WalletRead::get_spendable_notes` has been renamed to
`get_spendable_sapling_notes` and now takes as an argument a vector of
note IDs to be excluded from consideration.
- `WalletRead::select_spendable_notes` has been renamed to
`select_spendable_sapling_notes` and now takes as an argument a vector of
note IDs to be excluded from consideration.
- The `WalletRead::NoteRef` and `WalletRead::TxRef` associated types are now
required to implement `Eq` and `Ord`
- The `zcash_client_backend::data_api::SentTransaction` type has been
substantially modified to accommodate handling of transparent inputs.
Per-output data has been split out into a new struct `SentTransactionOutput`
and `SentTransaction` can now contain multiple outputs, and tracks the
fee paid.
- `data_api::WalletWrite::store_received_tx` has been renamed to
`store_decrypted_tx`.
- `data_api::ReceivedTransaction` has been renamed to `DecryptedTransaction`,
and its `outputs` field has been renamed to `sapling_outputs`.
- `data_api::error::Error` has been substantially modified. It now wraps database,
note selection, builder, and other errors
- `Error::DataSource` has been added.
- `Error::NoteSelection` has been added.
- `Error::BalanceError` has been added.
- `Error::MemoForbidden` has been added.
- `Error::AddressNotRecognized` has been added.
- `Error::ChildIndexOutOfRange` has been added.
- `Error::NoteMismatch` has been added.
- `Error::InsufficientBalance` has been renamed `InsufficientFunds` and
restructured to have named fields.
- `Error::Protobuf` has been removed; these decoding errors are now
produced as data source and/or block-source implementation-specific
errors.
- `Error::InvalidChain` has been removed; its former purpose is now served
by `zcash_client_backend::data_api::chain::ChainError`.
- `Error::InvalidNewWitnessAnchor` and `Error::InvalidWitnessAnchor` have
been moved to `zcash_client_backend::data_api::chain::error::ContinuityError`
- `Error::InvalidExtSk` (now unused) has been removed.
- `Error::KeyNotFound` (now unused) has been removed.
- `Error::KeyDerivationError` (now unused) has been removed.
- `Error::SaplingNotActive` (now unused) has been removed.
- `zcash_client_backend::data_api`:
- Renamed the following to use lower-case abbreviations (matching Rust naming
conventions):
- `testing::MockWalletDB` to `testing::MockWalletDb`
- Changes to the `WalletRead` trait:
- `WalletRead::get_target_and_anchor_heights` now takes
a `min_confirmations` argument that is used to compute an upper bound on
the anchor height being returned; this had previously been hardcoded to
`wallet::ANCHOR_OFFSET`.
- `WalletRead::get_spendable_notes` has been renamed to
`get_spendable_sapling_notes`, and now takes as an argument a vector of
note IDs to be excluded from consideration.
- `WalletRead::select_spendable_notes` has been renamed to
`select_spendable_sapling_notes`, and now takes as an argument a vector of
note IDs to be excluded from consideration.
- The `WalletRead::NoteRef` and `WalletRead::TxRef` associated types are now
required to implement `Eq` and `Ord`
- `WalletWrite::store_received_tx` has been renamed to `store_decrypted_tx`.
- The `SentTransaction` type has been substantially modified to accommodate
handling of transparent inputs. Per-output data has been split out into a
new struct `SentTransactionOutput`, and `SentTransaction` can now contain
multiple outputs, and tracks the fee paid.
- `ReceivedTransaction` has been renamed to `DecryptedTransaction`, and its
`outputs` field has been renamed to `sapling_outputs`.
- `BlockSource` has been moved to the `chain` module.
- The types of the `with_row` callback argument to `BlockSource::with_blocks`
and the return type of this method have been modified to return
`chain::error::Error`.
- `testing::MockBlockSource` has been moved to
`chain::testing::MockBlockSource` module.
- `chain::{validate_chain, scan_cached_blocks}` have altered parameters and
result types. The latter have been modified to return`chain::error::Error`
instead of abstract error types. This new error type now wraps the errors of
the block source and wallet database to which these methods delegate IO
operations directly, which simplifies error handling in cases where callback
functions are involved.
- The error type of `wallet::decrypt_and_store_transaction` has been changed;
the error type produced by the provided `WalletWrite` instance is returned
directly.
- `error::ChainInvalid` has been moved to `chain::error`.
- `error::Error` has been substantially modified. It now wraps database,
note selection, builder, and other errors.
- Added new error cases:
- `Error::DataSource`
- `Error::NoteSelection`
- `Error::BalanceError`
- `Error::MemoForbidden`
- `Error::AddressNotRecognized`
- `Error::ChildIndexOutOfRange`
- `Error::NoteMismatch`
- `Error::InsufficientBalance` has been renamed to `InsufficientFunds` and
restructured to have named fields.
- `Error::Protobuf` has been removed; these decoding errors are now
produced as data source and/or block-source implementation-specific
errors.
- `Error::InvalidChain` has been removed; its former purpose is now served
by `chain::ChainError`.
- `Error::InvalidNewWitnessAnchor` and `Error::InvalidWitnessAnchor` have
been moved to `chain::error::ContinuityError`.
- `Error::InvalidExtSk` (now unused) has been removed.
- `Error::KeyNotFound` (now unused) has been removed.
- `Error::KeyDerivationError` (now unused) has been removed.
- `Error::SaplingNotActive` (now unused) has been removed.
- `zcash_client_backend::decrypt`:
- `decrypt_transaction` now takes a `HashMap<_, UnifiedFullViewingKey>`
instead of `HashMap<_, ExtendedFullViewingKey>`.
- If no memo is provided when sending to a shielded recipient, the
empty memo will be used
empty memo will be used.
- `zcash_client_backend::keys::spending_key` has been moved to the
`zcash_client_backend::keys::sapling` module.
- `zcash_client_backend::zip321::MemoError` has been renamed and
@ -165,11 +178,11 @@ and this library adheres to Rust's notion of
- `Zip321Error::TransparentMemo(usize)`
- `Zip321Error::RecipientMissing(usize)`
- `Zip321Error::ParseError(String)`
- The api of `welding_rig::ScanningKey` has changed to accommodate batch
decryption and to correctly handle scanning with the internal (change) keys
derived from ZIP 316 UFVKs and UIVKs.
- `welding_rig::scan_block` now uses batching for trial-decryption of
transaction outputs.
- `zcash_client_backend::welding_rig`:
- The API of `ScanningKey` has changed to accommodate batch decryption and to
correctly handle scanning with the internal (change) keys derived from ZIP
316 UFVKs and UIVKs.
- `scan_block` now uses batching for trial-decryption of transaction outputs.
- The return type of the following methods in `zcash_client_backend::encoding`
have been changed to improve error reporting:
- `decode_extended_spending_key`
@ -178,25 +191,6 @@ and this library adheres to Rust's notion of
- `zcash_client_backend::wallet::SpendableNote` is now parameterized by a note
identifier type and has an additional `note_id` field that is used to hold the
identifier used to refer to the note in the wallet database.
- `zcash_client_backend::data_api::BlockSource` has been moved to the
`zcash_client_backend::data_api::chain` module.
- The types of the `with_row` callback argument to `BlockSource::with_blocks`
and the return type of this method have been modified to return
`zcash_client_backend::data_api::chain::error::Error`.
- `zcash_client_backend::data_api::testing::MockBlockSource` has been moved to
`zcash_client_backend::data_api::chain::testing::MockBlockSource` module.
- `zcash_client_backend::data_api::chain::{validate_chain, scan_cached_blocks}`
have altered parameters and result types. The latter have been modified to
return`zcash_client_backend::data_api::chain::error::Error` instead of
abstract error types. This new error type now wraps the errors of the block
source and wallet database to which these methods delegate IO operations
directly, which simplifies error handling in cases where callback functions
are involved.
- `zcash_client_backend::data_api::error::ChainInvalid` has been moved to
`zcash_client_backend::data_api::chain::error`.
- The error type of `zcash_client_backend::data_api::wallet::decrypt_and_store_transaction`
has been changed; the error type produced by the provided `WalletWrite` instance is
returned directly.
### Deprecated
- `zcash_client_backend::data_api::wallet::create_spend_to_address` has been
@ -210,6 +204,7 @@ and this library adheres to Rust's notion of
### Removed
- `zcash_client_backend::data_api`:
- `wallet::ANCHOR_OFFSET`
- `WalletRead::get_extended_full_viewing_keys` (use
`WalletRead::get_unified_full_viewing_keys` instead).
- `WalletRead::get_address` (use `WalletRead::get_current_address` or
@ -220,10 +215,9 @@ and this library adheres to Rust's notion of
instead).
- Getters (use dedicated typed methods or direct field access instead).
- Setters (use direct field access instead).
- The hardcoded `data_api::wallet::ANCHOR_OFFSET` constant.
- `zcash_client_backend::wallet::AccountId` (moved to `zcash_primitives::zip32::AccountId`).
- The implementation of `welding_rig::ScanningKey` for `ExtendedFullViewingKey`
has been removed. Use `DiversifiableFullViewingKey` instead.
- `impl zcash_client_backend::welding_rig::ScanningKey for ExtendedFullViewingKey`
(use `DiversifiableFullViewingKey` instead).
## [0.5.0] - 2021-03-26
### Added

View File

@ -75,32 +75,30 @@ and this library adheres to Rust's notion of
- 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.
- `zcash_client_sqlite::wallet`:
- `get_spendable_notes` has been renamed to `get_spendable_sapling_notes`.
- `select_spendable_notes` has been renamed to `select_spendable_sapling_notes`.
- `get_spendable_sapling_notes` and `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.
- `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 losing 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)
- `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_backend::data_api::BlockSource::with_blocks` instead).
- `zcash_client_sqlite::error::SqliteClientError` variants:
- `SqliteClientError::IncorrectHrpExtFvk`
- `SqliteClientError::Base58`

View File

@ -8,80 +8,75 @@ and this library adheres to Rust's notion of
## [Unreleased]
### Added
- Added in `zcash_primitives::zip32`
- An implementation of `TryFrom<DiversifierIndex>` for `u32`
- `zcash_primitives::transaction::components::amount::NonNegativeAmount`
- Added to `zcash_primitives::transaction::builder`
- `Error::InsufficientFunds`
- `Error::ChangeRequired`
- `Error::Balance`
- `Error::Fee`
- Added to `zcash_primitives::transaction::builder`:
- `Error::{InsufficientFunds, ChangeRequired, Balance, Fee}`
- `Builder` state accessor methods:
- `Builder::params()`
- `Builder::target_height()`
- `Builder::transparent_inputs()`
- `Builder::transparent_outputs()`
- `Builder::sapling_inputs()`
- `Builder::sapling_outputs()`
- `zcash_primitives::transaction::fees` a new module containing abstractions
- `Builder::{params, target_height}`
- `Builder::{transparent_inputs, transparent_outputs}`
- `Builder::{sapling_inputs, sapling_outputs}`
- `zcash_primitives::transaction::fees`, a new module containing abstractions
and types related to fee calculations.
- `FeeRule` a trait that describes how to compute the fee required for a
- `FeeRule`, a trait that describes how to compute the fee required for a
transaction given inputs and outputs to the transaction.
- `fixed`, a new module containing an implementation of the existing fixed
fee rule.
- `zip317`, a new module containing an implementation of the ZIP 317 fee
rules.
- Added to `zcash_primitives::transaction::components::orchard`:
- `impl MapAuth<orchard::bundle::Authorized, orchard::bundle::Authorized> for ()`
(the identity map).
- Added to `zcash_primitives::transaction::components::sapling`:
- `impl MapAuth<Authorized, Authorized> for ()` (the identity map).
- `builder::SaplingBuilder::{inputs, outputs}`: accessors for Sapling builder
state.
- `zcash_primitives::transaction::components::sapling::fees`
- Added to `zcash_primitives::transaction::components::transparent::builder`
- `TransparentBuilder::{inputs, outputs}`: accessors for transparent builder state.
- `zcash_primitives::transaction::components::transparent::fees`
- `zcash_primitives::sapling::Note::commitment`
- Added to `zcash_primitives::zip32::sapling::DiversifiableFullViewingKey`
- `DiversifiableFullViewingKey::{diversified_address, diversified_change_address}`
- `impl Eq for zcash_primitves::sapling::PaymentAddress`
- `impl {PartialOrd, Ord} for zcash_primitves::transaction::components::transparent::OutPoint`
- `fixed`, a module containing an implementation of the old fixed fee rule.
- `zip317`, a module containing an implementation of the ZIP 317 fee rules.
- Added to `zcash_primitives::transaction::components`:
- `amount::NonNegativeAmount`
- Added to the `orchard` module:
- `impl MapAuth<orchard::bundle::Authorized, orchard::bundle::Authorized> for ()`
(the identity map).
- Added to the `sapling` module:
- `impl MapAuth<Authorized, Authorized> for ()` (the identity map).
- `builder::SaplingBuilder::{inputs, outputs}`: accessors for Sapling
builder state.
- `fees`, a module with Sapling-specific fee traits.
- Added to the `transparent` module:
- `impl {PartialOrd, Ord} for OutPoint`
- `builder::TransparentBuilder::{inputs, outputs}`: accessors for
transparent builder state.
- `fees`, a module with transparent-specific fee traits.
- Added to `zcash_primitives::sapling`:
- `Note::commitment`
- `impl Eq for PaymentAddress`
- Added to `zcash_primitives::zip32`:
- `impl TryFrom<DiversifierIndex> for u32`
- `sapling::DiversifiableFullViewingKey::{diversified_address, diversified_change_address}`
### Changed
- `zcash_primitives::transaction::builder::Builder::build` now takes a `FeeRule`
argument which is used to compute the fee for the transaction as part of the
build process.
- `zcash_primitives::transaction::builder::Builder::value_balance` now
returns `Result<Amount, BalanceError>` instead of `Option<Amount>`.
- `zcash_primitives::transaction::builder::Builder::{new, new_with_rng}` no
longer fixes the fee for transactions to 0.00001 ZEC; the builder instead
computes the fee using a `FeeRule` implementation at build time.
- `zcash_primitives::transaction::builder::Error` now is parameterized by the
types that can now be produced by fee calculation.
- `zcash_primitives::transaction::builder`:
- `Builder::build` now takes a `FeeRule` argument which is used to compute the
fee for the transaction as part of the build process.
- `Builder::value_balance` now returns `Result<Amount, BalanceError>` instead
of `Option<Amount>`.
- `Builder::{new, new_with_rng}` no longer fixes the fee for transactions to
0.00001 ZEC; the builder instead computes the fee using a `FeeRule`
implementation at build time.
- `Error` now is parameterized by the types that can now be produced by fee
calculation.
- `zcash_primitives::transaction::components::tze::builder::Builder::value_balance` now
returns `Result<Amount, BalanceError>` instead of `Option<Amount>`.
### Deprecated
- `zcash_primitives::zip32::sapling::to_extended_full_viewing_key` Use
`to_diversifiable_full_viewing_key` instead.
- `zcash_primitives::zip32::sapling::to_extended_full_viewing_key` (use
`to_diversifiable_full_viewing_key` instead).
### Removed
- Removed from `zcash_primitives::transaction::builder::Builder`
- Removed from `zcash_primitives::transaction::builder`:
- `Builder::{new_with_fee, new_with_rng_and_fee`} (use `Builder::{new, new_with_rng}`
instead along with a `FeeRule` implementation passed to `Builder::build`.)
- `Builder::send_change_to` has been removed. Change outputs must be added to the
builder by the caller, just like any other output.
- Removed from `zcash_primitives::transaction::builder::Error`
- `Builder::send_change_to` (change outputs must be added to the builder by
the caller, just like any other output).
- `Error::ChangeIsNegative`
- `Error::NoChangeAddress`
- `Error::InvalidAmount` (replaced by `Error::BalanceError`)
- `zcash_primitives::transaction::components::sapling::builder::SaplingBuilder::get_candidate_change_address`
has been removed; change outputs must now be added by the caller.
- The `From<&ExtendedSpendingKey>` instance for `ExtendedFullViewingKey` has been
removed. Use `ExtendedSpendingKey::to_diversifiable_full_viewing_key` instead.
- `zcash_primitives::sapling::Node::new` has been removed. Use
`Node::from_scalar` or (preferably) `Note::commitment` instead.
- `Error::InvalidAmount` (replaced by `Error::BalanceError`).
- Removed from `zcash_primitives::transaction::components::sapling::builder`:
- `SaplingBuilder::get_candidate_change_address` (change outputs must now be
added by the caller).
- Removed from `zcash_primitives::zip32::sapling`:
- `impl From<&ExtendedSpendingKey> for ExtendedFullViewingKey` (use
`ExtendedSpendingKey::to_diversifiable_full_viewing_key` instead).
- `zcash_primitives::sapling::Node::new` (use `Node::from_scalar` or preferably
`Note::commitment` instead).
## [0.8.1] - 2022-10-19
### Added