diff --git a/CHANGELOG.md b/CHANGELOG.md index fb74c2512..94680a1c7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,35 @@ 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](https://github.com/ZcashFoundation/zebra/releases/tag/v1.0.0) - 2023-06-14 + +This is our 1.0.0 stable release. + +This release also fixes a panic at startup when parsing the app version, [publishes `zebrad` to crates.io](https://crates.io/crates/zebrad), and [publishes to Docker Hub under the `latest` tag](https://hub.docker.com/r/zfnd/zebra/tags). + +Please report bugs to [the Zebra GitHub repository](https://github.com/ZcashFoundation/zebra/issues/new?assignees=&labels=C-bug%2C+S-needs-triage&projects=&template=bug_report.yml&title=) + +### Security + +- Avoid potential concurrency bugs in outbound handshakes ([#6869](https://github.com/ZcashFoundation/zebra/pull/6869)) + +### Changed + +- Publish to [crates.io](https://crates.io/crates/zebrad) ([#6908(https://github.com/ZcashFoundation/zebra/pull/6908)) +- Rename tower-batch to tower-batch-control ([#6907](https://github.com/ZcashFoundation/zebra/pull/6907)) +- Upgrade to ed25519-zebra 4.0.0 ([#6881](https://github.com/ZcashFoundation/zebra/pull/6881)) + +### Fixed + +- Stop panicking at startup when parsing the app version ([#6888](https://github.com/ZcashFoundation/zebra/pull/6888)) +- Avoid a race condition in testing modified JoinSplits ([#6921](https://github.com/ZcashFoundation/zebra/pull/6921)) + +### Contributors + +Thank you to everyone who contributed to this release, we couldn't make Zebra without you: +@dconnolly, @gustavovalverde, @oxarbitrage, @teor2345 and @upbqdn + + ## [Zebra 1.0.0-rc.9](https://github.com/ZcashFoundation/zebra/releases/tag/v1.0.0-rc.9) - 2023-06-07 This release continues to address audit findings. It fixes multiple network protocol and RPC bugs, diff --git a/Cargo.lock b/Cargo.lock index 84323d018..db9bd5f21 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4719,7 +4719,7 @@ dependencies = [ [[package]] name = "tower-batch-control" -version = "0.2.41-beta.1" +version = "0.2.41-beta.2" dependencies = [ "color-eyre", "ed25519-zebra", @@ -4743,7 +4743,7 @@ dependencies = [ [[package]] name = "tower-fallback" -version = "0.2.41-beta.1" +version = "0.2.41-beta.2" dependencies = [ "futures-core", "pin-project", @@ -5639,7 +5639,7 @@ dependencies = [ [[package]] name = "zebra-chain" -version = "1.0.0-beta.25" +version = "1.0.0-beta.26" dependencies = [ "bitflags 2.3.1", "bitflags-serde-legacy", @@ -5699,7 +5699,7 @@ dependencies = [ [[package]] name = "zebra-consensus" -version = "1.0.0-beta.25" +version = "1.0.0-beta.26" dependencies = [ "bellman", "blake2b_simd", @@ -5744,7 +5744,7 @@ dependencies = [ [[package]] name = "zebra-network" -version = "1.0.0-beta.25" +version = "1.0.0-beta.26" dependencies = [ "bitflags 2.3.1", "byteorder", @@ -5784,7 +5784,7 @@ dependencies = [ [[package]] name = "zebra-node-services" -version = "1.0.0-beta.25" +version = "1.0.0-beta.26" dependencies = [ "color-eyre", "jsonrpc-core", @@ -5796,7 +5796,7 @@ dependencies = [ [[package]] name = "zebra-rpc" -version = "1.0.0-beta.25" +version = "1.0.0-beta.26" dependencies = [ "chrono", "futures", @@ -5828,7 +5828,7 @@ dependencies = [ [[package]] name = "zebra-script" -version = "1.0.0-beta.25" +version = "1.0.0-beta.26" dependencies = [ "displaydoc", "hex", @@ -5841,7 +5841,7 @@ dependencies = [ [[package]] name = "zebra-state" -version = "1.0.0-beta.25" +version = "1.0.0-beta.26" dependencies = [ "bincode", "chrono", @@ -5882,7 +5882,7 @@ dependencies = [ [[package]] name = "zebra-test" -version = "1.0.0-beta.25" +version = "1.0.0-beta.26" dependencies = [ "color-eyre", "futures", @@ -5909,7 +5909,7 @@ dependencies = [ [[package]] name = "zebra-utils" -version = "1.0.0-beta.25" +version = "1.0.0-beta.26" dependencies = [ "color-eyre", "hex", @@ -5930,7 +5930,7 @@ dependencies = [ [[package]] name = "zebrad" -version = "1.0.0-rc.9" +version = "1.0.0" dependencies = [ "abscissa_core", "atty", diff --git a/README.md b/README.md index e816b1557..9c4ae1886 100644 --- a/README.md +++ b/README.md @@ -55,7 +55,7 @@ section in the Zebra book for system requirements. This command will run our latest release, and sync it to the tip: ```sh -docker run zfnd/zebra:1.0.0-rc.9 +docker run zfnd/zebra:latest ``` For more information, read our [Docker documentation](https://zebra.zfnd.org/user/docker.html). @@ -101,7 +101,7 @@ Note that the package `clang` includes `libclang` as well as the C++ compiler. Once the dependencies are in place, you can build Zebra ```sh -cargo install --locked --git https://github.com/ZcashFoundation/zebra --tag v1.0.0-rc.9 zebrad +cargo install --locked --git https://github.com/ZcashFoundation/zebra --tag v1.0.0 zebrad ``` You can start Zebra by @@ -164,8 +164,6 @@ There are a few bugs in Zebra that we're still working on fixing: ## Future Work -The Zebra team is currently working towards an audited stable release. - We will continue to add new features as part of future network upgrades, and in response to community feedback. ## Documentation diff --git a/book/src/user/docker.md b/book/src/user/docker.md index a47bf2e9b..e53c51aa6 100644 --- a/book/src/user/docker.md +++ b/book/src/user/docker.md @@ -11,13 +11,13 @@ You can deploy Zebra for a daily use with the images available in [Docker Hub](h ### Ready to use image ```shell -docker run --detach zfnd/zebra:1.0.0-rc.9 +docker run --detach zfnd/zebra:latest ``` ### Build it locally ```shell -git clone --depth 1 --branch v1.0.0-rc.9 https://github.com/ZcashFoundation/zebra.git +git clone --depth 1 --branch v1.0.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/tower-batch-control/Cargo.toml b/tower-batch-control/Cargo.toml index d8d202acd..12b4c265d 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.1" +version = "0.2.41-beta.2" 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 af4aa8d10..fd18e859e 100644 --- a/tower-fallback/Cargo.toml +++ b/tower-fallback/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "tower-fallback" -version = "0.2.41-beta.1" +version = "0.2.41-beta.2" 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 5495b1a35..a3de60038 100644 --- a/zebra-chain/Cargo.toml +++ b/zebra-chain/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "zebra-chain" -version = "1.0.0-beta.25" +version = "1.0.0-beta.26" authors = ["Zcash Foundation "] description = "Core Zcash data structures" license = "MIT OR Apache-2.0" @@ -116,7 +116,7 @@ rand_chacha = { version = "0.3.1", optional = true } tokio = { version = "1.28.2", features = ["tracing"], optional = true } -zebra-test = { path = "../zebra-test/", version = "1.0.0-beta.25", optional = true } +zebra-test = { path = "../zebra-test/", version = "1.0.0-beta.26", optional = true } [dev-dependencies] # Benchmarks diff --git a/zebra-consensus/Cargo.toml b/zebra-consensus/Cargo.toml index 3c0e108fa..524bf70b7 100644 --- a/zebra-consensus/Cargo.toml +++ b/zebra-consensus/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "zebra-consensus" -version = "1.0.0-beta.25" +version = "1.0.0-beta.26" authors = ["Zcash Foundation "] description = "Implementation of Zcash consensus checks" license = "MIT OR Apache-2.0" @@ -62,13 +62,13 @@ orchard = "0.4.0" zcash_proofs = { version = "0.11.0", features = ["local-prover", "multicore", "download-params"] } -tower-fallback = { path = "../tower-fallback/", version = "0.2.41-beta.1" } -tower-batch-control = { path = "../tower-batch-control/", version = "0.2.41-beta.1" } +tower-fallback = { path = "../tower-fallback/", version = "0.2.41-beta.2" } +tower-batch-control = { path = "../tower-batch-control/", version = "0.2.41-beta.2" } -zebra-script = { path = "../zebra-script", version = "1.0.0-beta.25" } -zebra-state = { path = "../zebra-state", version = "1.0.0-beta.25" } -zebra-node-services = { path = "../zebra-node-services", version = "1.0.0-beta.25" } -zebra-chain = { path = "../zebra-chain", version = "1.0.0-beta.25" } +zebra-script = { path = "../zebra-script", version = "1.0.0-beta.26" } +zebra-state = { path = "../zebra-state", version = "1.0.0-beta.26" } +zebra-node-services = { path = "../zebra-node-services", version = "1.0.0-beta.26" } +zebra-chain = { path = "../zebra-chain", version = "1.0.0-beta.26" } # prod feature progress-bar howudoin = { version = "0.1.2", optional = true } diff --git a/zebra-network/Cargo.toml b/zebra-network/Cargo.toml index f1b5429c2..339086a9c 100644 --- a/zebra-network/Cargo.toml +++ b/zebra-network/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "zebra-network" -version = "1.0.0-beta.25" +version = "1.0.0-beta.26" authors = ["Zcash Foundation ", "Tower Maintainers "] description = "Networking code for Zebra" # # Legal @@ -78,7 +78,7 @@ howudoin = { version = "0.1.2", optional = true } proptest = { version = "1.2.0", optional = true } proptest-derive = { version = "0.3.0", optional = true } -zebra-chain = { path = "../zebra-chain", version = "1.0.0-beta.25" } +zebra-chain = { path = "../zebra-chain", version = "1.0.0-beta.26" } [dev-dependencies] proptest = "1.2.0" diff --git a/zebra-node-services/Cargo.toml b/zebra-node-services/Cargo.toml index 04639549a..61c671adc 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.25" +version = "1.0.0-beta.26" 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.25"} +zebra-chain = { path = "../zebra-chain" , version = "1.0.0-beta.26"} # Optional dependencies diff --git a/zebra-rpc/Cargo.toml b/zebra-rpc/Cargo.toml index db597d6b2..84add04be 100644 --- a/zebra-rpc/Cargo.toml +++ b/zebra-rpc/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "zebra-rpc" -version = "1.0.0-beta.25" +version = "1.0.0-beta.26" 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.2.1", optional = true } # Test-only feature proptest-impl proptest = { version = "1.2.0", optional = true } -zebra-chain = { path = "../zebra-chain", version = "1.0.0-beta.25", features = ["json-conversion"] } -zebra-consensus = { path = "../zebra-consensus", version = "1.0.0-beta.25" } -zebra-network = { path = "../zebra-network", version = "1.0.0-beta.25" } -zebra-node-services = { path = "../zebra-node-services", version = "1.0.0-beta.25" } -zebra-script = { path = "../zebra-script", version = "1.0.0-beta.25" } -zebra-state = { path = "../zebra-state", version = "1.0.0-beta.25" } +zebra-chain = { path = "../zebra-chain", version = "1.0.0-beta.26", features = ["json-conversion"] } +zebra-consensus = { path = "../zebra-consensus", version = "1.0.0-beta.26" } +zebra-network = { path = "../zebra-network", version = "1.0.0-beta.26" } +zebra-node-services = { path = "../zebra-node-services", version = "1.0.0-beta.26" } +zebra-script = { path = "../zebra-script", version = "1.0.0-beta.26" } +zebra-state = { path = "../zebra-state", version = "1.0.0-beta.26" } [dev-dependencies] insta = { version = "1.29.0", features = ["redactions", "json", "ron"] } diff --git a/zebra-script/Cargo.toml b/zebra-script/Cargo.toml index 618f51b93..697dd1a0d 100644 --- a/zebra-script/Cargo.toml +++ b/zebra-script/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "zebra-script" -version = "1.0.0-beta.25" +version = "1.0.0-beta.26" 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.12" -zebra-chain = { path = "../zebra-chain", version = "1.0.0-beta.25" } +zebra-chain = { path = "../zebra-chain", version = "1.0.0-beta.26" } thiserror = "1.0.40" displaydoc = "0.2.4" diff --git a/zebra-state/Cargo.toml b/zebra-state/Cargo.toml index 20df4da55..78c0c16d8 100644 --- a/zebra-state/Cargo.toml +++ b/zebra-state/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "zebra-state" -version = "1.0.0-beta.25" +version = "1.0.0-beta.26" authors = ["Zcash Foundation "] description = "State contextual verification and storage code for Zebra" license = "MIT OR Apache-2.0" @@ -69,13 +69,13 @@ tracing = "0.1.37" elasticsearch = { version = "8.5.0-alpha.1", package = "elasticsearch", optional = true } serde_json = { version = "1.0.96", package = "serde_json", optional = true } -zebra-chain = { path = "../zebra-chain", version = "1.0.0-beta.25" } +zebra-chain = { path = "../zebra-chain", version = "1.0.0-beta.26" } # 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.25", optional = true } +zebra-test = { path = "../zebra-test/", version = "1.0.0-beta.26", optional = true } proptest = { version = "1.2.0", optional = true } proptest-derive = { version = "0.3.0", optional = true } diff --git a/zebra-test/Cargo.toml b/zebra-test/Cargo.toml index 649a3835b..d6edb5c5a 100644 --- a/zebra-test/Cargo.toml +++ b/zebra-test/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "zebra-test" -version = "1.0.0-beta.25" +version = "1.0.0-beta.26" 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 99c80d62d..cc65e650c 100644 --- a/zebra-utils/Cargo.toml +++ b/zebra-utils/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "zebra-utils" -version = "1.0.0-beta.25" +version = "1.0.0-beta.26" authors = ["Zcash Foundation "] description = "Developer tools for Zebra maintenance and testing" license = "MIT OR Apache-2.0" @@ -70,11 +70,11 @@ tracing-error = "0.2.0" tracing-subscriber = "0.3.17" thiserror = "1.0.40" -zebra-node-services = { path = "../zebra-node-services", version = "1.0.0-beta.25" } -zebra-chain = { path = "../zebra-chain", version = "1.0.0-beta.25" } +zebra-node-services = { path = "../zebra-node-services", version = "1.0.0-beta.26" } +zebra-chain = { path = "../zebra-chain", version = "1.0.0-beta.26" } # These crates are needed for the block-template-to-proposal binary -zebra-rpc = { path = "../zebra-rpc", version = "1.0.0-beta.25", optional = true } +zebra-rpc = { path = "../zebra-rpc", version = "1.0.0-beta.26", optional = true } # These crates are needed for the zebra-checkpoints binary itertools = { version = "0.10.5", optional = true } diff --git a/zebrad/Cargo.toml b/zebrad/Cargo.toml index 6316d5996..7eb30a2c7 100644 --- a/zebrad/Cargo.toml +++ b/zebrad/Cargo.toml @@ -1,7 +1,7 @@ [package] # Crate metadata name = "zebrad" -version = "1.0.0-rc.9" +version = "1.0.0" authors = ["Zcash Foundation "] description = "The Zcash Foundation's independent, consensus-compatible implementation of a Zcash node" license = "MIT OR Apache-2.0" @@ -116,14 +116,14 @@ test_sync_past_mandatory_checkpoint_mainnet = [] test_sync_past_mandatory_checkpoint_testnet = [] [dependencies] -zebra-chain = { path = "../zebra-chain", version = "1.0.0-beta.25" } -zebra-consensus = { path = "../zebra-consensus", version = "1.0.0-beta.25" } -zebra-network = { path = "../zebra-network", version = "1.0.0-beta.25" } -zebra-node-services = { path = "../zebra-node-services", version = "1.0.0-beta.25" } -zebra-rpc = { path = "../zebra-rpc", version = "1.0.0-beta.25" } -zebra-state = { path = "../zebra-state", version = "1.0.0-beta.25" } +zebra-chain = { path = "../zebra-chain", version = "1.0.0-beta.26" } +zebra-consensus = { path = "../zebra-consensus", version = "1.0.0-beta.26" } +zebra-network = { path = "../zebra-network", version = "1.0.0-beta.26" } +zebra-node-services = { path = "../zebra-node-services", version = "1.0.0-beta.26" } +zebra-rpc = { path = "../zebra-rpc", version = "1.0.0-beta.26" } +zebra-state = { path = "../zebra-state", version = "1.0.0-beta.26" } # Required for crates.io publishing, but it's only used in tests -zebra-utils = { path = "../zebra-utils", version = "1.0.0-beta.25", optional = true } +zebra-utils = { path = "../zebra-utils", version = "1.0.0-beta.26", optional = true } abscissa_core = "0.7.0" clap = { version = "4.3.3", features = ["cargo"] } diff --git a/zebrad/src/components/sync/end_of_support.rs b/zebrad/src/components/sync/end_of_support.rs index 09b5caa60..9e4cb2aed 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 started to run. -pub const ESTIMATED_RELEASE_HEIGHT: u32 = 2_113_936; +pub const ESTIMATED_RELEASE_HEIGHT: u32 = 2_121_200; /// The maximum number of days after `ESTIMATED_RELEASE_HEIGHT` where a Zebra server will run /// without halting.