Release Zebra v1.0.0-beta.3 (#3256)

* Release Zebra v1.0.0-beta.3

* Apply suggestions from code review

Co-authored-by: teor <teor@riseup.net>

* Bump date

* Add recently merged entry to changelog

* Bump date, add recent merged PR to changelog

* Apply suggestions from code review

Co-authored-by: teor <teor@riseup.net>

* Apply suggestions from code review

Co-authored-by: teor <teor@riseup.net>

Co-authored-by: teor <teor@riseup.net>
This commit is contained in:
Conrado Gouvea 2021-12-21 19:42:39 -03:00 committed by GitHub
parent b71833292d
commit a5713da0af
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
15 changed files with 75 additions and 44 deletions

View File

@ -4,6 +4,43 @@ 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.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
used by Sprout transactions. We have also added security and network improvements, and have also
added some metrics to help diagnose networking issues.
### Added
#### Consensus
- Validate JoinSplit proofs (#3128, #3180)
#### Networking
- Add and use `debug_skip_parameter_preload` config option in tests (#3197)
- Disconnect from outdated peers on network upgrade (#3108)
#### Metrics
- Add diagnostics for peer set hangs (#3203)
- Add debug-level Zebra network message tracing (#3170)
### Fixed
- Stop ignoring some connection errors that could make the peer set hang (#3200)
- Spawn initial handshakes in separate tasks, Credit: Equilibrium (#3189)
- Fix coinbase height deserialization to reject non-minimal encodings (#3129)
- Stop doing thousands of time checks each time we connect to a peer (#3106)
### Security
- Stop ignoring panics in inbound handshakes (#3192)
- When there are no new peers, stop crawler using CPU and writing logs (#3177)
- Limit address book size to limit memory usage (#3162)
- Drop blocks that are a long way ahead of the tip, or behind the finalized tip (#3167)
## [Zebra 1.0.0-beta.2](https://github.com/ZcashFoundation/zebra/releases/tag/v1.0.0-beta.2) - 2021-12-03
Zebra's latest beta continues implementing zero-knowledge proof and note commitment tree validation. In this release, we have finished implementing transaction header, transaction amount, and Zebra-specific NU5 validation. (NU5 mainnet validation is waiting on an `orchard` crate update, and some consensus parameter updates.)
@ -12,41 +49,41 @@ We also fix a number of security issues that could pose a local denial of servic
As of this release, Zebra will automatically download and cache the Sprout and Sapling Groth16 circuit parameters. The cache uses around 1 GB of disk space. These cached parameters are shared across all Zebra and `zcashd` instances run by the same user.
## Added
### Added
### Network Upgrade 5
#### Network Upgrade 5
- Validate orchard anchors (#3084)
### Groth16 Circuit Parameters
#### Groth16 Circuit Parameters
- Automatically download and cache Zcash Sapling and Sprout parameters (#3057, #3085)
- Stop linking the Sapling parameters into the `zebrad` and Zebra test executables (#3057)
### Proof & Anchor Verification
#### Proof & Anchor Verification
- Use prepared verifying key for non-batch Sapling Groth16 verification (#3092)
- Validate sapling anchors⚓ (#3084)
- Add Sprout anchors to `zebra-state` (#3100)
### Transaction Amount & Header Validation
#### Transaction Amount & Header Validation
- Validate miner transaction fees (#3067, #3093)
- Validate transaction lock times (#3060)
- Validate transaction expiry height (#3082, #3103)
### Dashboards
#### Dashboards
- Add transaction-verification.json Grafana dashboard (#3122)
## Fixed
### Fixed
- Shut down channels and tasks on PeerSet Drop (#3078)
- Re-order Zebra startup, so slow services are launched last (#3091)
- Fix slow Zebra startup times, to reduce CI failures (#3104)
- Speed up CI, and split unrelated and conflicting CI jobs (#3077)
## Security
### Security
- Stop closing connections on unexpected messages, Credit: Equilibrium (#3120, #3131)
- Stop routing inventory requests by peer address (#3090)
@ -138,7 +175,7 @@ This is the first beta release of Zebra. Today the mempool work is fully finishe
### Documentation
- Improve main `README` documentation and other book sections (#2967, #2894)
- Improve main `README` documentation and other book sections (#2967, #2894)
- Expand documentation for the mempool::crawler module (#2968)
- Improve mempool documentation (#2942, #2963, #2964, #2965)
- Improve documentation and types in the PeerSet (#2925)
@ -310,11 +347,11 @@ Zebra's latest alpha continues work on the mempool.
#### Documentation
- Document consensus rules for version group IDs (#2719)
- Specify Zebra Client will only support Unified Addresses (#2706)
- Specify Zebra Client will only support Unified Addresses (#2706)
### Fixed
- Stop calculating transaction hashes twice in the checkpoint verifier (#2696)
- Stop calculating transaction hashes twice in the checkpoint verifier (#2696)
### Security
@ -691,7 +728,7 @@ Zebra's latest alpha continues our work on NU5, including Orchard and Transactio
- Stop panicking on out-of-range version timestamps (#2148)
- This security issue was reported by Equilibrium
- Stop gossiping temporary inbound remote addresses to peers (#2120)
- If Zebra was configured with a valid (not unspecified) listener address, it would gossip the ephemeral ports of inbound connections to its peers. This fix stops Zebra sending these useless addresses to its mainnet and testnet peers.
- If Zebra was configured with a valid (not unspecified) listener address, it would gossip the ephemeral ports of inbound connections to its peers. This fix stops Zebra sending these useless addresses to its mainnet and testnet peers.
- Avoid silently corrupting invalid times during serialization (#2149)
- Do version checks first, then send a verack response (#2121)
- Remove checkout credentials from GitHub actions (#2158)
@ -706,7 +743,7 @@ Zebra's latest alpha continues our work on NU5, including Orchard and Transactio
#### Network Upgrade 5
- Continue implementation of Transaction V5 (#2070, #2075, #2100)
- Continue implementation of Transaction V5 (#2070, #2075, #2100)
- Implementation of data structures for Orchard support in Zebra (#1885)
- Implementation of redpallas in Zebra (#2099)
@ -826,7 +863,7 @@ The Zebra project now has a [Code of Conduct](https://github.com/ZcashFoundation
- Make shielded data and spends generic over Transaction V4 and V5 (#1946, #1989)
- Async batching for:
- Sprout `JoinSplit` signatures (#1952)
- Sapling `Spend` and `Output` Groth16 proofs (#1713)
- Sapling `Spend` and `Output` Groth16 proofs (#1713)
- Enable `Joinsplit` and `Spend` spend auth sighash verification (#1940)
- Randomised property tests for `InventoryHash` and `MetaAddr` (#1985)
@ -874,7 +911,7 @@ Some notable changes include:
- Fix CI disk space usage by disabling incremental compilation in coverage builds (#1923)
### Security
- Stop relying on unchecked length fields when preallocating vectors (#1925)
- Stop relying on unchecked length fields when preallocating vectors (#1925)
## [Zebra v1.0.0-alpha.4](https://github.com/ZcashFoundation/zebra/releases/tag/v1.0.0-alpha.4) - 2021-03-17

20
Cargo.lock generated
View File

@ -3665,7 +3665,7 @@ dependencies = [
[[package]]
name = "tower-batch"
version = "0.2.18"
version = "0.2.19"
dependencies = [
"color-eyre",
"ed25519-zebra",
@ -3685,7 +3685,7 @@ dependencies = [
[[package]]
name = "tower-fallback"
version = "0.2.14"
version = "0.2.15"
dependencies = [
"futures-core",
"pin-project 0.4.28",
@ -4333,7 +4333,7 @@ dependencies = [
[[package]]
name = "zebra-chain"
version = "1.0.0-beta.2"
version = "1.0.0-beta.3"
dependencies = [
"aes",
"bech32",
@ -4391,7 +4391,7 @@ version = "1.0.0-beta.0"
[[package]]
name = "zebra-consensus"
version = "1.0.0-beta.2"
version = "1.0.0-beta.3"
dependencies = [
"bellman",
"blake2b_simd",
@ -4433,7 +4433,7 @@ dependencies = [
[[package]]
name = "zebra-network"
version = "1.0.0-beta.2"
version = "1.0.0-beta.3"
dependencies = [
"bitflags",
"byteorder",
@ -4469,7 +4469,7 @@ version = "1.0.0-beta.0"
[[package]]
name = "zebra-script"
version = "1.0.0-beta.2"
version = "1.0.0-beta.3"
dependencies = [
"displaydoc",
"hex",
@ -4482,7 +4482,7 @@ dependencies = [
[[package]]
name = "zebra-state"
version = "1.0.0-beta.2"
version = "1.0.0-beta.3"
dependencies = [
"bincode",
"chrono",
@ -4516,7 +4516,7 @@ dependencies = [
[[package]]
name = "zebra-test"
version = "1.0.0-beta.2"
version = "1.0.0-beta.3"
dependencies = [
"color-eyre",
"futures",
@ -4539,7 +4539,7 @@ dependencies = [
[[package]]
name = "zebra-utils"
version = "1.0.0-beta.2"
version = "1.0.0-beta.3"
dependencies = [
"color-eyre",
"hex",
@ -4554,7 +4554,7 @@ dependencies = [
[[package]]
name = "zebrad"
version = "1.0.0-beta.2"
version = "1.0.0-beta.3"
dependencies = [
"abscissa_core",
"atty",

View File

@ -83,9 +83,6 @@ for all active consensus rules as of NU5 activation.
Currently, Zebra does not validate the following Zcash consensus rules:
#### NU1 - Sapling
- Validation of Sprout JoinSplit-on-Groth16 proofs
#### Sprout
- Validation of Sprout anchors (root of the Sprout note commitment tree)
@ -108,7 +105,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.2 zebrad`
3. Run `cargo install --locked --git https://github.com/ZcashFoundation/zebra --tag v1.0.0-beta.3 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
@ -186,9 +183,6 @@ See our [roadmap](#future-work) for details.
## Known Issues
There are a few bugs in Zebra that we're still working on fixing:
- [Zebra's address book can use all available memory #1873](https://github.com/ZcashFoundation/zebra/issues/1873)
- [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)
- [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

View File

@ -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.1 zebrad`
3. Run `cargo install --locked --git https://github.com/ZcashFoundation/zebra --tag v1.0.0-beta.3 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

View File

@ -1,6 +1,6 @@
[package]
name = "tower-batch"
version = "0.2.18"
version = "0.2.19"
authors = ["Zcash Foundation <zebra@zfnd.org>"]
license = "MIT"
edition = "2018"

View File

@ -1,6 +1,6 @@
[package]
name = "tower-fallback"
version = "0.2.14"
version = "0.2.15"
authors = ["Zcash Foundation <zebra@zfnd.org>"]
license = "MIT"
edition = "2018"

View File

@ -1,6 +1,6 @@
[package]
name = "zebra-chain"
version = "1.0.0-beta.2"
version = "1.0.0-beta.3"
authors = ["Zcash Foundation <zebra@zfnd.org>"]
license = "MIT OR Apache-2.0"
edition = "2018"

View File

@ -1,6 +1,6 @@
[package]
name = "zebra-consensus"
version = "1.0.0-beta.2"
version = "1.0.0-beta.3"
authors = ["Zcash Foundation <zebra@zfnd.org>"]
license = "MIT OR Apache-2.0"
edition = "2018"

View File

@ -1,6 +1,6 @@
[package]
name = "zebra-network"
version = "1.0.0-beta.2"
version = "1.0.0-beta.3"
authors = ["Zcash Foundation <zebra@zfnd.org>"]
license = "MIT OR Apache-2.0"
edition = "2018"

View File

@ -192,7 +192,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.2/";
pub const USER_AGENT: &str = "/Zebra:1.0.0-beta.3/";
/// The Zcash network protocol version implemented by this crate, and advertised
/// during connection setup.

View File

@ -1,6 +1,6 @@
[package]
name = "zebra-script"
version = "1.0.0-beta.2"
version = "1.0.0-beta.3"
authors = ["Zcash Foundation <zebra@zfnd.org>"]
license = "MIT OR Apache-2.0"
edition = "2018"

View File

@ -1,6 +1,6 @@
[package]
name = "zebra-state"
version = "1.0.0-beta.2"
version = "1.0.0-beta.3"
authors = ["Zcash Foundation <zebra@zfnd.org>"]
license = "MIT OR Apache-2.0"
edition = "2018"

View File

@ -1,6 +1,6 @@
[package]
name = "zebra-test"
version = "1.0.0-beta.2"
version = "1.0.0-beta.3"
authors = ["Zcash Foundation <zebra@zfnd.org>"]
license = "MIT OR Apache-2.0"
edition = "2018"

View File

@ -2,7 +2,7 @@
name = "zebra-utils"
authors = ["Zcash Foundation <zebra@zfnd.org>"]
license = "MIT OR Apache-2.0"
version = "1.0.0-beta.2"
version = "1.0.0-beta.3"
edition = "2018"
# Prevent accidental publication of this utility crate.
publish = false

View File

@ -2,7 +2,7 @@
name = "zebrad"
authors = ["Zcash Foundation <zebra@zfnd.org>"]
license = "MIT OR Apache-2.0"
version = "1.0.0-beta.2"
version = "1.0.0-beta.3"
edition = "2018"
repository = "https://github.com/ZcashFoundation/zebra"
# make `cargo run` use `zebrad` by default