diff --git a/CHANGELOG.md b/CHANGELOG.md index 0ded81aa..656b00b8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,68 @@ All notable changes to Zebra are documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org). +## [Zebra 1.0.0-beta.4](https://github.com/ZcashFoundation/zebra/releases/tag/v1.0.0-beta.4) - 2022-01-26 + +Zebra's latest beta improves the networking code and fixes some bugs. A couple of fixed bugs had +caused Zebra to hang in some situations. Some improvements to the documentation were also included. +All Rust crates have now been updated to use Rust 2021 Edition. + +### Added + +- Add a copy-state zebrad command, which copies blocks between two state services (#3175) + +#### Networking + +- Add isolated Tor connection API, but don't enable it by default (#3303) +- Add a test for message broadcast to the right number of peers (#3284) + +### Changed + +- Update to use Rust edition 2021 (#3332) + +#### Networking + +- Cache incoming unsolicited address messages, and use them as responses (#3294) +- Cleanup internal network request handler, fix unused request logging (#3295) + +#### Documentation + +- Document the consensus rules for Spend Transfers, Output Transfers, and their Descriptions (Section 3.6 of the Zcash protocol specification) (#3338) +- Document the structure of the zebra-network crate (#3317) +- Document the consensus rules for Note Commitment Trees (Section 3.8 of the Zcash Protocol Specification) (#3319) +- Document chain value balances consensus rules with new format (#3286) +- Document part of the block header consensus rules (#3296) + +### Fixed + +#### Consensus + +- Fix interstitial sprout anchors check (#3283) +- Check jubjub key correctness independent of redjubjub / jubjub (#3154) + +#### Networking + +- Fix some bugs related to isolated connections (#3302) +- Ignore unexpected block responses to fix error cascade when synchronizing blocks, improving synchronization speed (#3374) +- Cancel heartbeats that are waiting for a peer, rather than hanging Zebra (#3325) +- Stop ignoring some peers when updating the address book (#3292) +- Fix some address crawler timing issues (#3293) +- Retry Zcash sprout and sapling parameters download (#3306) +- Keep track of background peer tasks (#3253) + +#### Chain Synchronization + +- Fix deadlock in chain tip watch channel, that sometimes caused chain synchronization to hang (#3378) +- Fix syncer download order and add sync tests (#3168) + +#### Tests + +- Fix a type resolution error in the tests (#3304) + +### Security + +- Stop RocksDB and Tokio from calling unexpected code when zebrad exits (#3392) + ## [Zebra 1.0.0-beta.3](https://github.com/ZcashFoundation/zebra/releases/tag/v1.0.0-beta.3) - 2021-12-21 Zebra's latest beta works towards enforcing all consensus rules by validating JoinSplit Groth16 proofs diff --git a/Cargo.lock b/Cargo.lock index 9ec00d7d..cd305f70 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4789,7 +4789,7 @@ dependencies = [ [[package]] name = "tower-batch" -version = "0.2.19" +version = "0.2.20" dependencies = [ "color-eyre", "ed25519-zebra", @@ -4809,7 +4809,7 @@ dependencies = [ [[package]] name = "tower-fallback" -version = "0.2.15" +version = "0.2.16" dependencies = [ "futures-core", "pin-project 0.4.28", @@ -5490,7 +5490,7 @@ dependencies = [ [[package]] name = "zebra-chain" -version = "1.0.0-beta.3" +version = "1.0.0-beta.4" dependencies = [ "aes", "bech32", @@ -5549,7 +5549,7 @@ version = "1.0.0-beta.0" [[package]] name = "zebra-consensus" -version = "1.0.0-beta.3" +version = "1.0.0-beta.4" dependencies = [ "bellman", "blake2b_simd", @@ -5591,7 +5591,7 @@ dependencies = [ [[package]] name = "zebra-network" -version = "1.0.0-beta.3" +version = "1.0.0-beta.4" dependencies = [ "arti-client", "bitflags", @@ -5629,7 +5629,7 @@ version = "1.0.0-beta.0" [[package]] name = "zebra-script" -version = "1.0.0-beta.3" +version = "1.0.0-beta.4" dependencies = [ "displaydoc", "hex", @@ -5642,7 +5642,7 @@ dependencies = [ [[package]] name = "zebra-state" -version = "1.0.0-beta.3" +version = "1.0.0-beta.4" dependencies = [ "bincode", "chrono", @@ -5676,7 +5676,7 @@ dependencies = [ [[package]] name = "zebra-test" -version = "1.0.0-beta.3" +version = "1.0.0-beta.4" dependencies = [ "color-eyre", "futures", @@ -5699,7 +5699,7 @@ dependencies = [ [[package]] name = "zebra-utils" -version = "1.0.0-beta.3" +version = "1.0.0-beta.4" dependencies = [ "color-eyre", "hex", @@ -5714,7 +5714,7 @@ dependencies = [ [[package]] name = "zebrad" -version = "1.0.0-beta.3" +version = "1.0.0-beta.4" dependencies = [ "abscissa_core", "atty", diff --git a/README.md b/README.md index 2b2ac596..b8ca45d7 100644 --- a/README.md +++ b/README.md @@ -81,10 +81,7 @@ and Zebra implements all the features required to reach Zcash network consensus. The goals of the beta release series are for Zebra to act as a fully validating Zcash node, for all active consensus rules as of NU5 activation. -Currently, Zebra does not validate the following Zcash consensus rules: - -#### Sprout -- Validation of Sprout anchors (root of the Sprout note commitment tree) +Currently, Zebra validates all of the documented Zcash consensus rules, but it may not validate any: #### Other - Undocumented rules derived from Bitcoin @@ -105,7 +102,7 @@ for your platform: 2. Install Zebra's build dependencies: - **libclang:** the `libclang`, `libclang-dev`, `llvm`, or `llvm-dev` packages, depending on your package manager - **clang** or another C++ compiler: `g++`, `Xcode`, or `MSVC` -3. Run `cargo install --locked --git https://github.com/ZcashFoundation/zebra --tag v1.0.0-beta.3 zebrad` +3. Run `cargo install --locked --git https://github.com/ZcashFoundation/zebra --tag v1.0.0-beta.4 zebrad` 4. Run `zebrad start` (see [Running Zebra](user/run.md) for more information) If you're interested in testing out `zebrad` please feel free, but keep in mind diff --git a/book/src/user/install.md b/book/src/user/install.md index 5d0fa3df..b07b6f7b 100644 --- a/book/src/user/install.md +++ b/book/src/user/install.md @@ -9,7 +9,7 @@ for your platform: 2. Install Zebra's build dependencies: - **libclang:** the `libclang`, `libclang-dev`, `llvm`, or `llvm-dev` packages, depending on your package manager - **clang** or another C++ compiler: `g++`, `Xcode`, or `MSVC` -3. Run `cargo install --locked --git https://github.com/ZcashFoundation/zebra --tag v1.0.0-beta.3 zebrad` +3. Run `cargo install --locked --git https://github.com/ZcashFoundation/zebra --tag v1.0.0-beta.4 zebrad` 4. Run `zebrad start` (see [Running Zebra](user/run.md) for more information) If you're interested in testing out `zebrad` please feel free, but keep in mind diff --git a/tower-batch/Cargo.toml b/tower-batch/Cargo.toml index fb6c6474..5399884a 100644 --- a/tower-batch/Cargo.toml +++ b/tower-batch/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "tower-batch" -version = "0.2.19" +version = "0.2.20" authors = ["Zcash Foundation "] license = "MIT" edition = "2021" diff --git a/tower-fallback/Cargo.toml b/tower-fallback/Cargo.toml index 3c991daa..48b1eff4 100644 --- a/tower-fallback/Cargo.toml +++ b/tower-fallback/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "tower-fallback" -version = "0.2.15" +version = "0.2.16" authors = ["Zcash Foundation "] license = "MIT" edition = "2021" diff --git a/zebra-chain/Cargo.toml b/zebra-chain/Cargo.toml index 0bf3bf13..dab310d3 100644 --- a/zebra-chain/Cargo.toml +++ b/zebra-chain/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "zebra-chain" -version = "1.0.0-beta.3" +version = "1.0.0-beta.4" authors = ["Zcash Foundation "] license = "MIT OR Apache-2.0" edition = "2021" diff --git a/zebra-consensus/Cargo.toml b/zebra-consensus/Cargo.toml index 4f431258..d1a1ee05 100644 --- a/zebra-consensus/Cargo.toml +++ b/zebra-consensus/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "zebra-consensus" -version = "1.0.0-beta.3" +version = "1.0.0-beta.4" authors = ["Zcash Foundation "] license = "MIT OR Apache-2.0" edition = "2021" diff --git a/zebra-network/Cargo.toml b/zebra-network/Cargo.toml index 12480126..d418eeb4 100644 --- a/zebra-network/Cargo.toml +++ b/zebra-network/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "zebra-network" -version = "1.0.0-beta.3" +version = "1.0.0-beta.4" authors = ["Zcash Foundation "] license = "MIT OR Apache-2.0" edition = "2021" diff --git a/zebra-network/src/constants.rs b/zebra-network/src/constants.rs index 67867f0d..979b2283 100644 --- a/zebra-network/src/constants.rs +++ b/zebra-network/src/constants.rs @@ -197,7 +197,7 @@ pub const TIMESTAMP_TRUNCATION_SECONDS: u32 = 30 * 60; /// [BIP 14]: https://github.com/bitcoin/bips/blob/master/bip-0014.mediawiki // // TODO: generate this from crate metadata (#2375) -pub const USER_AGENT: &str = "/Zebra:1.0.0-beta.3/"; +pub const USER_AGENT: &str = "/Zebra:1.0.0-beta.4/"; /// The Zcash network protocol version implemented by this crate, and advertised /// during connection setup. diff --git a/zebra-script/Cargo.toml b/zebra-script/Cargo.toml index 3192849b..3280f44f 100644 --- a/zebra-script/Cargo.toml +++ b/zebra-script/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "zebra-script" -version = "1.0.0-beta.3" +version = "1.0.0-beta.4" authors = ["Zcash Foundation "] license = "MIT OR Apache-2.0" edition = "2021" diff --git a/zebra-state/Cargo.toml b/zebra-state/Cargo.toml index e88a5592..dd91067e 100644 --- a/zebra-state/Cargo.toml +++ b/zebra-state/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "zebra-state" -version = "1.0.0-beta.3" +version = "1.0.0-beta.4" authors = ["Zcash Foundation "] license = "MIT OR Apache-2.0" edition = "2021" diff --git a/zebra-test/Cargo.toml b/zebra-test/Cargo.toml index 89d88e53..cbccd231 100644 --- a/zebra-test/Cargo.toml +++ b/zebra-test/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "zebra-test" -version = "1.0.0-beta.3" +version = "1.0.0-beta.4" authors = ["Zcash Foundation "] license = "MIT OR Apache-2.0" edition = "2021" diff --git a/zebra-utils/Cargo.toml b/zebra-utils/Cargo.toml index 9d6c851f..7b7ebe09 100644 --- a/zebra-utils/Cargo.toml +++ b/zebra-utils/Cargo.toml @@ -2,7 +2,7 @@ name = "zebra-utils" authors = ["Zcash Foundation "] license = "MIT OR Apache-2.0" -version = "1.0.0-beta.3" +version = "1.0.0-beta.4" edition = "2021" # Prevent accidental publication of this utility crate. publish = false diff --git a/zebrad/Cargo.toml b/zebrad/Cargo.toml index 3a073c59..8eb5e910 100644 --- a/zebrad/Cargo.toml +++ b/zebrad/Cargo.toml @@ -2,7 +2,7 @@ name = "zebrad" authors = ["Zcash Foundation "] license = "MIT OR Apache-2.0" -version = "1.0.0-beta.3" +version = "1.0.0-beta.4" edition = "2021" repository = "https://github.com/ZcashFoundation/zebra" # make `cargo run` use `zebrad` by default