diff --git a/CHANGELOG.md b/CHANGELOG.md index 9e21b5c3..21f5f853 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,13 +4,152 @@ 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.6](https://github.com/ZcashFoundation/zebra/releases/tag/v1.0.0-beta.6) - 2022-03-28 + +Zebra's latest beta adds RPC server support, including some of the RPC calls needed to become a **lightwalletd** back end. +As part of the RPC changes, we made performance improvements to cached state access. + +### Added + +#### RPC + +- RPC server support (#3589 #3863) +- `getinfo` RPC method (#3660) +- `sendrawtransaction` RPC method (#3685 #3706) +- `getbestblockhash` RPC method (#3754 #3864) +- `getblock` RPC method (#3707) +- `getrawmempool` RPC method (#3851) +- `getblockchaininfo` RPC method (#3891) +- `getrawtransaction`RPC method (#3908) + +#### Tests + +- Basic RPC server tests (#3641 #3726 #3879) +- Lightwalletd integration test (#3619 #3627 #3628 #3859 #3824 #3758 #3903) +- Full sync test (#3582) + +#### Documentation + +- Document RPC methods (#3868) +- Document consensus rules from 4.6 Action Descriptions (#3549) + +#### CI + +- Add lightwaletd integration test build and CI pipeline (#3657 #3700 #3705) + +#### Others + +- Added `TransactionsByMinedId` to mempool (#3907) +- Added code owners and automatic review assigment to the repository (#3677 #3708 #3718) +- Validate ZIP-212 grace period blocks using checkpoints (#3889) +- Store Sapling and Orchard note commitment trees in finalized and non-finalized state (#3818) +- Get addresses from transparent outputs (#3802) +- Explain the different ways .txt files are usedin the CI (#3743) + +### Changed + +The Zebra team made a huge refactor to the database storage and the state to serve RPC calls efficiently. The refactor is accompanied with extensive low level tests in the form of snapshots. + +#### Database and State + +- Tests: #3691 #3759 #3630 +- Database: #3717 #3741 #3874 #3578 #3579 #3590 #3607 #3617 +- State: #3778 #3810 #3846 #3847 #3870 #3865 #3866 #3811 #3826 + +#### CI + +- Cleanup GCP instances on a single PR (#3766) +- Use OCI Image Format Specification for labels (#3728) +- Use improved OIDC for gcloud authentication (#3885) +- Use gcloud to search for cached disk state (#3775) + +#### Dependency updates + +- Remove an outdated dependabot ignore rule (#3719) +- Manually upgraded some dependencies (#3625) +- Replace unmantained multiset with mset (#3595) +- Update sha2 from 0.9.8 to 0.9.9 (#3585) +- Update semver from 1.0.5 to 1.0.6 (#3610) +- Update secp256k1 from 0.21.2 to 0.21.3 (#3632) +- Update insta from 1.12.0 to 1.13.0 (#3762) +- Update inferno from 0.10.12 to 0.11.1 (#3748 #3919) +- Update regex from 1.5.4 to 1.5.5 (#3797) +- Update google-github-actions/setup-gcloud from 0.5.1 to 0.6.0 (#3814) +- Update docker/login-action from 1.12.0 to 1.14.1 (#3570 #3761) +- Update actions/cache from 2 to 3 (#3918) +- Update tj-actions/changed-files from 14.4 to 18.4 (#3667 #3917 #3796 #3895 #3876) +- Update docker/build-push-action from 2.9.0 to 2.10.0 (#3878) +- Update once_cell from 1.9.0 to 1.10.0 (#3747) +- Update actions/checkout from 2.4.0 to 3.0.0 (#3806) +- Update owo-colors from 3.2.0 to 3.3.0 (#3920) +- Update vergen from 6.0.2 to 7.0.0 (#3837) + +#### Documentation + +- Simplify the database design using prefix iterators (#3916) +- Link to Conventional Commits specification in CONTRIBUTING file (#3858) +- Update database design for read-only state service (#3843) +- Explain optional zebra-network/tor dependencies (#3765) +- Simplify zebra-checkpoints summary (#3612) + +#### Tests + +- Turn on full backtraces and disable frame filtering (#3763) +- Decouple full sync from other tests (#3735) +- Split zebrad acceptance tests into sub-modules (#3901) +- Improve zebrad test API (#3899 #3892) + +#### Others + +- Move mempool request and response types to a new `zebra-node-services` crate (#3648) +- Enable `checkpoint_sync` by default (#3777) +- Update Zebra's hard-coded blockchain checkpoint lists (#3606) +- Clippy lints: warn on manual printing to stdout or stderr (#3767) + +### Removed + +- Temporally removed Windows support from CI (#3819) + +### Fixed + +- Make FromHex consistent with ToHex for tx/block hashes (#3893) +- Prevent synchronizer loop when very close to tip (#3854) +- Use RwLock for note commitment tree root caches (#3809) + +#### Tests + +- Use the correct stop condition for the cached state tests (#3688) +- Stop excessive logging which causes test hangs (#3755) +- Use all available checkpoints in the full sync test (#3613) +- Use `TEST_FAKE_ACTIVATION_HEIGHTS` at runtime and fix tests (#3749) +- Check for zebrad test output in the correct order (#3643) + +#### CI + +- Do not use GHA cache for images (#3794) +- Run coverage collection when pushing to main (#3561) +- Check for duplicate dependencies with optional features off (#3592) +- Remove coverage from mergify because nightly builds fail (#3886) +- Only run the full sync test on mergify queue PRs (#3773) +- Fix syntax in some yml workflows (#3957) +- Update CI job path triggers (#3692) +- Change pd-extreme to pd-ssd to avoid quotas (#3823) +- Use a specific shortening length for SHAs (#3929) +- Path format for cached state rebuild (#3873) +- Re-enable manual dispatch for test full sync (#3812) +- Use correct conditional in job to deploy Mainnet nodes (#3750) +- Missing job key and timeout bump for build (#3744) + +### Security + +- Forbid non-ascii identifiers (#3615) + + ## [Zebra 1.0.0-beta.5](https://github.com/ZcashFoundation/zebra/releases/tag/v1.0.0-beta.5) - 2022-02-18 Zebra's latest beta brings better networking, documents more consensus rules and improves the CI pipelines. - - ### Added - Estimate network chain tip height based on local node time and current best tip (#3492) diff --git a/Cargo.lock b/Cargo.lock index d4fdc30f..a8509cc5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4841,7 +4841,7 @@ dependencies = [ [[package]] name = "tower-batch" -version = "0.2.21" +version = "0.2.22" dependencies = [ "color-eyre 0.6.1", "ed25519-zebra", @@ -4861,7 +4861,7 @@ dependencies = [ [[package]] name = "tower-fallback" -version = "0.2.17" +version = "0.2.18" dependencies = [ "futures-core", "pin-project 0.4.29", @@ -5603,7 +5603,7 @@ dependencies = [ [[package]] name = "zebra-chain" -version = "1.0.0-beta.5" +version = "1.0.0-beta.6" dependencies = [ "aes", "bech32", @@ -5662,7 +5662,7 @@ version = "1.0.0-beta.0" [[package]] name = "zebra-consensus" -version = "1.0.0-beta.5" +version = "1.0.0-beta.6" dependencies = [ "bellman", "blake2b_simd 1.0.0", @@ -5704,7 +5704,7 @@ dependencies = [ [[package]] name = "zebra-network" -version = "1.0.0-beta.5" +version = "1.0.0-beta.6" dependencies = [ "arti-client", "bitflags", @@ -5739,14 +5739,14 @@ dependencies = [ [[package]] name = "zebra-node-services" -version = "1.0.0-beta.5" +version = "1.0.0-beta.6" dependencies = [ "zebra-chain", ] [[package]] name = "zebra-rpc" -version = "1.0.0-beta.0" +version = "1.0.0-beta.6" dependencies = [ "chrono", "futures", @@ -5773,7 +5773,7 @@ dependencies = [ [[package]] name = "zebra-script" -version = "1.0.0-beta.5" +version = "1.0.0-beta.6" dependencies = [ "displaydoc", "hex", @@ -5786,7 +5786,7 @@ dependencies = [ [[package]] name = "zebra-state" -version = "1.0.0-beta.5" +version = "1.0.0-beta.6" dependencies = [ "bincode", "chrono", @@ -5821,7 +5821,7 @@ dependencies = [ [[package]] name = "zebra-test" -version = "1.0.0-beta.5" +version = "1.0.0-beta.6" dependencies = [ "color-eyre 0.5.11", "futures", @@ -5845,7 +5845,7 @@ dependencies = [ [[package]] name = "zebra-utils" -version = "1.0.0-beta.5" +version = "1.0.0-beta.6" dependencies = [ "color-eyre 0.6.1", "hex", @@ -5860,7 +5860,7 @@ dependencies = [ [[package]] name = "zebrad" -version = "1.0.0-beta.5" +version = "1.0.0-beta.6" dependencies = [ "abscissa_core", "atty", diff --git a/README.md b/README.md index 03e8d03a..0f81863b 100644 --- a/README.md +++ b/README.md @@ -100,7 +100,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.5 zebrad` +3. Run `cargo install --locked --git https://github.com/ZcashFoundation/zebra --tag v1.0.0-beta.6 zebrad` 4. Run `zebrad start` (see [Running Zebra](https://zebra.zfnd.org/user/run.html) for more information) If you're interested in testing out `zebrad` please feel free, but keep in mind diff --git a/book/src/user/install.md b/book/src/user/install.md index 251428fb..7167ff86 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.5 zebrad` +3. Run `cargo install --locked --git https://github.com/ZcashFoundation/zebra --tag v1.0.0-beta.6 zebrad` 4. Run `zebrad start` (see [Running Zebra](user/run.md) for more information) If you're interested in testing out `zebrad` please feel free, but keep in mind diff --git a/tower-batch/Cargo.toml b/tower-batch/Cargo.toml index 4ac8da5d..619342da 100644 --- a/tower-batch/Cargo.toml +++ b/tower-batch/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "tower-batch" -version = "0.2.21" +version = "0.2.22" authors = ["Zcash Foundation "] license = "MIT" edition = "2021" diff --git a/tower-fallback/Cargo.toml b/tower-fallback/Cargo.toml index 6c439c5c..070796df 100644 --- a/tower-fallback/Cargo.toml +++ b/tower-fallback/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "tower-fallback" -version = "0.2.17" +version = "0.2.18" authors = ["Zcash Foundation "] license = "MIT" edition = "2021" diff --git a/zebra-chain/Cargo.toml b/zebra-chain/Cargo.toml index 3a4dd1b4..b32a191f 100644 --- a/zebra-chain/Cargo.toml +++ b/zebra-chain/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "zebra-chain" -version = "1.0.0-beta.5" +version = "1.0.0-beta.6" authors = ["Zcash Foundation "] license = "MIT OR Apache-2.0" edition = "2021" diff --git a/zebra-consensus/Cargo.toml b/zebra-consensus/Cargo.toml index 847f2f28..dcc53b60 100644 --- a/zebra-consensus/Cargo.toml +++ b/zebra-consensus/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "zebra-consensus" -version = "1.0.0-beta.5" +version = "1.0.0-beta.6" authors = ["Zcash Foundation "] license = "MIT OR Apache-2.0" edition = "2021" diff --git a/zebra-network/Cargo.toml b/zebra-network/Cargo.toml index f0afed77..e53b93b7 100644 --- a/zebra-network/Cargo.toml +++ b/zebra-network/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "zebra-network" -version = "1.0.0-beta.5" +version = "1.0.0-beta.6" 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 2c440dcb..e41d4217 100644 --- a/zebra-network/src/constants.rs +++ b/zebra-network/src/constants.rs @@ -231,7 +231,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.5/"; +pub const USER_AGENT: &str = "/Zebra:1.0.0-beta.6/"; /// 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 28532250..6c715de7 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.5" +version = "1.0.0-beta.6" edition = "2021" repository = "https://github.com/ZcashFoundation/zebra" diff --git a/zebra-rpc/Cargo.toml b/zebra-rpc/Cargo.toml index 3620e453..586ab004 100644 --- a/zebra-rpc/Cargo.toml +++ b/zebra-rpc/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "zebra-rpc" -version = "1.0.0-beta.0" +version = "1.0.0-beta.6" authors = ["Zcash Foundation "] license = "MIT OR Apache-2.0" edition = "2021" diff --git a/zebra-script/Cargo.toml b/zebra-script/Cargo.toml index 70bb5107..93559f9c 100644 --- a/zebra-script/Cargo.toml +++ b/zebra-script/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "zebra-script" -version = "1.0.0-beta.5" +version = "1.0.0-beta.6" authors = ["Zcash Foundation "] license = "MIT OR Apache-2.0" edition = "2021" diff --git a/zebra-state/Cargo.toml b/zebra-state/Cargo.toml index 0e0e0e63..01b70427 100644 --- a/zebra-state/Cargo.toml +++ b/zebra-state/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "zebra-state" -version = "1.0.0-beta.5" +version = "1.0.0-beta.6" authors = ["Zcash Foundation "] license = "MIT OR Apache-2.0" edition = "2021" diff --git a/zebra-test/Cargo.toml b/zebra-test/Cargo.toml index 16cc6e0b..2ef1e40f 100644 --- a/zebra-test/Cargo.toml +++ b/zebra-test/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "zebra-test" -version = "1.0.0-beta.5" +version = "1.0.0-beta.6" authors = ["Zcash Foundation "] license = "MIT OR Apache-2.0" edition = "2021" diff --git a/zebra-utils/Cargo.toml b/zebra-utils/Cargo.toml index 116524ec..98c32c42 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.5" +version = "1.0.0-beta.6" edition = "2021" # Prevent accidental publication of this utility crate. publish = false diff --git a/zebrad/Cargo.toml b/zebrad/Cargo.toml index 4ad4e5df..8d83cba2 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.5" +version = "1.0.0-beta.6" edition = "2021" repository = "https://github.com/ZcashFoundation/zebra" # make `cargo run` use `zebrad` by default