diff --git a/CHANGELOG.md b/CHANGELOG.md index 756eb2c3613..7fa0bf0163e 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 322d5eaa07a..6ff4061f0d1 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 0f99bd11287..2dd7a5f2bfc 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 6bd65ad7a7e..28e7fc1bab3 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 8e1f6228117..897c81ccba5 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 614dddff4e0..b07f6f088b6 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 ba1656e34ed..a102aab9934 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 c3853e569ed..f4a2bf26e6d 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 27a647780f2..34782c49da8 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 6dc65d94920..2b6d1998c43 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 54c4a6f6265..d0ae564cc78 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 ed595db772c..de300fab631 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 eefeaba0852..486753b96ef 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 d2e5aff1b28..1e74218f3b6 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 d3e3dc37eee..5ed94fdb404 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 5cd5b3e1e6e..258746ca4b2 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 cd4a0f35660..a4582ff38bf 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.