From f8ead710c3520c586c2fbb1c318e8757f47c814b Mon Sep 17 00:00:00 2001 From: teor Date: Tue, 20 Sep 2022 07:21:27 +1000 Subject: [PATCH] chore: Release Zebra 1.0.0-beta.15 (#5194) * Initial beta.15 changelog * Increment Zebra versions and remove known issues * Document `protoc` dependency for `lightwalletd` tests * Explain latest sync time * s/coverate/coverage/ Co-authored-by: Marek * Style Co-authored-by: Marek Co-authored-by: Deirdre Connolly Co-authored-by: Marek --- CHANGELOG.md | 143 ++++++++++++++++++++++++++++++++- Cargo.lock | 24 +++--- README.md | 6 +- book/src/user/install.md | 2 +- book/src/user/lightwalletd.md | 7 +- book/src/user/run.md | 2 +- tower-batch/Cargo.toml | 2 +- tower-fallback/Cargo.toml | 2 +- zebra-chain/Cargo.toml | 2 +- zebra-consensus/Cargo.toml | 2 +- zebra-network/Cargo.toml | 2 +- zebra-network/src/constants.rs | 2 +- zebra-node-services/Cargo.toml | 2 +- zebra-rpc/Cargo.toml | 2 +- zebra-script/Cargo.toml | 2 +- zebra-state/Cargo.toml | 2 +- zebra-test/Cargo.toml | 2 +- zebra-utils/Cargo.toml | 2 +- zebrad/Cargo.toml | 2 +- 19 files changed, 175 insertions(+), 35 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 89e1c01b0ce..1c9948d7234 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,146 @@ 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.14](https://github.com/ZcashFoundation/zebra/releases/tag/v1.0.0-beta.13) - 2022-08-30 +## [Zebra 1.0.0-beta.15](https://github.com/ZcashFoundation/zebra/releases/tag/v1.0.0-beta.15) - 2022-09-20 + +This release improves Zebra's sync and RPC performance, improves test coverage and reliability, and starts creating Docker Hub binaries for releases. + +It also changes some of `zebra-network`'s unstable Rust APIs to provide more peer metadata. + +### Breaking Changes + +This release has the following breaking changes: +- Zebra's JSON-RPC server has an isolated thread pool, which is single threaded by default (#4806). + Multi-threaded RPCs disable port conflict detection, allowing multiple Zebra instances to share + the same RPC port (#5013). + To activate multi-threaded RPC server requests, add this config to your `zebrad.toml`: + +```toml +[rpc] +parallel_cpu_threads = 0 +``` + +- Docker users can now specify a custom `zebrad` config file path (#5163, #5177). + As part of this feature, the default config path in the Docker image was changed. + +- `zebrad` now uses a non-blocking tracing logger (#5032). + If the log buffer fills up, Zebra will discard any additional logs. + Moving logging to a separate thread also changes the timing of some logs, + this is unlikely to affect most users. + +- Zebra's gRPC tests need `protoc` installed (#5009). + If you are running Zebra's `lightwalletd` gRPC test suite, [see the `tonic` README for details.](https://github.com/hyperium/tonic#dependencies) + +### Added + +#### Releasing Zebra + +- Create Docker hub binaries when tagging releases (#5138) +- Document how Zebra is versioned and released (#4917, #5026) +- Allow manual Release Drafter workflow runs (#5165) + +#### Network Peer Rust APIs + +Note: Zebra's Rust APIs are unstable, they are not covered by semantic versioning. + +- Return peer metadata from `connect_isolated` functions (#4870) + +#### Testing + +- Check that the latest Zebra version can parse previous configs (#5112) +- Test disabled `lightwalletd` mempool gRPCs via zebrad logs (#5016) + +#### Documentation + +- Document why Zebra does a UTXO check that looks redundant (#5106) +- Document how Zebra CI works (#5038, #5080, #5100, #5105, #5017) + +### Changed + +#### Zebra JSON-RPCs + +- Breaking: Add a config for multi-threaded RPC server requests (#5013) +- Isolate RPC queries from the rest of Zebra, to improve performance (#4806) + +#### Zebra State + +- Send treestates from non-finalized state to finalized state, rather than re-calculating them (#4721) +- Run StateService read requests without shared mutable chain state (#5132, #5107) +- Move the finalized block queue to the StateService (#5152) +- Simplify StateService request processing and metrics tracking (#5137) + +#### Block Checkpoints + +- Update Zebra checkpoints (#5130) + +#### Docker Images + +- Breaking: Allow Docker users to specify a custom `zebrad` config file path (#5163, #5177) + +#### Continuous Integration and Deployment + +- Wait 1 day before creating cached state image updates (#5088) +- Delete cached state images older than 2 days, but keep a few recent images + (#5113, #5124, #5082, #5079) +- Simplify GitHub actions caches (#5104) +- Use 200GB disks for managed instances (#5084) +- Improve test reliability and test output readability (#5014) + +#### Zebra Dependencies + +- Breaking: Update prost, tonic, tonic-build and console-subscriber to the latest versions (#5009) +- Upgrade `zcash\_script` and other shared zcash dependencies (#4926) +- Update deny.toml developer docs and file comments (#5151, #5070) +- Update other Zebra Rust dependencies to the latest versions + (#5150, #5160, #5176, #5149, #5136, #5135, #5118, #5009, #5074, #5071, #5037, #5020, #4914, + #5057, #5058, #5047, #4984, #5021, #4998, #4916, #5022, #4912, #5018, #5019) + +#### CI Dependencies + +- Update Zebra CI dependencies to the latest versions (#5159, #5148, #5117, #5073, #5029) + +### Removed + +#### Continuous Integration + +- Disable beta Rust tests (#5090, #5024) + +### Fixed + +#### Logging + +- Breaking: Switch `zebrad` to a non-blocking tracing logger (#5032) + +#### Testing + +- Increase full sync timeout to 32 hours (#5172, #5129) +- Disable unreliable RPC port conflict tests on Windows and macOS (#5072) +- Increase slow code log thresholds to reduce verbose logs and warnings (#4997) + +#### Continuous Integration + +- Fix full sync CI failures by adding an extra GitHub job (#5166) +- Make checkpoint disk image names short enough for Google Cloud (#5128) +- Label lightwalletd cached state images with their sync height (#5086) + +#### Lints + +- Fix various Rust clippy lints (#5131, #5045) +- Fix a failure in `tj-actions/changed-files` on push (#5097) + +#### Documentation + +- Enable all cargo features in Zebra's deployed documentation (#5156) + +### Security + +#### JSON-RPC Server + +- Isolate RPC queries from the rest of Zebra, + so that `lightwalletd` clients are more isolated from each other (#4806) + + +## [Zebra 1.0.0-beta.14](https://github.com/ZcashFoundation/zebra/releases/tag/v1.0.0-beta.14) - 2022-08-30 This release contains a variety of CI fixes, test fixes and dependency updates. It contains two breaking changes: @@ -229,7 +368,7 @@ This release also contains some breaking changes which: #### Chain Sync -- Update mainnet and testnet checkpoint hashes (#4708) +- Update mainnet and testnet checkpoint hashes (#4708) #### Diagnostics diff --git a/Cargo.lock b/Cargo.lock index 8d9c23b8b72..5c4e2a5a108 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5462,7 +5462,7 @@ dependencies = [ [[package]] name = "tower-batch" -version = "0.2.29" +version = "0.2.30" dependencies = [ "color-eyre", "ed25519-zebra", @@ -5486,7 +5486,7 @@ dependencies = [ [[package]] name = "tower-fallback" -version = "0.2.29" +version = "0.2.30" dependencies = [ "futures-core", "pin-project 0.4.30", @@ -6350,7 +6350,7 @@ dependencies = [ [[package]] name = "zebra-chain" -version = "1.0.0-beta.14" +version = "1.0.0-beta.15" dependencies = [ "aes", "bech32 0.9.1", @@ -6414,7 +6414,7 @@ version = "1.0.0-beta.0" [[package]] name = "zebra-consensus" -version = "1.0.0-beta.14" +version = "1.0.0-beta.15" dependencies = [ "bellman", "blake2b_simd", @@ -6458,7 +6458,7 @@ dependencies = [ [[package]] name = "zebra-network" -version = "1.0.0-beta.14" +version = "1.0.0-beta.15" dependencies = [ "arti-client", "bitflags", @@ -6496,14 +6496,14 @@ dependencies = [ [[package]] name = "zebra-node-services" -version = "1.0.0-beta.14" +version = "1.0.0-beta.15" dependencies = [ "zebra-chain", ] [[package]] name = "zebra-rpc" -version = "1.0.0-beta.14" +version = "1.0.0-beta.15" dependencies = [ "chrono", "futures", @@ -6533,7 +6533,7 @@ dependencies = [ [[package]] name = "zebra-script" -version = "1.0.0-beta.14" +version = "1.0.0-beta.15" dependencies = [ "displaydoc", "hex", @@ -6546,7 +6546,7 @@ dependencies = [ [[package]] name = "zebra-state" -version = "1.0.0-beta.14" +version = "1.0.0-beta.15" dependencies = [ "bincode", "chrono", @@ -6583,7 +6583,7 @@ dependencies = [ [[package]] name = "zebra-test" -version = "1.0.0-beta.14" +version = "1.0.0-beta.15" dependencies = [ "color-eyre", "futures", @@ -6610,7 +6610,7 @@ dependencies = [ [[package]] name = "zebra-utils" -version = "1.0.0-beta.14" +version = "1.0.0-beta.15" dependencies = [ "color-eyre", "hex", @@ -6626,7 +6626,7 @@ dependencies = [ [[package]] name = "zebrad" -version = "1.0.0-beta.14" +version = "1.0.0-beta.15" dependencies = [ "abscissa_core", "atty", diff --git a/README.md b/README.md index b187ba45114..b5ee6843f78 100644 --- a/README.md +++ b/README.md @@ -87,7 +87,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.14 zebrad` +3. Run `cargo install --locked --git https://github.com/ZcashFoundation/zebra --tag v1.0.0-beta.15 zebrad` 4. Run `zebrad start` (see [Running Zebra](https://zebra.zfnd.org/user/run.html) for more information) For more detailed instructions, refer to the [documentation](https://zebra.zfnd.org/user/install.html). @@ -220,10 +220,6 @@ There are a few bugs in Zebra that we're still working on fixing: - No Windows support [#3801](https://github.com/ZcashFoundation/zebra/issues/3801) - We used to test with Windows Server 2019, but not anymore; see issue for details -### Performance - -- Revert deserializing state transactions in rayon threads [#4831](https://github.com/ZcashFoundation/zebra/issues/4831) - ## Future Work Performance and Reliability: diff --git a/book/src/user/install.md b/book/src/user/install.md index c72dd01bf0f..2fe6eee032c 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.14 zebrad` +3. Run `cargo install --locked --git https://github.com/ZcashFoundation/zebra --tag v1.0.0-beta.15 zebrad` 4. Run `zebrad start` (see [Running Zebra](run.md) for more information) If you're interested in testing out `zebrad` please feel free, but keep in mind diff --git a/book/src/user/lightwalletd.md b/book/src/user/lightwalletd.md index 5930a89c874..e747c7575ea 100644 --- a/book/src/user/lightwalletd.md +++ b/book/src/user/lightwalletd.md @@ -130,7 +130,12 @@ Wait until lightwalletd is in sync before connecting any wallet into it. You wil ## Run tests [#run-tests]: (#run-tests) -The Zebra team created tests for the interaction of zebra and lightwalletd. +The Zebra team created tests for the interaction of `zebrad` and `lightwalletd`. + +To run all the Zebra `lightwalletd` tests: +1. install `lightwalletd` +2. install `protoc` +3. build Zebra with `--features=lightwalletd-grpc-tests` Please refer to [acceptance](https://github.com/ZcashFoundation/zebra/blob/main/zebrad/tests/acceptance.rs) tests documentation in the `Lightwalletd tests` section. diff --git a/book/src/user/run.md b/book/src/user/run.md index 7b585477b87..c161e2cc396 100644 --- a/book/src/user/run.md +++ b/book/src/user/run.md @@ -38,7 +38,7 @@ If this is a problem for you, please let us know! ## Improving Performance -Zebra usually syncs in 4-12 hours, depending on the network connection. +Zebra usually syncs in around a day, depending on your network connection, and the overall Zcash network load. If you're having trouble syncing, try the following config changes: diff --git a/tower-batch/Cargo.toml b/tower-batch/Cargo.toml index bfa09bd9a0a..375f50184ab 100644 --- a/tower-batch/Cargo.toml +++ b/tower-batch/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "tower-batch" -version = "0.2.29" +version = "0.2.30" authors = ["Zcash Foundation "] license = "MIT" edition = "2021" diff --git a/tower-fallback/Cargo.toml b/tower-fallback/Cargo.toml index 57f7a1e1204..2d75c5d45cb 100644 --- a/tower-fallback/Cargo.toml +++ b/tower-fallback/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "tower-fallback" -version = "0.2.29" +version = "0.2.30" authors = ["Zcash Foundation "] license = "MIT" edition = "2021" diff --git a/zebra-chain/Cargo.toml b/zebra-chain/Cargo.toml index 7250557fb03..c1705cad956 100644 --- a/zebra-chain/Cargo.toml +++ b/zebra-chain/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "zebra-chain" -version = "1.0.0-beta.14" +version = "1.0.0-beta.15" authors = ["Zcash Foundation "] license = "MIT OR Apache-2.0" edition = "2021" diff --git a/zebra-consensus/Cargo.toml b/zebra-consensus/Cargo.toml index 11cfc238071..cd449a63801 100644 --- a/zebra-consensus/Cargo.toml +++ b/zebra-consensus/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "zebra-consensus" -version = "1.0.0-beta.14" +version = "1.0.0-beta.15" authors = ["Zcash Foundation "] license = "MIT OR Apache-2.0" edition = "2021" diff --git a/zebra-network/Cargo.toml b/zebra-network/Cargo.toml index b45c6b5e075..6ba55f5f469 100644 --- a/zebra-network/Cargo.toml +++ b/zebra-network/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "zebra-network" -version = "1.0.0-beta.14" +version = "1.0.0-beta.15" authors = ["Zcash Foundation "] license = "MIT OR Apache-2.0" edition = "2021" diff --git a/zebra-network/src/constants.rs b/zebra-network/src/constants.rs index a3b1fadb8f9..97a917eb10d 100644 --- a/zebra-network/src/constants.rs +++ b/zebra-network/src/constants.rs @@ -242,7 +242,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.14/"; +pub const USER_AGENT: &str = "/Zebra:1.0.0-beta.15/"; /// The Zcash network protocol version implemented by this crate, and advertised /// during connection setup. diff --git a/zebra-node-services/Cargo.toml b/zebra-node-services/Cargo.toml index 7e5a52f4ce4..ffe4d395f2a 100644 --- a/zebra-node-services/Cargo.toml +++ b/zebra-node-services/Cargo.toml @@ -2,7 +2,7 @@ name = "zebra-node-services" authors = ["Zcash Foundation "] license = "MIT OR Apache-2.0" -version = "1.0.0-beta.14" +version = "1.0.0-beta.15" edition = "2021" repository = "https://github.com/ZcashFoundation/zebra" diff --git a/zebra-rpc/Cargo.toml b/zebra-rpc/Cargo.toml index bf9735e2483..ad2ce1b41ac 100644 --- a/zebra-rpc/Cargo.toml +++ b/zebra-rpc/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "zebra-rpc" -version = "1.0.0-beta.14" +version = "1.0.0-beta.15" authors = ["Zcash Foundation "] license = "MIT OR Apache-2.0" edition = "2021" diff --git a/zebra-script/Cargo.toml b/zebra-script/Cargo.toml index 69454ffdded..3589b143ce6 100644 --- a/zebra-script/Cargo.toml +++ b/zebra-script/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "zebra-script" -version = "1.0.0-beta.14" +version = "1.0.0-beta.15" authors = ["Zcash Foundation "] license = "MIT OR Apache-2.0" edition = "2021" diff --git a/zebra-state/Cargo.toml b/zebra-state/Cargo.toml index 48cc95a7569..aef4f00c395 100644 --- a/zebra-state/Cargo.toml +++ b/zebra-state/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "zebra-state" -version = "1.0.0-beta.14" +version = "1.0.0-beta.15" authors = ["Zcash Foundation "] license = "MIT OR Apache-2.0" edition = "2021" diff --git a/zebra-test/Cargo.toml b/zebra-test/Cargo.toml index 78cf59f119b..9c10e2df59b 100644 --- a/zebra-test/Cargo.toml +++ b/zebra-test/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "zebra-test" -version = "1.0.0-beta.14" +version = "1.0.0-beta.15" authors = ["Zcash Foundation "] license = "MIT OR Apache-2.0" edition = "2021" diff --git a/zebra-utils/Cargo.toml b/zebra-utils/Cargo.toml index 454891bec9b..6a8863213a4 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.14" +version = "1.0.0-beta.15" edition = "2021" # Prevent accidental publication of this utility crate. publish = false diff --git a/zebrad/Cargo.toml b/zebrad/Cargo.toml index 49f0fcbcb9f..ba0f6479f56 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.14" +version = "1.0.0-beta.15" edition = "2021" # Zebra is only supported on the latest stable Rust version. Some earlier versions might work. # Zebra uses features introduced in Rust 1.58.