librustzcash/zcash_primitives/CHANGELOG.md

164 lines
6.9 KiB
Markdown
Raw Normal View History

# Changelog
2021-02-04 07:16:32 -08:00
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/),
2021-02-04 07:16:32 -08:00
and this library adheres to Rust's notion of
[Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased]
### Changed
- MSRV is now 1.51.0.
2021-03-25 22:50:56 -07:00
## [0.5.0] - 2021-03-26
### Added
- Support for implementing candidate ZIPs before they have been selected for a
network upgrade, behind the `zfuture` feature flag.
- At runtime, these ZIPs are gated behind the new `NetworkUpgrade::ZFuture`
enum case, which is inaccessible without the `zfuture` feature flag. This
pseudo-NU can be enabled for private testing using a custom implementation
of the `Parameters` trait.
- New structs and methods:
- `zcash_primitives::consensus`:
- `BlockHeight`
- New methods on the `Parameters` trait:
- `coin_type`
- `hrp_sapling_extended_spending_key`
- `hrp_sapling_extended_full_viewing_key`
- `hrp_sapling_payment_address`
- `b58_pubkey_address_prefix`
- `b58_script_address_prefix`
- The `Network` enum, which enables code to be generic over the network type
at runtime.
2021-03-17 14:00:27 -07:00
- `zcash_primitives::memo`:
- `MemoBytes`, a minimal wrapper around the memo bytes, that only imposes
the existence of null-padding for shorter memos. `MemoBytes` is guaranteed
to be round-trip encodable (modulo null padding).
- `Memo`, an enum that implements the memo field format defined in
[ZIP 302](https://zips.z.cash/zip-0302). It can be converted to and from
`MemoBytes`.
- `zcash_primitives::primitives::Nullifier` struct.
- `zcash_primitives::transaction`:
- `TxVersion` enum, representing the set of valid transaction format
versions.
- `SignableInput` enum, encapsulating per-input data used when
creating transaction signatures.
- `zcash_primitives::primitives::SaplingIvk`, a newtype wrapper around `jubjub::Fr`
2021-03-10 09:39:18 -08:00
values that are semantically Sapling incoming viewing keys.
- Test helpers, behind the `test-dependencies` feature flag:
- `zcash_primitives::prover::mock::MockTxProver`, for building transactions in
tests without creating proofs.
- `zcash_primitives::transaction::Builder::test_only_new_with_rng` constructor
which accepts a non-`CryptoRng` randomness source (for e.g. deterministic
tests).
- `proptest` APIs for generating arbitrary Zcash types.
- New constants:
- `zcash_primitives::consensus`:
- `H0`, the height of the genesis block.
- `MAIN_NETWORK`
- `TEST_NETWORK`
- `zcash_primitives::constants::{mainnet, testnet, regtest}` modules,
containing network-specific constants.
- `zcash_primitives::note_encryption`:
- `ENC_CIPHERTEXT_SIZE`
- `OUT_CIPHERTEXT_SIZE`
- `zcash_primitives::transaction::components::amount`:
- `COIN`
- `MAX_MONEY`
- More implementations of standard traits:
- `zcash_primitives::consensus`:
- `Parameters: Clone`
- `MainNetwork: PartialEq`
- `TestNetwork: PartialEq`
- `zcash_primitives::legacy`:
- `Script: PartialEq`
- `TransparentAddress: Clone + PartialOrd + Hash`
- `zcash_primitives::redjubjub::PublicKey: Clone`
- `zcash_primitives::transaction`:
- `Transaction: Clone`
- `TransactionData: Clone + Default`
- `components::Amount: Eq + PartialOrd + Ord`
- `components::TxIn: Clone + PartialEq`
- `components::TxOut: PartialEq`
- `components::SpendDescription: Clone`
- `components::OutputDescription: Clone`
- `components::SproutProof: Clone`
- `components::JSDescription: Clone`
- `zcash_primitives::zip32::DiversifierIndex: Default`
### Changed
- MSRV is now 1.47.0.
- Trial decryption using the APIs in `zcash_primitives::note_encryption` is now
over 60% faster at detecting which notes are relevant.
- Part of this improvement was achieved by changing the APIs to take `epk` as
a `&jubjub::ExtendedPoint` instead of a `&SubgroupPoint`.
- Various APIs now take the network parameters as an explicit variable instead
of a type parameter:
- `zcash_primitives::consensus::BranchId::for_height`
- The `zcash_primitives::note_encryption` APIs.
- `zcash_primitives::transaction::builder`:
- `SaplingOutput::new`
- `Builder::new`
- `Builder::new_with_rng`
- `Parameters::activation_height` and `Parameters::is_nu_active` now take
`&self`.
- `zcash_primitives::merkle_tree::CommitmentTree::new` has been renamed to
`CommitmentTree::empty`.
2021-03-17 14:00:27 -07:00
- `zcash_primitives::note_encryption`:
- `SaplingNoteEncryption::new` now takes `MemoBytes`.
- The following APIs now return `MemoBytes`:
- `try_sapling_note_decryption`
- `try_sapling_output_recovery`
- `try_sapling_output_recovery_with_ock`
2021-03-10 09:39:18 -08:00
- `zcash_primitives::primitives::SaplingIvk` is now used where functions
previously used undistinguished `jubjub::Fr` values; this affects Sapling
note decryption and handling of IVKs by the wallet backend code.
- `zcash_primitives::primitives::ViewingKey::ivk` now returns `SaplingIvk`
- `zcash_primitives::primitives::Note::nf` now returns `Nullifier`.
- `zcash_primitives::transaction`:
- The `overwintered`, `version`, and `version_group_id` properties of the
`Transaction` and `TransactionData` structs have been replaced by
`version: TxVersion`.
- `components::amount::DEFAULT_FEE` is now 1000 zatoshis, following
[ZIP 313](https://zips.z.cash/zip-0313).
- The `nullifier` property of `components::SpendDescription` now has the type
`Nullifier`.
- `signature_hash` and `signature_hash_data` now take a `SignableInput`
argument instead of a `transparent_input` argument.
2021-03-17 14:00:27 -07:00
- `builder::SaplingOutput::new` and `builder::Builder::add_sapling_output` now
take `Option<MemoBytes>`.
### Removed
- `zcash_primitives::note_encryption::Memo` (replaced by
`zcash_primitives::memo::{Memo, MemoBytes}`).
## [0.4.0] - 2020-09-09
### Added
- `zcash_primitives::note_encryption::OutgoingCipherKey` - a symmetric key that
can be used to recover a single Sapling output. This will eventually be used
to implement Sapling payment disclosures.
### Changed
- MSRV is now 1.44.1.
- `zcash_primitives::note_encryption`:
- `SaplingNoteEncryption::new` now takes `Option<OutgoingViewingKey>`. Setting
this to `None` prevents the note from being recovered from the block chain
by the sender.
- The `rng: &mut R` parameter (where `R: RngCore + CryptoRng`) has been
changed to `rng: R` to enable this use case.
- `prf_ock` now returns `OutgoingCipherKey`.
- `try_sapling_output_recovery_with_ock` now takes `&OutgoingCipherKey`.
- `zcash_primitives::transaction::builder`:
- `SaplingOutput::new` and `Builder::add_sapling_output` now take
`Option<OutgoingViewingKey>` (exposing the new unrecoverable note option).
- Bumped dependencies to `ff 0.8`, `group 0.8`, `bls12_381 0.3.1`,
`jubjub 0.5.1`, `secp256k1 0.19`.
## [0.3.0] - 2020-08-24
TBD
## [0.2.0] - 2020-03-13
TBD
## [0.1.0] - 2019-10-08
Initial release.