Releases: ZcashFoundation/zebra
Zebra 1.0.0-rc.6
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 verifyhalo2
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
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
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 sureconsensus.checkpoint_sync = true
. This option has
been true by default since March 2022.
- If your config is based on an old version of Zebra, or you have manually
-
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 inzebrad.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
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
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
andgetnetworkhashps
RPC methods (#5808) - Add long polling support to the
getblocktemplate
RPC (#5772, #5796, #5837, #5843, #5862) - Populate
blockcommitmenthash
anddefaultroot
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
'sgetblocktemplate
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 inversion
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
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.
- If there are a lot of unmined transactions on the Zcash network, and Zebra's mempool
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
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
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 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
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
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 yourzebrad.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'slightwalletd
gRPC test suite, see thetonic
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
- 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
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
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
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 (likezcashd
).
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 forzebrad
(#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
onIncomingViewingKey::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
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
infallback_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
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
todownload_concurrency_limit
- Rename
lookahead_limit
tocheckpoint_verify_concurrency_limit
For backwards compatibility, the old names are still accepted as aliases.
- Add a new
- 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, andasync 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
andrayon
(#4750, #4776) - Use
tokio
'sPollSemaphore
, instead of an outdatedSemaphore
impl (#4750) - Check batch worker tasks for panics and task termination (#4750, #4777)
- Limit the length of the
reject
network message'smessage
andreason
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)