Skip to content

Releases: ZcashFoundation/zebra

Zebra 1.0.0-rc.6

24 Mar 03:43
c3273e4
Compare
Choose a tag to compare
Zebra 1.0.0-rc.6 Pre-release
Pre-release

Zebra 1.0.0-rc.6 - 2023-03-23

In this release, we fixed several minor security issues, most notably hardening Zebra in response to the vulnerabilities recently disclosed by Halborn.

Known Issues

  • orchard 0.3.0 can't verify halo2 proofs when compiled with Rust 1.69 or later (currently beta and nightly Rust). Compile Zebra with stable Rust to avoid this bug. (halo2/#737).
    Zebra tracking issue for this problem is #6232.

Security

  • Harden Zebra's network protocol implementation in response to the Halborn disclosures (#6297)
  • Bump incrementalmerkletree from 0.3.0 to 0.3.1, resolving a consensus bug on 32-bit platforms (#6258)
  • Remove unused dependencies, and check for them in CI (#6216)
  • Validate address length before reading (#6320, #6368)

Added

  • Add instructions for mining with s-nomp to Zebra book (#6220)
  • Export block data to elasticsearch database (#6274)
  • Add elasticsearch section to Zebra book (#6295)

Changed

  • Update Zebra's build instructions (#6273)
  • Improve CommitBlockError message (#6251)

Fixed

  • Stop ignoring some transaction broadcasts (#6230)

Contributors

Thank you to everyone who contributed to this release, we couldn't make Zebra without you:
@arya2, @dconnolly, @mpguerra, @oxarbitrage, @teor2345 and @upbqdn

Zebra 1.0.0-rc.5

24 Feb 23:53
9d2b912
Compare
Choose a tag to compare
Zebra 1.0.0-rc.5 Pre-release
Pre-release

Zebra 1.0.0-rc.5 - 2023-02-23

This release:

  • finishes the implementation of mining-related RPCs;
  • makes Zebra ready for testing and initial adoption by mining pools;
  • adds support for the latest version of lightwalletd;
  • makes non-finalized chain forks instant;
  • contains other improvements such as deduplication of RedPallas code.

Zebra now also checks that it is following the consensus chain each time it
starts up.

Security

  • Check that Zebra's state contains the consensus chain each time it starts up.
    This implements the "settled network upgrade" consensus rule using all of
    Zebra's checkpoints
    (#6163).

    User action required:

    • If your config is based on an old version of Zebra, or you have manually
      edited it, make sure consensus.checkpoint_sync = true. This option has
      been true by default since March 2022.
  • Bump hyper from 0.14.23 to 0.14.24, fixing a denial of service risk (#6094)

  • Re-verify transactions that were verified at a different tip height (#6154)

  • Fix minute-long delays in block verification after a chain fork (#6122)

Deprecated

  • The consensus.checkpoint_sync config in zebrad.toml is deprecated. It might be ignored or
    removed in a future release. (#6163)

Added

  • Log a cute message for blocks that were mined by Zebra (off by default) (#6098)
  • Add extra getblock RPC fields used by some mining pools (#6097)
  • Get details from transaction differences in getrawmempool RPC (#6035)

New RPCs

  • Implement the z_listunifiedreceivers RPC (#6171)
  • Implement the getblocksubsidy RPC (#6032)
  • Implement the validateaddress RPC (#6086)
  • Implement the z_validateaddress RPC (#6185)
  • Implement the getdifficulty RPC (#6099)

Documentation

  • Add detailed testnet mining docs to the Zebra repository (#6201)
  • Add mining instructions to the zebra book (#6199)

Changed

  • Use reddsa crate and remove duplicated RedPallas code (#6013)
  • Upgrade to the zcash_primitives 0.10 API (#6087)
  • Simplify getdifficulty RPC implementation (#6105)

Fixed

  • Change error format in proposals (#6044)
  • Fix lightwalletd instructions to be compatible with Zebra (#6088)
  • Downgrade owo-colors from 3.6.0 to 3.5.0 (#6203)
  • Make RPC "incorrect parameters" error code match zcashd (#6066)
  • Make the verbosity argument optional in the getblock RPC (#6092)
  • Increase legacy chain limit to 100,000 (#6053)

Contributors

Thank you to everyone who contributed to this release, we couldn't make Zebra
without you: @arya2, @conradoplg, @gustavovalverde,
@jackgavigan, @oxarbitrage, @sandakersmann, @teor2345 and @upbqdn

Zebra 1.0.0-rc.4

31 Jan 11:54
9b1d265
Compare
Choose a tag to compare
Zebra 1.0.0-rc.4 Pre-release
Pre-release

Zebra 1.0.0-rc.4 - 2023-01-30

In this release we fixed bugs and inconsistencies between zcashd and zebrad in the output of the getblocktemplate RPC method. In addition, we added block proposal mode to the getblocktemplate RPC, while we continue the effort of adding and testing mining pool RPC methods.

Security

  • Verify the lock times of mempool transactions. Previously, Zebra was ignoring mempool transaction lock times, but checking them in mined blocks. Credit to DeckerSU for reporting this issue. (#6027)
  • Bump bumpalo from 3.8.0 to 3.12.0, removing undefined behaviour on wasm targets. These targets are not supported Zebra platforms. (#6015)
  • Bump libgit2-sys from 0.14.0+1.5.0 to 0.14.2+1.5.1, to ensure that SSH server keys are checked. Zebra only uses libgit2 during builds, and we don't make SSH connections. (#6014)
  • Bump tokio from 1.24.1 to 1.24.2, to fix unsoundness. The unsound methods are not directly used by Zebra. (#5995)

Added

  • Add getpeerinfo RPC method (#5951)
  • Add proposal capability to getblocktemplate (#5870)
  • Add a test to check that the Docker image config works (#5968)
  • Make zebra-checkpoints work for zebrad backend (#5894, #5961)
  • Add test dependency from zebra-rpc to zebra-network with correct features (#5992)
  • Document zebra download command (#5901)

Fixed

  • Return detailed errors to the RPC client when a block proposal fails (#5993)
  • Avoid selecting duplicate transactions in block templates (#6006)
  • Calculate getblocktemplate RPC testnet min and max times correctly (#5925)
  • Fix Merkle root transaction order in getblocktemplate RPC method (#5953)

Changed

  • Strings in zebra configuration file now use double quotes, caused by upgrading the toml crate. Old configs will still work #6029

Contributors

Thank you to everyone who contributed to this release, we couldn't make Zebra without you:
@arya2, @conradoplg, @gustavovalverde, @mpguerra, @oxarbitrage and @teor2345

Zebra 1.0.0-rc.3

10 Jan 07:58
11baba5
Compare
Choose a tag to compare
Zebra 1.0.0-rc.3 Pre-release
Pre-release

Zebra 1.0.0-rc.3 - 2023-01-10

This release continues our work on mining pool RPCs, and brings Zebra up to date with the latest ZIP-317 changes. It also fixes a minor network protocol compatibility bug.

As part of this release, we upgraded tokio to fix potential hangs and performance issues. We encourage all users to upgrade to the latest Zebra version to benefit from these fixes.

Breaking Changes

  • Zebra now requires at least Rust 1.65, because we have started using new language features.
    Any Zebra release can increase the required Rust version: only the latest stable Rust version is supported.

Security

  • Upgrade tokio from 1.22.0 to 1.23.0 to fix potential hangs and performance issues (#5802)
  • Refactor block subsidy to handle Height::MAX without panicking (#5787)
  • Update ZIP-317 transaction selection algorithm in the getblocktemplate RPC (#5776)

Added

  • Add the getmininginfo, getnetworksolps and getnetworkhashps RPC methods (#5808)
  • Add long polling support to the getblocktemplate RPC (#5772, #5796, #5837, #5843, #5862)
  • Populate blockcommitmenthash and defaultroot fields in the getblocktemplate RPC (#5751)
  • Support transparent p2pkh miner addresses in the getblocktemplate RPC (#5827)

Changed

  • Automatically re-verify mempool transactions after a chain fork, rather than re-downloading them all (#5841)
  • Try to match zcashd's getblocktemplate exactly (#5867)
  • Accept a hash or a height as the first parameter of the getblock RPC (#5861)
  • Wait for 3 minutes to check Zebra is synced to the tip, rather than 2 (#5840)
  • Update mainnet and testnet checkpoints (#5928)

Fixed

  • Allow peers to omit the relay flag in version messages (#5835)

Contributors

Thank you to everyone who contributed to this release, we couldn't make Zebra without you:
@arya2, @dconnolly, @dependabot[bot], @oxarbitrage and @teor2345

Zebra 1.0.0-rc.2

06 Dec 21:37
cc6ff0f
Compare
Choose a tag to compare
Zebra 1.0.0-rc.2 Pre-release
Pre-release

Zebra's latest release continues work on mining pool RPCs, fixes a rare RPC crash that could lead to memory corruption, and uses the ZIP-317 conventional fee for mempool size limits.

Zebra's consensus rules, node sync, and lightwalletd RPCs are ready for user testing and experimental use. Zebra has not been audited yet.

Breaking Changes

This release has the following breaking changes:

  • Evict transactions from the mempool using the ZIP-317 conventional fee (#5703)
    • If there are a lot of unmined transactions on the Zcash network, and Zebra's mempool
      becomes full, Zebra will penalise transactions that don't pay at least the ZIP-317
      conventional fee. These transactions will be more likely to get evicted.
    • The ZIP-317 convention fee increases based on the number of logical transparent or
      shielded actions in a transaction.
    • This change has no impact under normal network conditions.

Security

  • Fix a rare crash and memory errors when Zebra's RPC server shuts down (#5591)
  • Evict transactions from the mempool using the ZIP-317 conventional fee (#5703)

Added

  • Add submitblock RPC method (#5526)
  • Add a mining section with miner address to config (#5491)

Changed

  • Select getblocktemplate RPC transactions according to ZIP-317 (#5724)
  • Add transaction fields to the getblocktemplate RPC (#5496 and #5508)
  • Populate some getblocktemplate RPC block header fields using the state best chain tip (#5659)
  • Return an error from getblocktemplate method if Zebra is not synced to network tip (#5623)
  • Implement coinbase conversion to RPC TransactionTemplate type (#5554)
  • Check block and transaction Sprout anchors in parallel (#5742)
  • Contextually validates mempool transactions in best chain (#5716 and #5616)
  • Generate coinbase transactions in the getblocktemplate RPC (#5580)
  • Log loaded config path when Zebra starts up (#5733)
  • Update mainnet and testnet checkpoints on 2022-12-01 (#5754)
  • Bump zcash_proofs from 0.8.0 to 0.9.0 and zcash_primitives from 0.8.1 to 0.9.0 (#5631)

Fixed

  • Check network and P2SH addresses for mining config and funding streams(#5620)
  • Return an error instead of panicking in the batch verifier on shutdown (#5530)
  • Use a more reliable release template branch name and docker command (#5519)
  • Make the syncer ignore some new block verification errors (#5537)
  • Pause new downloads when Zebra reaches the lookahead limit (#5561)
  • Shut down the RPC server properly when Zebra shuts down (#5591)
  • Print usage info for --help flag (#5634)
  • Fix RPC bugs (#5761)
  • Clarify inbound and outbound port requirements (#5584)

Contributors

Thank you to everyone who contributed to this release, we couldn't make Zebra without you:
@arya2, @oxarbitrage, @teor2345, and @mpguerra

Zebra 1.0.0-rc.1

01 Nov 23:15
79419b6
Compare
Choose a tag to compare
Zebra 1.0.0-rc.1 Pre-release
Pre-release

This is the second Zebra release candidate. Zebra's consensus rules, node sync, and lightwalletd RPCs are ready for user testing and experimental use. Zebra has not been audited yet.

This release starts work on mining pool RPCs, including some mempool fixes. It also restores support for Rust 1.64.

Breaking Changes

This release has the following breaking changes:

  • Remove unused buggy cryptographic code from zebra-chain (#5464, #5476). This code was never used in production, and it had known bugs. Anyone using it should migrate to librustzcash instead.

Added

  • Introduce getblocktemplate-rpcs feature (#5357)
    • Add getblockcount rpc method (#5357)
    • Add getblockhash rpc method (#4967)
    • Add getblocktemplate rpc call with stub fields (#5462)
  • Add block commit task metrics (#5327)
  • Document how we tag and release Zebra (#5392)
  • Document how to use Zebra with Docker (#5504)

Changed

  • Update mainnet and testnet checkpoints (#5512)

Fixed

  • Reject mempool transactions with spent outpoints or nullifiers (#5434)
  • Allow extra lookahead blocks in the verifier, state, and block commit task queues. This reduces the number of downloaded blocks that are dropped due to the lookahead limit. (#5465)

Contributors

Thank you to everyone who contributed to this release, we couldn't make Zebra without you:
@arya2, @gustavovalverde, @oxarbitrage, @teor2345 and @upbqdn

Zebra 1.0.0-rc.0

12 Oct 04:18
a4cb835
Compare
Choose a tag to compare
Zebra 1.0.0-rc.0 Pre-release
Pre-release

This is the first Zebra release candidate. Zebra's consensus rules, node sync, and lightwalletd RPCs are ready for user testing and experimental use. Zebra has not been audited yet.

This release also makes significant performance improvements to RPCs, and temporarily removes support for Rust 1.64.

Breaking Changes

This release has the following breaking changes:

  • Rust 1.64 is unsupported due to a performance regression when downloading the Zcash parameters.
    Zebra currently builds with Rust 1.63 (#5251).
  • Use correct TOML syntax in Docker zebrad.toml (#5320)

Major RPC Performance Improvements

This release improves RPC performance:

  • Initial lightwalletd sync is about twice as fast (#5307)
  • RPCs can run while a block is being committed to the state, previously they could be delayed by 5-15 seconds (#5134, #5257)

Security

  • Make default command work in docker images, disable optional listener ports (#5313)
  • Update yanked versions of cpufeatures (orchard/aes), ed25519 (tor), and quick-xml (flamegraph) (#5308)
  • Bump rand_core from 0.6.3 to 0.6.4, fixes unsoundness bug (#5175)

Changed

  • Log git metadata and platform info when zebrad starts up (#5200)
  • Update mainnet and testnet checkpoints (#5360)
  • Update README for the release candidate (#5314)
  • change(docs): Add links to CI/CD docs in the zebra book's sidebar (#5355)

Fixed

  • Use correct TOML syntax in Docker zebrad.toml (#5320)
  • Look back up to 10,000 blocks on testnet for a legacy chain (#5133)

Performance

  • Build zebrad with Rust 1.63 to avoid Zcash parameter download hangs (#5251)
  • Write blocks to the state in a separate thread, to avoid network and RPC hangs (#5134, #5257)
  • Fix slow getblock RPC (verbose=1) using transaction ID index (#5307)
  • Open the database in a blocking tokio thread, which allows tokio to run other tasks (#5228)

Contributors

Thank you to everyone who contributed to this release, we couldn't make Zebra without you:
@arya2, @gustavovalverde, @oxarbitrage, @teor2345 and @upbqdn.

Zebra 1.0.0-beta.15

19 Sep 23:17
f8ead71
Compare
Choose a tag to compare
Zebra 1.0.0-beta.15 Pre-release
Pre-release

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:
[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.

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

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

CI Dependencies

Removed

Continuous Integration

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

01 Sep 08:35
c322533
Compare
Choose a tag to compare
Zebra 1.0.0-beta.14 Pre-release
Pre-release

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

31 Jul 15:21
61f3639
Compare
Choose a tag to compare
Zebra 1.0.0-beta.13 Pre-release
Pre-release

This release fixes multiple bugs in proof and signature verification, which were causing big performance issues near the blockchain tip.
It also improves Zebra's sync performance and reliability under heavy load.

Disk and Network Usage Changes

Zebra now uses around 50 - 100 GB of disk space, because many large transactions were recently added to the block chain. (In the longer term, several hundred GB are likely to be needed.)

When there are a lot of large user-generated transactions on the network, Zebra can upload or download 1 GB or more per day.

Configuration Changes

  • Split the checkpoint and full verification sync concurrency options (#4726, #4758):
    • Add a new full_verify_concurrency_limit
    • Rename max_concurrent_block_requests to download_concurrency_limit
    • Rename lookahead_limit to checkpoint_verify_concurrency_limit
      For backwards compatibility, the old names are still accepted as aliases.
  • Add a new parallel_cpu_threads sync concurrency option (#4776).
    This option sets the number of threads to use for CPU-bound tasks, such as proof and signature verification.
    By default, Zebra uses all available CPU cores.

Rust Compiler Bug Fixes

  • The Rust team has recently fixed compilation bugs in function coercions of impl Trait return types, and async fn lifetimes.
    We recommend that you update your Rust compiler to release 1.62.1, and re-compile Zebra.

Added

  • Add a rayon thread pool for CPU-bound tasks (#4776)
  • Run multiple cryptographic batches concurrently within each verifier (#4776)
  • Run deserialization of transaction in a rayon thread (#4801)
  • Run CPU-intensive state updates in parallel rayon threads (#4802)
  • Run CPU-intensive state reads in parallel rayon threads (#4805)
  • Support Tiers and supported platforms per Tier doc (#4773)

Changed

  • Update column family names to match Zebra's database design (#4639)
  • Update Zebra's mainnet and testnet checkpoints (#4777, #4833)
  • Process more blocks and batch items concurrently, so there's a batch ready for each available CPU (#4776)
  • Wrap note commitment trees in an Arc, to reduce CPU and memory usage (#4757)
  • Increment tokio dependency from 1.19.2 to 1.20.0, to improve diagnostics (#4780)

Fixed

  • Only verify halo2 proofs once per transaction (#4752)
  • Use a separate channel for each cryptographic batch, to avoid dropped batch results (#4750)
  • Improve batch fairness and latency under heavy load (#4750, #4776)
  • Run all verifier cryptography on blocking CPU-bound threads, using tokio and rayon (#4750, #4776)
  • Use tokio's PollSemaphore, instead of an outdated Semaphore impl (#4750)
  • Check batch worker tasks for panics and task termination (#4750, #4777)
  • Limit the length of the reject network message's message and reason fields (#4687)
  • Change the bitvec dependency from 1.0.0 to 1.0.1, to fix a performance regression (#4769)
  • Fix an occasional panic when a zebra-network connection closes (#4782)
  • Stop panicking when the connection error slot is not set (#4770)
  • When writing blocks to disk, don't block other async tasks (#4199)
  • When sending headers to peers, only deserialize the header data from disk (#4792)
  • Return errors from send_periodic_heartbeats_with_shutdown_handle (#4756)
  • Make FindHeaders and FindHashes run concurrently with state updates (#4826)
  • Stop reading redundant blocks for every FindHashes and FindHeaders request (#4825)
  • Generate sapling point outside the method (#4799)

CI

  • Workaround lightwalletd hangs by waiting until we're near the tip (#4763)
  • Split out Canopy logs into a separate job (#4730)
  • Make full sync go all the way to the tip (#4709)
  • Split Docker logs into sprout, other checkpoints, and full validation (#4704)
  • Add a Zebra cached state update test, fix lightwalletd tests (#4813)