From 6f503049c631804aca7d99615becb8be5cc1bd7a Mon Sep 17 00:00:00 2001 From: Alfredo Garcia Date: Fri, 1 Sep 2023 17:45:20 -0300 Subject: [PATCH] Release Zebra v1.2.0 (#7431) * chore: Release * change estimated release height * add 1.2.0 changelog * apply suggestions to changelog Co-authored-by: teor * remove item * change release date to today --------- Co-authored-by: teor --- CHANGELOG.md | 34 ++++++++++++++++---- Cargo.lock | 24 +++++++------- book/src/user/docker.md | 2 +- book/src/user/install.md | 4 +-- tower-batch-control/Cargo.toml | 2 +- tower-fallback/Cargo.toml | 2 +- zebra-chain/Cargo.toml | 4 +-- zebra-consensus/Cargo.toml | 14 ++++---- zebra-network/Cargo.toml | 4 +-- zebra-node-services/Cargo.toml | 4 +-- zebra-rpc/Cargo.toml | 14 ++++---- zebra-script/Cargo.toml | 4 +-- zebra-state/Cargo.toml | 6 ++-- zebra-test/Cargo.toml | 2 +- zebra-utils/Cargo.toml | 8 ++--- zebrad/Cargo.toml | 16 ++++----- zebrad/src/components/sync/end_of_support.rs | 2 +- 17 files changed, 84 insertions(+), 62 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 756eb2c3..7fa0bf01 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,22 +5,44 @@ 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.2.0](https://github.com/ZcashFoundation/zebra/releases/tag/v1.1.0) - 2023-07-18 +## [Zebra 1.2.0](https://github.com/ZcashFoundation/zebra/releases/tag/v1.2.0) - 2023-09-01 ### Highlights This release: -- Contains an automatic database upgrade that reduces the size of Zebra's - current cached state from approximately 276GB to 244GB. It does so by - automatically pruning unneeded note commitment trees from an existing cache. - New Zebra instances will also build their cache without these trees. -- +- Starts our work implementing "spend before sync" algorithm for lightwalletd. +- Contains an automatic database upgrade that reduces the size of Zebra's current cached state from approximately 276GB to 244GB. It does so by automatically pruning unneeded note commitment trees from an existing cache. New Zebra instances will also build their cache without these trees. ### Changed - Deduplicate note commitment trees stored in the finalized state ([#7312]()https://github.com/ZcashFoundation/zebra/pull/7312, [#7379](https://github.com/ZcashFoundation/zebra/pull/7379)) - Insert only the first tree in each series of identical trees into finalized state ([#7266](https://github.com/ZcashFoundation/zebra/pull/7266)) +- Our testing framework now uses the ECC lightwalletd fork ([#7307](https://github.com/ZcashFoundation/zebra/pull/7307)). This was needed to start the work of implementing fast spendability. The ECC repo is now the supported implementation in Zebra, documentation was changed to reflect this. ([#7427](https://github.com/ZcashFoundation/zebra/pull/7427)) + +### Breaking Changes + +`zebrad` 1.2.0 cached states are incompatible with previous `zebrad` versions: + +- `zebrad` 1.2.0 upgrades the cached state format. The new format is incompatible with previous `zebrad` versions. After upgrading to this Zebra version, don't downgrade to an earlier version. +- When earlier versions try to use states upgraded by `zebrad` 1.2.0: + - `zebrad` versions 1.0.0 and 1.0.1 will respond to some `z_gettreestate` RPC requests with incorrect empty `final_state` fields + - pre-release `zebrad` versions can panic when verifying shielded transactions, updating the state, or responding to RPC requests + +### Added + +- Documentation for mining with Docker ([#7179](https://github.com/ZcashFoundation/zebra/pull/7179)) +- Note tree sizes field to `getblock` RPC method ([#7278](https://github.com/ZcashFoundation/zebra/pull/7278)) +- Note commitment subtree types to zebra-chain ([#7371](https://github.com/ZcashFoundation/zebra/pull/7371)) +- Note subtree index handling to zebra-state, but we're not writing subtrees to the finalized state yet ([#7334](https://github.com/ZcashFoundation/zebra/pull/7334)) + +### Fixed + +- Log a warning instead of panicking for unused mining configs ([#7290](https://github.com/ZcashFoundation/zebra/pull/7290)) +- Avoid expensive note commitment tree root recalculations in eq() methods ([#7386](https://github.com/ZcashFoundation/zebra/pull/7386)) +- Use the correct state version for databases without a state version file ([#7385](https://github.com/ZcashFoundation/zebra/pull/7385)) +- Avoid temporary failures verifying the first non-finalized block or attempting to fork the chain before the final checkpoint ([#6810](https://github.com/ZcashFoundation/zebra/pull/6810)) +- If a database format change is cancelled, also cancel the format check, and don't mark the database as upgraded ([#7442](https://github.com/ZcashFoundation/zebra/pull/7442)) ## [Zebra 1.1.0](https://github.com/ZcashFoundation/zebra/releases/tag/v1.1.0) - 2023-07-18 diff --git a/Cargo.lock b/Cargo.lock index 322d5eaa..6ff4061f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4537,7 +4537,7 @@ dependencies = [ [[package]] name = "tower-batch-control" -version = "0.2.41-beta.4" +version = "0.2.41-beta.5" dependencies = [ "color-eyre", "ed25519-zebra", @@ -4561,7 +4561,7 @@ dependencies = [ [[package]] name = "tower-fallback" -version = "0.2.41-beta.4" +version = "0.2.41-beta.5" dependencies = [ "futures-core", "pin-project", @@ -5462,7 +5462,7 @@ dependencies = [ [[package]] name = "zebra-chain" -version = "1.0.0-beta.28" +version = "1.0.0-beta.29" dependencies = [ "bitflags 2.4.0", "bitflags-serde-legacy", @@ -5523,7 +5523,7 @@ dependencies = [ [[package]] name = "zebra-consensus" -version = "1.0.0-beta.28" +version = "1.0.0-beta.29" dependencies = [ "bellman", "blake2b_simd", @@ -5568,7 +5568,7 @@ dependencies = [ [[package]] name = "zebra-network" -version = "1.0.0-beta.28" +version = "1.0.0-beta.29" dependencies = [ "bitflags 2.4.0", "byteorder", @@ -5609,7 +5609,7 @@ dependencies = [ [[package]] name = "zebra-node-services" -version = "1.0.0-beta.28" +version = "1.0.0-beta.29" dependencies = [ "color-eyre", "jsonrpc-core", @@ -5621,7 +5621,7 @@ dependencies = [ [[package]] name = "zebra-rpc" -version = "1.0.0-beta.28" +version = "1.0.0-beta.29" dependencies = [ "chrono", "futures", @@ -5653,7 +5653,7 @@ dependencies = [ [[package]] name = "zebra-script" -version = "1.0.0-beta.28" +version = "1.0.0-beta.29" dependencies = [ "displaydoc", "hex", @@ -5666,7 +5666,7 @@ dependencies = [ [[package]] name = "zebra-state" -version = "1.0.0-beta.28" +version = "1.0.0-beta.29" dependencies = [ "bincode", "chrono", @@ -5708,7 +5708,7 @@ dependencies = [ [[package]] name = "zebra-test" -version = "1.0.0-beta.28" +version = "1.0.0-beta.29" dependencies = [ "color-eyre", "futures", @@ -5735,7 +5735,7 @@ dependencies = [ [[package]] name = "zebra-utils" -version = "1.0.0-beta.28" +version = "1.0.0-beta.29" dependencies = [ "color-eyre", "hex", @@ -5756,7 +5756,7 @@ dependencies = [ [[package]] name = "zebrad" -version = "1.1.0" +version = "1.2.0" dependencies = [ "abscissa_core", "atty", diff --git a/book/src/user/docker.md b/book/src/user/docker.md index 0f99bd11..2dd7a5f2 100644 --- a/book/src/user/docker.md +++ b/book/src/user/docker.md @@ -17,7 +17,7 @@ docker run --detach zfnd/zebra:latest ### Build it locally ```shell -git clone --depth 1 --branch v1.1.0 https://github.com/ZcashFoundation/zebra.git +git clone --depth 1 --branch v1.2.0 https://github.com/ZcashFoundation/zebra.git docker build --file docker/Dockerfile --target runtime --tag zebra:local . docker run --detach zebra:local ``` diff --git a/book/src/user/install.md b/book/src/user/install.md index 6bd65ad7..28e7fc1b 100644 --- a/book/src/user/install.md +++ b/book/src/user/install.md @@ -20,7 +20,7 @@ To compile Zebra directly from GitHub, or from a GitHub release source archive: ```sh git clone https://github.com/ZcashFoundation/zebra.git cd zebra -git checkout v1.1.0 +git checkout v1.2.0 ``` 3. Build and Run `zebrad` @@ -33,7 +33,7 @@ target/release/zebrad start ### Compiling from git using cargo install ```sh -cargo install --git https://github.com/ZcashFoundation/zebra --tag v1.1.0 zebrad +cargo install --git https://github.com/ZcashFoundation/zebra --tag v1.2.0 zebrad ``` ### Compiling on ARM diff --git a/tower-batch-control/Cargo.toml b/tower-batch-control/Cargo.toml index 8e1f6228..897c81cc 100644 --- a/tower-batch-control/Cargo.toml +++ b/tower-batch-control/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "tower-batch-control" -version = "0.2.41-beta.4" +version = "0.2.41-beta.5" authors = ["Zcash Foundation ", "Tower Maintainers "] description = "Tower middleware for batch request processing" # # Legal diff --git a/tower-fallback/Cargo.toml b/tower-fallback/Cargo.toml index 614dddff..b07f6f08 100644 --- a/tower-fallback/Cargo.toml +++ b/tower-fallback/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "tower-fallback" -version = "0.2.41-beta.4" +version = "0.2.41-beta.5" authors = ["Zcash Foundation "] description = "A Tower service combinator that sends requests to a first service, then retries processing on a second fallback service if the first service errors." license = "MIT OR Apache-2.0" diff --git a/zebra-chain/Cargo.toml b/zebra-chain/Cargo.toml index ba1656e3..a102aab9 100644 --- a/zebra-chain/Cargo.toml +++ b/zebra-chain/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "zebra-chain" -version = "1.0.0-beta.28" +version = "1.0.0-beta.29" authors = ["Zcash Foundation "] description = "Core Zcash data structures" license = "MIT OR Apache-2.0" @@ -126,7 +126,7 @@ proptest-derive = { version = "0.4.0", optional = true } rand = { version = "0.8.5", optional = true } rand_chacha = { version = "0.3.1", optional = true } -zebra-test = { path = "../zebra-test/", version = "1.0.0-beta.28", optional = true } +zebra-test = { path = "../zebra-test/", version = "1.0.0-beta.29", optional = true } [dev-dependencies] # Benchmarks diff --git a/zebra-consensus/Cargo.toml b/zebra-consensus/Cargo.toml index c3853e56..f4a2bf26 100644 --- a/zebra-consensus/Cargo.toml +++ b/zebra-consensus/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "zebra-consensus" -version = "1.0.0-beta.28" +version = "1.0.0-beta.29" authors = ["Zcash Foundation "] description = "Implementation of Zcash consensus checks" license = "MIT OR Apache-2.0" @@ -62,13 +62,13 @@ orchard = "0.5.0" zcash_proofs = { version = "0.12.1", features = ["local-prover", "multicore", "download-params"] } -tower-fallback = { path = "../tower-fallback/", version = "0.2.41-beta.4" } -tower-batch-control = { path = "../tower-batch-control/", version = "0.2.41-beta.4" } +tower-fallback = { path = "../tower-fallback/", version = "0.2.41-beta.5" } +tower-batch-control = { path = "../tower-batch-control/", version = "0.2.41-beta.5" } -zebra-script = { path = "../zebra-script", version = "1.0.0-beta.28" } -zebra-state = { path = "../zebra-state", version = "1.0.0-beta.28" } -zebra-node-services = { path = "../zebra-node-services", version = "1.0.0-beta.28" } -zebra-chain = { path = "../zebra-chain", version = "1.0.0-beta.28" } +zebra-script = { path = "../zebra-script", version = "1.0.0-beta.29" } +zebra-state = { path = "../zebra-state", version = "1.0.0-beta.29" } +zebra-node-services = { path = "../zebra-node-services", version = "1.0.0-beta.29" } +zebra-chain = { path = "../zebra-chain", version = "1.0.0-beta.29" } # prod feature progress-bar howudoin = { version = "0.1.2", optional = true } diff --git a/zebra-network/Cargo.toml b/zebra-network/Cargo.toml index 27a64778..34782c49 100644 --- a/zebra-network/Cargo.toml +++ b/zebra-network/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "zebra-network" -version = "1.0.0-beta.28" +version = "1.0.0-beta.29" authors = ["Zcash Foundation ", "Tower Maintainers "] description = "Networking code for Zebra" # # Legal @@ -83,7 +83,7 @@ howudoin = { version = "0.1.2", optional = true } proptest = { version = "1.2.0", optional = true } proptest-derive = { version = "0.4.0", optional = true } -zebra-chain = { path = "../zebra-chain", version = "1.0.0-beta.28", features = ["async-error"] } +zebra-chain = { path = "../zebra-chain", version = "1.0.0-beta.29", features = ["async-error"] } [dev-dependencies] proptest = "1.2.0" diff --git a/zebra-node-services/Cargo.toml b/zebra-node-services/Cargo.toml index 6dc65d94..2b6d1998 100644 --- a/zebra-node-services/Cargo.toml +++ b/zebra-node-services/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "zebra-node-services" -version = "1.0.0-beta.28" +version = "1.0.0-beta.29" authors = ["Zcash Foundation "] description = "The interfaces of some Zebra node services" license = "MIT OR Apache-2.0" @@ -35,7 +35,7 @@ rpc-client = [ ] [dependencies] -zebra-chain = { path = "../zebra-chain" , version = "1.0.0-beta.28" } +zebra-chain = { path = "../zebra-chain" , version = "1.0.0-beta.29" } # Optional dependencies diff --git a/zebra-rpc/Cargo.toml b/zebra-rpc/Cargo.toml index 54c4a6f6..d0ae564c 100644 --- a/zebra-rpc/Cargo.toml +++ b/zebra-rpc/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "zebra-rpc" -version = "1.0.0-beta.28" +version = "1.0.0-beta.29" authors = ["Zcash Foundation "] description = "A Zebra JSON Remote Procedure Call (JSON-RPC) interface" license = "MIT OR Apache-2.0" @@ -70,12 +70,12 @@ zcash_address = { version = "0.3.0", optional = true } # Test-only feature proptest-impl proptest = { version = "1.2.0", optional = true } -zebra-chain = { path = "../zebra-chain", version = "1.0.0-beta.28", features = ["json-conversion"] } -zebra-consensus = { path = "../zebra-consensus", version = "1.0.0-beta.28" } -zebra-network = { path = "../zebra-network", version = "1.0.0-beta.28" } -zebra-node-services = { path = "../zebra-node-services", version = "1.0.0-beta.28" } -zebra-script = { path = "../zebra-script", version = "1.0.0-beta.28" } -zebra-state = { path = "../zebra-state", version = "1.0.0-beta.28" } +zebra-chain = { path = "../zebra-chain", version = "1.0.0-beta.29", features = ["json-conversion"] } +zebra-consensus = { path = "../zebra-consensus", version = "1.0.0-beta.29" } +zebra-network = { path = "../zebra-network", version = "1.0.0-beta.29" } +zebra-node-services = { path = "../zebra-node-services", version = "1.0.0-beta.29" } +zebra-script = { path = "../zebra-script", version = "1.0.0-beta.29" } +zebra-state = { path = "../zebra-state", version = "1.0.0-beta.29" } [dev-dependencies] insta = { version = "1.31.0", features = ["redactions", "json", "ron"] } diff --git a/zebra-script/Cargo.toml b/zebra-script/Cargo.toml index ed595db7..de300fab 100644 --- a/zebra-script/Cargo.toml +++ b/zebra-script/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "zebra-script" -version = "1.0.0-beta.28" +version = "1.0.0-beta.29" authors = ["Zcash Foundation "] description = "Zebra script verification wrapping zcashd's zcash_script library" license = "MIT OR Apache-2.0" @@ -17,7 +17,7 @@ categories = ["api-bindings", "cryptography::cryptocurrencies"] [dependencies] zcash_script = "0.1.13" -zebra-chain = { path = "../zebra-chain", version = "1.0.0-beta.28" } +zebra-chain = { path = "../zebra-chain", version = "1.0.0-beta.29" } thiserror = "1.0.47" displaydoc = "0.2.4" diff --git a/zebra-state/Cargo.toml b/zebra-state/Cargo.toml index eefeaba0..486753b9 100644 --- a/zebra-state/Cargo.toml +++ b/zebra-state/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "zebra-state" -version = "1.0.0-beta.28" +version = "1.0.0-beta.29" authors = ["Zcash Foundation "] description = "State contextual verification and storage code for Zebra" license = "MIT OR Apache-2.0" @@ -71,13 +71,13 @@ tracing = "0.1.37" elasticsearch = { version = "8.5.0-alpha.1", default-features = false, features = ["rustls-tls"], optional = true } serde_json = { version = "1.0.105", package = "serde_json", optional = true } -zebra-chain = { path = "../zebra-chain", version = "1.0.0-beta.28", features = ["async-error"] } +zebra-chain = { path = "../zebra-chain", version = "1.0.0-beta.29", features = ["async-error"] } # prod feature progress-bar howudoin = { version = "0.1.2", optional = true } # test feature proptest-impl -zebra-test = { path = "../zebra-test/", version = "1.0.0-beta.28", optional = true } +zebra-test = { path = "../zebra-test/", version = "1.0.0-beta.29", optional = true } proptest = { version = "1.2.0", optional = true } proptest-derive = { version = "0.4.0", optional = true } diff --git a/zebra-test/Cargo.toml b/zebra-test/Cargo.toml index d2e5aff1..1e74218f 100644 --- a/zebra-test/Cargo.toml +++ b/zebra-test/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "zebra-test" -version = "1.0.0-beta.28" +version = "1.0.0-beta.29" authors = ["Zcash Foundation "] description = "Test harnesses and test vectors for Zebra" license = "MIT OR Apache-2.0" diff --git a/zebra-utils/Cargo.toml b/zebra-utils/Cargo.toml index d3e3dc37..5ed94fdb 100644 --- a/zebra-utils/Cargo.toml +++ b/zebra-utils/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "zebra-utils" -version = "1.0.0-beta.28" +version = "1.0.0-beta.29" authors = ["Zcash Foundation "] description = "Developer tools for Zebra maintenance and testing" license = "MIT OR Apache-2.0" @@ -74,11 +74,11 @@ tracing-error = "0.2.0" tracing-subscriber = "0.3.17" thiserror = "1.0.47" -zebra-node-services = { path = "../zebra-node-services", version = "1.0.0-beta.28" } -zebra-chain = { path = "../zebra-chain", version = "1.0.0-beta.28" } +zebra-node-services = { path = "../zebra-node-services", version = "1.0.0-beta.29" } +zebra-chain = { path = "../zebra-chain", version = "1.0.0-beta.29" } # These crates are needed for the block-template-to-proposal binary -zebra-rpc = { path = "../zebra-rpc", version = "1.0.0-beta.28", optional = true } +zebra-rpc = { path = "../zebra-rpc", version = "1.0.0-beta.29", optional = true } # These crates are needed for the zebra-checkpoints binary itertools = { version = "0.11.0", optional = true } diff --git a/zebrad/Cargo.toml b/zebrad/Cargo.toml index 5cd5b3e1..258746ca 100644 --- a/zebrad/Cargo.toml +++ b/zebrad/Cargo.toml @@ -1,7 +1,7 @@ [package] # Crate metadata name = "zebrad" -version = "1.1.0" +version = "1.2.0" authors = ["Zcash Foundation "] description = "The Zcash Foundation's independent, consensus-compatible implementation of a Zcash node" license = "MIT OR Apache-2.0" @@ -142,15 +142,15 @@ test_sync_past_mandatory_checkpoint_mainnet = [] test_sync_past_mandatory_checkpoint_testnet = [] [dependencies] -zebra-chain = { path = "../zebra-chain", version = "1.0.0-beta.28" } -zebra-consensus = { path = "../zebra-consensus", version = "1.0.0-beta.28" } -zebra-network = { path = "../zebra-network", version = "1.0.0-beta.28" } -zebra-node-services = { path = "../zebra-node-services", version = "1.0.0-beta.28" } -zebra-rpc = { path = "../zebra-rpc", version = "1.0.0-beta.28" } -zebra-state = { path = "../zebra-state", version = "1.0.0-beta.28" } +zebra-chain = { path = "../zebra-chain", version = "1.0.0-beta.29" } +zebra-consensus = { path = "../zebra-consensus", version = "1.0.0-beta.29" } +zebra-network = { path = "../zebra-network", version = "1.0.0-beta.29" } +zebra-node-services = { path = "../zebra-node-services", version = "1.0.0-beta.29" } +zebra-rpc = { path = "../zebra-rpc", version = "1.0.0-beta.29" } +zebra-state = { path = "../zebra-state", version = "1.0.0-beta.29" } # Required for crates.io publishing, but it's only used in tests -zebra-utils = { path = "../zebra-utils", version = "1.0.0-beta.28", optional = true } +zebra-utils = { path = "../zebra-utils", version = "1.0.0-beta.29", optional = true } abscissa_core = "0.7.0" clap = { version = "4.4.0", features = ["cargo"] } diff --git a/zebrad/src/components/sync/end_of_support.rs b/zebrad/src/components/sync/end_of_support.rs index cd4a0f35..a4582ff3 100644 --- a/zebrad/src/components/sync/end_of_support.rs +++ b/zebrad/src/components/sync/end_of_support.rs @@ -13,7 +13,7 @@ use zebra_chain::{ use crate::application::release_version; /// The estimated height that this release will be published. -pub const ESTIMATED_RELEASE_HEIGHT: u32 = 2_165_000; +pub const ESTIMATED_RELEASE_HEIGHT: u32 = 2_212_380; /// The maximum number of days after `ESTIMATED_RELEASE_HEIGHT` where a Zebra server will run /// without halting.