diff --git a/CHANGELOG.md b/CHANGELOG.md index ed74303136f..a7531c77834 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,56 @@ 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.1](https://github.com/ZcashFoundation/zebra/releases/tag/v1.0.0-beta.1) - 2021-11-19 + +Zebra's latest beta implements a number of consensus rules which will be needed for Zebra to fully validate all of the Zcash network consensus rules, including those which will activate with NU5. + +With this release we are also fixing a number of security issues that could pose a DDoS risk or otherwise negatively impact other nodes on the network. + +Finally, this release includes an upgrade to the latest version of tokio (1.14.0). + +### Added + +- Check Shielded Input and Output Limits (#3069, #3076) +- Sprout note commitment trees (#3051) +- Check per-block limits on transparent signature operations (#3049) +- Calculate Block Subsidy and Funding Streams (#3017, #3040) +- Check for duplicate crate dependencies in CI (#2986) +- Add unused seed peers to the Address Book (#2974, #3019) + +#### Network Upgrade 5 + +- Verify Halo2 proofs as part of V5 transaction verification (#2645, #3039) +- ZIP-155: Parse `addrv2` in Zebra (#3008, #3014, #3020, #3021, #3022, #3032) +- ZIP 212: validate Sapling and Orchard output of coinbase transactions (#3029) +- Validate Orchard flags in v5 (#3035) + +#### Documentation + +- Mempool Documentation (#2978) + +### Changed + +- Upgrade cryptographic library dependencies (#3059) +- Upgrade to Tokio 1.14.0 (#2933, #2994, #3062) + +#### Documentation + +- README Updates (#2996, #3006) + +### Fixed + +- Stop downloading unnecessary blocks in Zebra acceptance tests (#3072) +- Implement graceful shutdown for the peer set (#3071) +- Check for panics in the address book updater task (#3064) +- Remove unused connection errors (#3054) +- Fix listener address conflicts in network tests (#3031) + +### Security + +- Security: Avoid reconnecting to peers that are likely unreachable (#3030) +- Security: Limit number of addresses sent to peers to avoid address book pollution (#3007) + ## [Zebra 1.0.0-beta.0](https://github.com/ZcashFoundation/zebra/releases/tag/v1.0.0-beta.0) - 2021-10-29 This is the first beta release of Zebra. Today the mempool work is fully finished and compatible with [ZIP-401](https://zips.z.cash/zip-0401) and several security issues in the network stack are fixed. In addition to that we improved our documentation specially in the `zebrad` crate while we increased our test coverage. Finally, we get started with the task of upgrading Tokio to version 1. diff --git a/Cargo.lock b/Cargo.lock index 7bb01724223..12979df02f2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3617,7 +3617,7 @@ dependencies = [ [[package]] name = "tower-batch" -version = "0.2.16" +version = "0.2.17" dependencies = [ "color-eyre", "ed25519-zebra", @@ -3637,7 +3637,7 @@ dependencies = [ [[package]] name = "tower-fallback" -version = "0.2.13" +version = "0.2.14" dependencies = [ "futures-core", "pin-project 0.4.28", @@ -4307,7 +4307,7 @@ dependencies = [ [[package]] name = "zebra-chain" -version = "1.0.0-beta.0" +version = "1.0.0-beta.1" dependencies = [ "aes", "bech32", @@ -4365,7 +4365,7 @@ version = "1.0.0-beta.0" [[package]] name = "zebra-consensus" -version = "1.0.0-beta.0" +version = "1.0.0-beta.1" dependencies = [ "bellman", "blake2b_simd", @@ -4406,7 +4406,7 @@ dependencies = [ [[package]] name = "zebra-network" -version = "1.0.0-beta.0" +version = "1.0.0-beta.1" dependencies = [ "bitflags", "byteorder", @@ -4442,7 +4442,7 @@ version = "1.0.0-beta.0" [[package]] name = "zebra-script" -version = "1.0.0-beta.0" +version = "1.0.0-beta.1" dependencies = [ "displaydoc", "hex", @@ -4455,7 +4455,7 @@ dependencies = [ [[package]] name = "zebra-state" -version = "1.0.0-beta.0" +version = "1.0.0-beta.1" dependencies = [ "bincode", "chrono", @@ -4489,7 +4489,7 @@ dependencies = [ [[package]] name = "zebra-test" -version = "1.0.0-beta.0" +version = "1.0.0-beta.1" dependencies = [ "color-eyre", "futures", @@ -4512,7 +4512,7 @@ dependencies = [ [[package]] name = "zebra-utils" -version = "1.0.0-beta.0" +version = "1.0.0-beta.1" dependencies = [ "color-eyre", "hex", @@ -4527,7 +4527,7 @@ dependencies = [ [[package]] name = "zebrad" -version = "1.0.0-beta.0" +version = "1.0.0-beta.1" dependencies = [ "abscissa_core", "atty", diff --git a/README.md b/README.md index ea70941bbb5..ec1fda27590 100644 --- a/README.md +++ b/README.md @@ -84,16 +84,12 @@ all applicable consensus rules as of NU5 activation. Currently, Zebra does not validate the following Zcash consensus rules: #### NU5 -- ZIP-155 - Parse addrv2 in Zebra + - Full validation of Orchard transactions from NU5 onwards - - Check that at least one of enableSpendsOrchard or enableOutputsOrchard is set - Validation of Orchard anchors (root of the Orchard note commitment tree) - - Validation of Halo2 proofs #### NU4 - Canopy -- Calculation of Block Subsidy and Funding streams - Validation of coinbase miner subsidy and miner fees -- Validation of shielded outputs for coinbase transactions (ZIP-212/ZIP-213) #### NU1 - Sapling - Validation of Sapling anchors (root of the Sapling note commitment tree) @@ -126,7 +122,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.0 zebrad` +3. Run `cargo install --locked --git https://github.com/ZcashFoundation/zebra --tag v1.0.0-beta.1 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 @@ -201,12 +197,9 @@ See our [roadmap](#future-work) for details. There are a few bugs in Zebra that we're still working on fixing: - [When Zebra receives an unexpected network message from a peer, it disconnects from that peer #2107](https://github.com/ZcashFoundation/zebra/issues/2107) -- [A Zebra instance could be used to pollute the peer addresses of other nodes #1889](https://github.com/ZcashFoundation/zebra/issues/1889) - [Zebra's address book can use all available memory #1873](https://github.com/ZcashFoundation/zebra/issues/1873) -- [Zebra's address book can be flooded or taken over #1869](https://github.com/ZcashFoundation/zebra/issues/1869) - [Zebra does not evict pre-upgrade peers from the peer set across a network upgrade #706](https://github.com/ZcashFoundation/zebra/issues/706) - [Zebra accepts non-minimal height encodings #2226](https://github.com/ZcashFoundation/zebra/issues/2226) -- [Zebra nodes continually try to contact peers that always fail #1865](https://github.com/ZcashFoundation/zebra/issues/1865) - [In rare cases, Zebra panics on shutdown #1678](https://github.com/ZcashFoundation/zebra/issues/1678) - For examples, see [#2055](https://github.com/ZcashFoundation/zebra/issues/2055) and [#2209](https://github.com/ZcashFoundation/zebra/issues/2209) - These panics can be ignored, unless they happen frequently diff --git a/book/src/user/install.md b/book/src/user/install.md index 8a0b20b8161..49177357e00 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.0 zebrad` +3. Run `cargo install --locked --git https://github.com/ZcashFoundation/zebra --tag v1.0.0-beta.1 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 a16073943f8..cfb19d7bd4d 100644 --- a/tower-batch/Cargo.toml +++ b/tower-batch/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "tower-batch" -version = "0.2.16" +version = "0.2.17" authors = ["Zcash Foundation "] license = "MIT" edition = "2018" diff --git a/tower-fallback/Cargo.toml b/tower-fallback/Cargo.toml index 2716ea143c6..575267f6d66 100644 --- a/tower-fallback/Cargo.toml +++ b/tower-fallback/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "tower-fallback" -version = "0.2.13" +version = "0.2.14" authors = ["Zcash Foundation "] license = "MIT" edition = "2018" diff --git a/zebra-chain/Cargo.toml b/zebra-chain/Cargo.toml index 3467be9f7aa..b30c65a061f 100644 --- a/zebra-chain/Cargo.toml +++ b/zebra-chain/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "zebra-chain" -version = "1.0.0-beta.0" +version = "1.0.0-beta.1" authors = ["Zcash Foundation "] license = "MIT OR Apache-2.0" edition = "2018" diff --git a/zebra-consensus/Cargo.toml b/zebra-consensus/Cargo.toml index bf2d2bd489b..b62c4c9a9d8 100644 --- a/zebra-consensus/Cargo.toml +++ b/zebra-consensus/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "zebra-consensus" -version = "1.0.0-beta.0" +version = "1.0.0-beta.1" authors = ["Zcash Foundation "] license = "MIT OR Apache-2.0" edition = "2018" diff --git a/zebra-network/Cargo.toml b/zebra-network/Cargo.toml index dba67a014f6..dd60b88868d 100644 --- a/zebra-network/Cargo.toml +++ b/zebra-network/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "zebra-network" -version = "1.0.0-beta.0" +version = "1.0.0-beta.1" authors = ["Zcash Foundation "] license = "MIT OR Apache-2.0" edition = "2018" diff --git a/zebra-network/src/constants.rs b/zebra-network/src/constants.rs index 8fa7c2b0702..fc8f7b5aa31 100644 --- a/zebra-network/src/constants.rs +++ b/zebra-network/src/constants.rs @@ -150,7 +150,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.0/"; +pub const USER_AGENT: &str = "/Zebra:1.0.0-beta.1/"; /// 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 4851104d45f..ad96b9ab534 100644 --- a/zebra-script/Cargo.toml +++ b/zebra-script/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "zebra-script" -version = "1.0.0-beta.0" +version = "1.0.0-beta.1" authors = ["Zcash Foundation "] license = "MIT OR Apache-2.0" edition = "2018" diff --git a/zebra-state/Cargo.toml b/zebra-state/Cargo.toml index c62cb45a11f..ad65b948df8 100644 --- a/zebra-state/Cargo.toml +++ b/zebra-state/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "zebra-state" -version = "1.0.0-beta.0" +version = "1.0.0-beta.1" authors = ["Zcash Foundation "] license = "MIT OR Apache-2.0" edition = "2018" diff --git a/zebra-test/Cargo.toml b/zebra-test/Cargo.toml index a70c539eeb2..a403b42aa94 100644 --- a/zebra-test/Cargo.toml +++ b/zebra-test/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "zebra-test" -version = "1.0.0-beta.0" +version = "1.0.0-beta.1" authors = ["Zcash Foundation "] license = "MIT OR Apache-2.0" edition = "2018" diff --git a/zebra-utils/Cargo.toml b/zebra-utils/Cargo.toml index c5e2367de9a..b6ac01963d4 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.0" +version = "1.0.0-beta.1" edition = "2018" # Prevent accidental publication of this utility crate. publish = false diff --git a/zebrad/Cargo.toml b/zebrad/Cargo.toml index 6befbbd87b4..63e99b60c67 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.0" +version = "1.0.0-beta.1" edition = "2018" repository = "https://github.com/ZcashFoundation/zebra" # make `cargo run` use `zebrad` by default