v1.0.0-beta.14-release (#5006)

* Bump crate versions

* Bump `USER_AGENT`

* Update `README.md`

* Update `install.md`

* Update `CHANGELOG.md`

* Apply suggestions from code review

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

* Apply a suggestion from code review

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

* Move the "Networking" section above "Tests"

* Merge PRs that update checkpoints

* Refactor `CHANGELOG.md`

* Add missing PRs to `CHANGELOG.md`

* Apply suggestions from code review

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

Co-authored-by: teor <teor@riseup.net>
This commit is contained in:
Marek 2022-09-01 00:00:46 +02:00 committed by GitHub
parent e9597c0406
commit c322533125
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
17 changed files with 151 additions and 56 deletions

View File

@ -4,6 +4,104 @@ 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
This release contains a variety of CI fixes, test fixes and dependency updates.
It contains two breaking changes:
- the recommended disk capacity for Zebra is now 300 GB, and the recommended network bandwidth is 100 GB per month, and
- when no command is provided on the command line, `zebrad` automatically starts syncing (like `zcashd`).
The sync performance of `lightwalletd` is also improved.
### Added
- Store history trees by height in the non-finalized state (#4928)
- Breaking: Add `start` as default subcommand for `zebrad` (#4957)
### Changed
- Fix a performance regression when serving blocks via the Zcash network protocol and RPCs (#4933)
- Update block hash checkpoints for mainnet (#4919, #4972)
- Enable a `tinyvec` feature to speed up compilation (#4796)
- Split the `zebra_state::service::read` module (#4827)
- Disallow Orchard `ivk = 0` on `IncomingViewingKey::from` & `SpendingKey` generation (#3962)
#### Docs
- Increase disk and network requirements for long-term deployment (#4948, #4963)
- Update supported Rust versions in `README.md` (#4938)
- Document edge cases in sync workflows (#4973)
- Add missing status badges & sections (#4817)
#### Rust Dependencies
- Bump `serde` from 1.0.137 to 1.0.144 (#4865, #4876, #4925)
- Bump `serde_json` from 1.0.81 to 1.0.83 (#4727, #4877)
- Bump `serde_with` from 1.14.0 to 2.0.0 (#4785)
- Bump `futures` from 0.3.21 to 0.3.23 (#4913)
- Bump `futures-core` from 0.3.21 to 0.3.23 (#4915)
- Bump `chrono` from 0.4.19 to 0.4.20 (#4898)
- Bump `criterion` from 0.3.5 to 0.3.6 (#4761)
- Bump `thiserror` from 1.0.31 to 1.0.32 (#4878)
- Bump `vergen` from 7.2.1 to 7.3.2 (#4890)
- Bump `tinyvec` from 1.5.1 to 1.6.0 (#4888)
- Bump `insta` from 1.15.0 to 1.17.1 (#4884)
- Bump `semver` from 1.0.12 to 1.0.13 (#4879)
- Bump `bytes` from 1.1.0 to 1.2.1 (#4843)
- Bump `tokio` from 1.20.0 to 1.20.1 (#4864)
- Bump `hyper` from 0.14.19 to 0.14.20 (#4764)
- Bump `once_cell` from 1.12.0 to 1.13.0 (#4749)
- Bump `regex` from 1.5.6 to 1.6.0 (#4755)
- Bump `inferno` from 0.11.6 to 0.11.7 (#4829)
#### CI Dependencies
- Bump `actions/github-script` from 6.1.0 to 6.2.0 (#4986)
- Bump `reviewdog/action-actionlint` from 1.27.0 to 1.29.0 (#4923, #4987)
- Bump `tj-actions/changed-files` from 24 to 29.0.2 (#4936, #4959, #4985)
- Bump `w9jds/firebase-action` from 2.2.2 to 11.5.0 (#4905)
- Bump `docker/build-push-action` from 3.0.0 to 3.1.1 (#4797, #4895)
### Fixed
- Increase the number of blocks checked for legacy transactions (#4804)
#### CI
- Split a long full sync job (#5001)
- Stop cancelling manual full syncs (#5000)
- Run a single CI workflow as required (#4981)
- Fix some clippy warnings (#4927, #4931)
- Improve Zebra acceptance test diagnostics (#4958)
- Expand cached state disks before running tests (#4962)
- Increase full sync timeouts for longer syncs (#4961)
- Fix a regular expression typo in a full sync job (#4950)
- Write cached state images after update syncs, and use the latest image from any commit (#4949)
- Increase CI disk size to 200GB (#4945)
- Make sure Rust tests actually run in `deploy-gcp-tests.yml` (#4710)
- Copy lightwalletd from the correct path during Docker builds (#4886)
- Use FHS for deployments and artifacts (#4786)
- Retry gcloud authentication if it fails (#4940)
- Disable beta Rust tests and add parameter download logging (#4930)
- Do not run versioning job when pushing to main (#4970)
- Deploy long running node instances on release (#4939)
- Run build and test jobs on cargo and clippy config changes (#4941)
- Increase Mergify batch sizes (#4947)
#### Networking
- Send height to peers (#4904)
- Fix handshake timing and error handling (#4772)
#### Tests
- Show full Zebra test panic details in CI logs (#4942)
- Update timeout for Zebra sync tests (#4918)
- Improve test reliability and performance (#4869)
- Use `FuturesOrdered` in `fallback_verification` test (#4867)
- Skip some RPC tests when `ZEBRA_SKIP_NETWORK_TESTS` is set (#4849)
- Truncate the number of transactions in send transaction test (#4848)
## [Zebra 1.0.0-beta.13](https://github.com/ZcashFoundation/zebra/releases/tag/v1.0.0-beta.13) - 2022-07-29

24
Cargo.lock generated
View File

@ -5453,7 +5453,7 @@ dependencies = [
[[package]]
name = "tower-batch"
version = "0.2.28"
version = "0.2.29"
dependencies = [
"color-eyre",
"ed25519-zebra",
@ -5477,7 +5477,7 @@ dependencies = [
[[package]]
name = "tower-fallback"
version = "0.2.28"
version = "0.2.29"
dependencies = [
"futures-core",
"pin-project 0.4.29",
@ -6307,7 +6307,7 @@ dependencies = [
[[package]]
name = "zebra-chain"
version = "1.0.0-beta.13"
version = "1.0.0-beta.14"
dependencies = [
"aes",
"bech32",
@ -6371,7 +6371,7 @@ version = "1.0.0-beta.0"
[[package]]
name = "zebra-consensus"
version = "1.0.0-beta.13"
version = "1.0.0-beta.14"
dependencies = [
"bellman",
"blake2b_simd 1.0.0",
@ -6415,7 +6415,7 @@ dependencies = [
[[package]]
name = "zebra-network"
version = "1.0.0-beta.13"
version = "1.0.0-beta.14"
dependencies = [
"arti-client",
"bitflags",
@ -6453,14 +6453,14 @@ dependencies = [
[[package]]
name = "zebra-node-services"
version = "1.0.0-beta.13"
version = "1.0.0-beta.14"
dependencies = [
"zebra-chain",
]
[[package]]
name = "zebra-rpc"
version = "1.0.0-beta.13"
version = "1.0.0-beta.14"
dependencies = [
"chrono",
"futures",
@ -6489,7 +6489,7 @@ dependencies = [
[[package]]
name = "zebra-script"
version = "1.0.0-beta.13"
version = "1.0.0-beta.14"
dependencies = [
"displaydoc",
"hex",
@ -6502,7 +6502,7 @@ dependencies = [
[[package]]
name = "zebra-state"
version = "1.0.0-beta.13"
version = "1.0.0-beta.14"
dependencies = [
"bincode",
"chrono",
@ -6539,7 +6539,7 @@ dependencies = [
[[package]]
name = "zebra-test"
version = "1.0.0-beta.13"
version = "1.0.0-beta.14"
dependencies = [
"color-eyre",
"futures",
@ -6566,7 +6566,7 @@ dependencies = [
[[package]]
name = "zebra-utils"
version = "1.0.0-beta.13"
version = "1.0.0-beta.14"
dependencies = [
"color-eyre",
"hex",
@ -6582,7 +6582,7 @@ dependencies = [
[[package]]
name = "zebrad"
version = "1.0.0-beta.13"
version = "1.0.0-beta.14"
dependencies = [
"abscissa_core",
"atty",

View File

@ -79,14 +79,14 @@ install mechanism. To run `zebrad`, follow the instructions to compile `zebrad`
for your platform:
1. Install [`cargo` and `rustc`](https://www.rust-lang.org/tools/install).
- Zebra is tested with the latest `stable` Rust version.
Earlier versions are not supported or tested.
Any Zebra release can remove support for older Rust versions, without any notice.
(Rust 1.59 and earlier are definitely not supported, due to missing features.)
- Zebra is tested with the latest `stable` Rust version.
Earlier versions are not supported or tested.
Any Zebra release can remove support for older Rust versions, without any notice.
(Rust 1.59 and earlier are definitely not supported, due to missing features.)
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.13 zebrad`
- **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`
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).
@ -96,6 +96,7 @@ For more detailed instructions, refer to the [documentation](https://zebra.zfnd.
For performance reasons, some debugging and monitoring features are disabled in release builds.
You can [enable these features](https://doc.zebra.zfnd.org/zebrad/index.html#zebra-feature-flags) using:
```sh
cargo install --features=<name> ...
```
@ -103,18 +104,21 @@ cargo install --features=<name> ...
### System Requirements
The recommended requirements for compiling and running `zebrad` are:
- 4 CPU cores
- 16 GB RAM
- 300 GB available disk space for building binaries and storing cached chain state
- 100 Mbps network connection, with 300 GB of uploads and downloads per month
- 100 Mbps network connection, with 300 GB of uploads and downloads per month
We continuously test that our builds and tests pass on:
The *latest* [GitHub Runners](https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners#supported-runners-and-hardware-resources) for:
The _latest_ [GitHub Runners](https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners#supported-runners-and-hardware-resources) for:
- macOS
- Ubuntu
Docker:
- Debian Bullseye
Zebra's tests can take over an hour, depending on your machine.
@ -142,6 +146,7 @@ macOS records these panics as crash reports.
If you are seeing "Crash Reporter" dialogs during Zebra tests,
you can disable them using this Terminal.app command:
```sh
defaults write com.apple.CrashReporter DialogType none
```
@ -149,6 +154,7 @@ defaults write com.apple.CrashReporter DialogType none
### Network Ports and Data Usage
By default, Zebra uses the following inbound TCP listener ports:
- 8233 on Mainnet
- 18233 on Testnet
@ -157,6 +163,7 @@ If this is a problem for you, please
[open a ticket.](https://github.com/ZcashFoundation/zebra/issues/new/choose)
`zebrad`'s typical mainnet network usage is:
- Initial sync: 100 GB download, we expect the initial download to grow to hundreds of gigabytes over time
- Ongoing updates: 10 MB - 10 GB upload and download per day, depending on user-created transaction size and peer requests
@ -192,37 +199,24 @@ So Zebra's state should always be valid, unless your OS or disk hardware is corr
## Known Issues
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
We are working on improving Zebra performance, the following are known issues:
- Send note commitment and history trees from the non-finalized state to the finalized state [#4824](https://github.com/ZcashFoundation/zebra/issues/4824)
- Speed up opening the database [#4822](https://github.com/ZcashFoundation/zebra/issues/4822)
- Revert note commitment and history trees when forking non-finalized chains [#4794](https://github.com/ZcashFoundation/zebra/issues/4794)
- Store only the first tree state in each identical series of tree states [#4784](https://github.com/ZcashFoundation/zebra/issues/4784)
RPCs might also be slower than they used to be, we need to check:
- Revert deserializing state transactions in rayon threads [#4831](https://github.com/ZcashFoundation/zebra/issues/4831)
Ongoing investigations:
- Find out which parts of CommitBlock/CommitFinalizedBlock are slow [#4823](https://github.com/ZcashFoundation/zebra/issues/4823)
- Mini-Epic: Stop tokio tasks running for a long time and blocking other tasks [#4747](https://github.com/ZcashFoundation/zebra/issues/4747)
- Investigate busiest tasks per tokio-console [#4583](https://github.com/ZcashFoundation/zebra/issues/4583)
## Future Work
Features:
- Wallet functionality
Performance and Reliability:
- Reliable syncing under poor network conditions
- Additional batch verification
- Performance tuning
Currently, the following features are out of scope:
- Mining support
- Optional Zcash network protocol messages
- Consensus rules removed before Canopy activation (Zebra checkpoints on Canopy activation)
@ -230,7 +224,7 @@ Currently, the following features are out of scope:
The [Zebra website](https://zebra.zfnd.org/) contains user documentation, such
as how to run or configure Zebra, set up metrics integrations, etc., as well as
developer documentation, such as design documents. We also render [API
developer documentation, such as design documents. We also render [API
documentation](https://doc.zebra.zfnd.org) for the external API of our crates,
as well as [internal documentation](https://doc-internal.zebra.zfnd.org) for
private APIs.

View File

@ -5,11 +5,11 @@ install mechanism. To run `zebrad`, follow the instructions to compile `zebrad`
for your platform:
1. Install [`cargo` and `rustc`](https://www.rust-lang.org/tools/install).
- Using `rustup` installs the stable Rust toolchain, which `zebrad` targets.
- Using `rustup` installs the stable Rust toolchain, which `zebrad` targets.
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.13 zebrad`
- **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`
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
@ -20,27 +20,30 @@ that there is a lot of key functionality still missing.
If you're having trouble with:
Dependencies:
- use `cargo install` without `--locked` to build with the latest versions of each dependency
- **sqlite linker errors:** libsqlite3 is an optional dependency of the `zebra-network/tor` feature.
If you don't have it installed, you might see errors like `note: /usr/bin/ld: cannot find -lsqlite3`.
[Follow the arti instructions](https://gitlab.torproject.org/tpo/core/arti/-/blob/main/CONTRIBUTING.md#setting-up-your-development-environment)
to install libsqlite3, or use one of these commands instead:
```sh
cargo build
cargo build -p zebrad --all-features
```
Compilers:
- **clang:** install both `libclang` and `clang` - they are usually different packages
- **libclang:** check out the [clang-sys documentation](https://github.com/KyleMayes/clang-sys#dependencies)
- **g++ or MSVC++:** try using clang or Xcode instead
- **rustc:** use rustc 1.58 or later
- Zebra does not have a minimum supported Rust version (MSRV) policy yet
### Dependencies
Zebra primarily depends on pure Rust crates, and some Rust/C++ crates:
- [rocksdb](https://crates.io/crates/rocksdb)
- [zcash_script](https://crates.io/crates/zcash_script)

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -2,7 +2,7 @@
name = "zebra-node-services"
authors = ["Zcash Foundation <zebra@zfnd.org>"]
license = "MIT OR Apache-2.0"
version = "1.0.0-beta.13"
version = "1.0.0-beta.14"
edition = "2021"
repository = "https://github.com/ZcashFoundation/zebra"

View File

@ -1,6 +1,6 @@
[package]
name = "zebra-rpc"
version = "1.0.0-beta.13"
version = "1.0.0-beta.14"
authors = ["Zcash Foundation <zebra@zfnd.org>"]
license = "MIT OR Apache-2.0"
edition = "2021"

View File

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

View File

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

View File

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

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.13"
version = "1.0.0-beta.14"
edition = "2021"
# 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.13"
version = "1.0.0-beta.14"
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.