Skip to content

Releases: ZcashFoundation/zebra

Zebra 1.0.0-beta.11

03 Jun 23:07
0e4c51c
Compare
Choose a tag to compare
Zebra 1.0.0-beta.11 Pre-release
Pre-release

This release cleans up a lot of tech debt accumulated in the previous
development and improves the documentation.

Added

  • Log the tracing level when it is set or reloaded (#4515)

CI

  • Add a codespell linting action (#4482)
  • Add grpc tests to CI (#4453)
  • Require network names in cached state disk names (#4392)

RPC

  • Add support for verbosity=1 in getblock (#4511)
  • Add z_gettreestate gRPC tests (#4455)

Documentation

  • Explain what Zebra does when it starts up (#4502)
  • Add a lightwalletd tutorial (#4526)

Changed

  • Immediately disconnect from pre-NU5 nodes (#4538)
  • Upgrade tracing-subscriber and related dependencies (#4517)
  • Disable debug logging at compile time in release builds (#4516)
  • Activate the mempool after 2 syncer runs at the chain tip, rather than 4 (#4501)
  • Run coverage on stable (#4465)
  • Allow more time for tests to end gracefully (#4469)
  • Do not create draft PRs if not needed (#4540)

Rust Dependencies

  • Bump inferno from 0.11.3 to 0.11.4 (#4534)
  • Bump insta from 1.14.0 to 1.14.1 (#4542)
  • Bump log from 0.4.14 to 0.4.17 (#4530)
  • Bump serde_with from 1.13.0 to 1.14.0 (#4532)
  • Bump indexmap from 1.8.1 to 1.8.2 (#4531)
  • Bump vergen from 7.1.0 to 7.2.0 (#4521)
  • Bump prost from 0.10.3 to 0.10.4 (#4490)
  • Bump regex from 1.5.5 to 1.5.6 (#4463)
  • Bump once_cell from 1.11.0 to 1.12.0 (#4462)
  • Bump once_cell from 1.10.0 to 1.11.0 (#4447)

CI Dependencies

  • Bump tj-actions/changed-files from 20 to 21 (#4510)
  • Bump google-github-actions/auth from 0.7.3 to 0.8.0 (#4478)
  • Bump tj-actions/changed-files from 21 to 22 (#4541)
  • Bump w9jds/firebase-action from 2.1.0 to 2.1.2 (#4431)
  • Bump reviewdog/action-actionlint from 1.24.0 to 1.25.0 (#4432)
  • Bump reviewdog/action-actionlint from 1.25.0 to 1.25.1 (#4479)

Fixed

  • Index spending transaction IDs for each address (#4355)
  • Resolve various clippy warnings (#4473)

Documentation

  • Fix various doc warnings (#4514)
  • Fix the syntax of links in comments (#4494)

CI

  • Test RPCs with zcash/lightwalletd, to fix post-NU5 failures in adityapk00/lightwalletd (#4553)
  • Add lightwalletd gRPC, clippy, rustfmt patch jobs (#4518)
  • Permanently fix unreliable sync finished log regex (#4504)
  • Always run patch jobs that depend on cached cloud disks (#4496)
  • Temporarily finish full sync at 99% (#4457)
  • Increase clippy timeout (#4472)
  • Set a network env variable to be used in get-available-disks (#4477)
  • Temporarily stop full sync at 97%, but send transactions at 100% (#4483)
  • Mount the lwd-cache dir to the lightwalletd-full-sync (#4486)
  • Require cached state for the send transactions test (#4487)
  • Make reusable workflow job names match patch job names (#4466)
  • Update docker patch jobs for recent changes (#4460)

Zebra 1.0.0-beta.10

19 May 23:38
6c1c551
Compare
Choose a tag to compare
Zebra 1.0.0-beta.10 Pre-release
Pre-release

Zebra's latest beta continues adding support for lightwalletd RPC methods and continues with the testing of each of these features. Also, this beta sets the NU5 mainnet activation height.

Added

RPC

  • z_gettreestate RPC (#3990)
Tests
  • grpc test for GetTaddressBalanceStream and GetAddressUtxosStream (#4407)
  • snapshot tests for RPC methods responses (#4352 #4401)

CI

  • lightwalletd_update_sync test to CI (#4269)
  • lightwalletd_full_sync test to CI (#4268)

Changed

  • Set NU5 mainnet activation height and current network protocol version (#4390)
  • NU5 mainnet dependency upgrades (#4405)
  • Use the latest lightwalletd version (#4398)

Rust Dependencies

  • orchard, redjubjub, jubjub, group, bls12_381, bitvec, halo2, jubjub, primitive_types,
    librustzcash, zcash_history, zcash_encoding, bellman, zcash_script, incrementalmerkletree (#4405)
  • vergen from 7.0.0 to 7.1.0 (#4420)
  • tokio-util from 0.7.1 to 0.7.2 (#4406)
  • inferno from 0.11.2 to 0.11.3 (#4357)
  • tokio from 1.18.1 to 1.18.2 (#4358)
  • prost from 0.10.2 to 0.10.3 (#4348)
  • bech32 from 0.8.1 to 0.9.0 (#4394)

CI Dependencies

  • google-github-actions/auth from 0.7.1 to 0.7.3 (#4404 #4419)
  • tj-actions/changed-files from 19 to 20 (#4403)
  • w9jds/firebase-action from 2.0.0 to 2.1.0 (#4402)

Others

  • Rename workflow files (#3941)
  • Added block hash and height to syncer errors (#4287)
  • Drop sentry dependencies when enable-sentry feature is disabled (#4372)
  • Deprecate gcr.io as a registry and build faster (#4298)
  • Clippy: Remove redundant bindings, allocations, and generics (#4353)

Documentation

  • Added "old state directories aren't deleted" to known issues (#4365)
  • Added support for Mermaid to render graphs (#4359)
  • Fix some typos (#4397)

Fixed

RPC

  • Use the Sapling activation height in gRPC tests (#4424)

State

  • Return non-finalized UTXOs and tx IDs in address queries (#4356)
  • List cached state files before or after tests (#4409)

CI and testing fixes

  • Updated Cargo.lock check job name in patch workflow (#4428)
  • Put gRPC tests behind an optional feature flag to fix production build issues (#4369)
  • Stop failing the send transaction test (#4416)
  • Require cached lightwalletd state for the send transaction tests (#4303)
  • Errors in Docker entrypoint (#4411)
  • Only use cached state disks with the same state version (#4391)
  • Output length in some tests (#4387)
  • Wrong file being referenced by CI (#4364)
  • Make test selection and logging consistent (#4375)
  • Allow builds over 1 hour and tests without the sentry feature (#4370)

Zebra 1.0.0-beta.9

09 May 16:40
c190e30
Compare
Choose a tag to compare
Zebra 1.0.0-beta.9 Pre-release
Pre-release

Zebra's latest beta continues our work on lightwalletd RPC methods, and contains some internal CI improvements.

Added

RPCs

  • Add a script for comparing zcashd and zebrad RPC responses (#4219)
  • Add Rust tests for lightwalletd sync from Zebra (#4177)
  • Add integration test to send transactions using lightwalletd (#4068)
  • RPC test with fully synced Zebra (#4157)
  • Log unrecognized RPC requests (#3860)
  • Implement the get_address_tx_ids RPC method query (#4119)
  • Implement getaddressbalance RPC (#4138)
  • Add a query function for transparent UTXOs (#4111)

CI

  • Add sending_transactions_using_lightwalletd test to CI (#4267)
  • Add a zebrad tip-height utility command (#4289)
  • Add fully_synced_rpc_test test to CI (#4223)
  • Add a reusable workflow for deployable integration tests (#4271)
  • Add wallet grpc tests (#4253)
  • Implement reusable workflows for image building (#4173)
  • Implement getaddressutxos RPC method. (#4087)

Changed

  • Increase block validation timeouts (#4156)
  • Decrease the peer handshake timeout to 3 seconds, to speed up the initial sync (#4212)
  • Use link-time optimisation in release builds (#4184)
  • Add an extra block retry, to speed up the initial sync (#4185)
  • Update Zebra's block hash checkpoints (#4183)
  • Document coinbase rules, refactor to ease understanding (#4056)
  • Disconnect from testnet peers using the first NU5 testnet rules (#3976)

RPCs

  • Simplify RPC types and add documentation (#4218)

Documentation

  • Add transaction index diagram to RFC-0005 (#4330)

CI

  • Skip tests when doing a manual full sync (#4333)
  • Add cached state version to disk images (#4314)
  • Check specific files for each job when linting (#4311)
  • Use debian for faster mounting and bump readiness time (#4276)
  • Use docker instead of Konlet for GCP deployments in CI (#4252)
  • Create a full sync disk to add the cached state inside (#4266)
  • Increase the Zcash parameter fetch timeout (#4148)

Fixed

  • Fix testnet syncer loop on large Orchard blocks (#4286)

RPCs

  • Fix some RPC response formats to match zcashd (#4217)
  • Make Zebra RPC compatible with the zcash-cli RPC client (#4215)
  • Use a structure for parameters of getaddresstxids (#4264)

CI

  • Only update cached states when needed (#4332)
  • Run sync tests according to the right conditions (#4313)
  • Stop actionlint from failing in main (#4317)
  • Make the full sync tests cache state at /zebrad-cache (#4308)
  • Avoid docker cache contamination and invalidation (#4254)
  • Garbage collect instances no matter previous steps status (#4255)
  • Do not delete instances from main branch on merge (#4206)
  • Retry after docker log follow ssh failures (#4198)
  • Share GitHub runner caches between branches (#4149)

Zebra 1.0.0-beta.8

19 Apr 03:03
75671c5
Compare
Choose a tag to compare
Zebra 1.0.0-beta.8 Pre-release
Pre-release

Zebra's latest beta completes our work on the NU5 consensus rules. It continues our work on lightwalletd RPC methods, and contains some internal CI improvements.

Added

RPCs

  • Implement a retry queue for transactions sent via RPCs (#4015)
  • Partially implement the getaddresstxids RPC method (#4062)

State

  • Add a transparent address balance index (#3963)
  • Add a transparent address UTXO index (#3999)
  • Add a transparent address transaction index (#4038)
  • Add transparent address indexes to the non-finalized state (#4022)
  • Add a query function for transparent address balances (#4097)

CI

  • Create cached state disk image after a successful full sync test (#3986)

Changed

NU5

  • Update to new zcash_script V5 API (#3799)
  • Update network protocol versions for the second NU5 activation on testnet (#3799)
  • Update the consensus branch ID and the second NU5 testnet activation height (#3799)
  • Bump database version to trigger testnet rollback (#3799)

State

  • Store transactions in a separate database index, to improve query speed (#3934)
  • Store UTXOs by transaction location rather than transaction hash (#3978)
  • Stop storing redundant transparent output fields in the database (#3992)
  • Use LZ4 compression for RocksDB (#4027)
  • Use Ribbon filters for database index lookups (#4040)
  • Tune state database file compaction configuration (#4045)

CI

  • Put the state version in cached state disk names (#4073)
  • Improve mergify merge throughput (#4094, #4120)
  • Run cached state rebuilds in main branch (#4107)
  • Use GitHub Branch Protection checks instead of Mergify (#4103, #4105)
  • Lint and standardize the actions structure (#3940)

Rust Dependencies

  • Update shared Zcash dependencies for the second NU5 activation on testnet (#3799)
  • Disable unused rocksdb compression features (#4082)
  • Bump rlimit from 0.7.0 to 0.8.3 (#4051)

CI Dependencies

  • Bump docker/metadata-action from 3.6.2 to 3.7.0 (#4049)
  • Bump google-github-actions/auth from 0.6.0 to 0.7.0 (#4050)
  • Bump tj-actions/changed-files from 18.6 to 18.7 (#4065)
  • Bump reviewdog/action-actionlint from 1.21.0 to 1.23.0 (#4099, #4125)
  • Bump actions/checkout from 3.0.0 to 3.0.1 (#4126)

Fixed

CI

  • Validate tests exit code after reading the container logs (#3968, #4069)
  • Give enough time to zebra before reading logs (#4123)

Rust Clippy

  • Ignore clippy drop warnings in tests (#4081)

Zebra 1.0.0-beta.7

05 Apr 19:42
13c216c
Compare
Choose a tag to compare
Zebra 1.0.0-beta.7 Pre-release
Pre-release

Zebra's latest beta fixes a cargo install build failure in the previous beta release. It also fixes a lightwalletd RPC bug, and improves test coverage.

Changed

Database and State

  • Update database design to put ordered list values in RocksDB keys (#3997)
  • Make transparent address index database design more consistent (#4019)

CI

  • Do not invalidate cache between PRs (#3996)

Dependency Updates

  • Bump hyper from 0.14.17 to 0.14.18 (#3946)
  • Bump indexmap from 1.8.0 to 1.8.1 (#4003)
  • Bump semver from 1.0.6 to 1.0.7 (#3982)
  • Bump serde-big-array from 0.3.2 to 0.4.1 (#4004)
Test Dependency Updates
  • Bump insta from 1.13.0 to 1.14.0 (#3980)
  • Bump tokio-util from 0.7.0 to 0.7.1 (#3981)
CI Dependency Updates
  • Bump tj-actions/changed-files from 18.4 to 18.6 (#4002)

Fixed

Build

  • Fix a compilation error caused by a test-only method in production code (#4000)
  • Add a job to ci.yml that does cargo install --locked --path ./zebrad/ zebrad (#3998)

RPC

  • Tell lightwalletd to wait for missing blocks in the getblock RPC (#3977)

State

  • Stop panicking when a state block commit fails (#4016)

Logging

  • Log hashes as hex strings in block committment errors (#4021)

Tests

  • Check for accidental database incompatibilities in cached state tests (#4020)

Zebra 1.0.0-beta.6

28 Mar 23:20
53bf4c6
Compare
Choose a tag to compare
Zebra 1.0.0-beta.6 Pre-release
Pre-release

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)
  • getrawtransactionRPC method (#3908)

Tests

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

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

21 Feb 16:05
2253f01
Compare
Choose a tag to compare
Zebra 1.0.0-beta.5 Pre-release
Pre-release

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)
  • Add extra integer lints, and partially fix some code (#3409)
  • Prepare for changes in ZIP-244 (#3415, #3446)
  • Support large block heights (#3401)
  • Check coinbase data is at least 2 bytes long (#3542)
  • Ignore non-verack and non-version messages in handshake (#3522)
  • Allow forcing zebrad to use color output (#3547)

Tests

  • Add a test for peerset broadcast panic (#3470)
  • Add PeerSet readiness and request future cancel-safety tests (#3252)
  • Add full chain synchronization acceptance tests (#3543)
  • Add chain tip estimate test: log chain progress while Zebra is syncing (#3495)

Networking

  • Avoid repeated requests to peers after partial responses or errors (#3505)
  • Send notfound when Zebra doesn't have a block or transaction (#3466)
  • Route peer requests based on missing inventory (#3465)
  • Create an API for a missing inventory registry, but don't register any missing inventory yet (#3255)

Documentation

  • Document consensus rules from 7.3 Spend Description Encoding and Consensus (#3575)
  • Document second part of consensus rules from 7.6 Block Header Encoding and Consensus (#3566)
  • Document consensus rules from 3.9 Nullifier Sets (#3521)
  • Update README goals and performance troubleshooting (#3525)
  • Document consensus rules from 4.5 Output Descriptions (#3462)
  • Document shielded pools consensus rules from 7.1.2 Transaction Consensus Rules (#3486)
  • Document Transaction encodings: sprout fields (#3499)
  • Document Transaction encodings: transparent fields (#3498)
  • Document Transaction encodings: orchard fields (#3507)
  • Document Transaction encodings: sapling fields (#3501)
  • Document Transaction encodings: header fields (#3491)
  • Document consensus rules from 4.4 Spend Descriptions (#3460)
  • Document consensus rules from 4.3 JoinSplit Descriptions (#3452)
  • Document Transaction consensus rules: Size rules (#3461)
  • Document Transaction consensus rules: Coinbase rules (#3464)
  • Document Transaction consensus rules: Header rules (#3456)

Changed

  • Reduce log level of components (#3418, #3437)
  • Change Type To Force Consensus Rule Validation (#3544)
  • Split The Database Module (#3568)
  • Dockerize Tests And Run Sync In Detached Mode (#3459)
  • Improve Docker And Gcloud Usage Without Cloud Build (#3431)
  • Make better use of variables, secrets and versions (#3393)

Removed

  • Remove founders reward code (#3430)

Fixed

  • Use the new increase_nofile_limit function from rlimit 0.7.0 (#3539)
  • Generate Well-Formed Finalsaplingroot In Arbitrary Implementation (#3573)
  • Rename some lightwalletd database types (#3567)

Networking

  • Allow more inbound than outbound connections (#3527)
  • Only send responded updates on handshake/ping/pong (#3463)
  • Increase state concurrency and syncer lookahead (#3455)
  • Add a send timeout to outbound peer messages (#3417)

Tests

  • Make Full Sync Test More Accurate (#3555)
  • Create Disk From Image Before Mounting (#3550)
  • Simplify Resource Conflict Test To Avoid Ci Failures (#3537)
  • Make Full Sync Test More Efficient (#3562)
  • Evaluate "if" conditions correctly and use last disk SHA (#3556)

CI

  • Improve test requirements and merge conditions for Mergify (#3580)
  • Make The Purpose Of Each Sync Test Clearer (#3574)
  • Delete A Redundant "Test All" Job (#3552)
  • Allow Branches With Dots In The Name (#3557)
  • Allow Unprivileged Runs Of Clippy (#3558)
  • New Lints In Nightly Rust (#3541)
  • Typo In Paths Filtering Keyword (#3516)
  • Do Not Wait For Deprecated Cloud Build (#3509)
  • Restrict Merges With Unresolved Threads (#3453)
  • Put PRs With No Priority Label In The Low Priority Queue (#3454)
  • Temporarily allow forked repos to run PR workflows (#3503)

Zebra 1.0.0-beta.4

26 Jan 21:44
f6de7fa
Compare
Choose a tag to compare
Zebra 1.0.0-beta.4 Pre-release
Pre-release

Zebra's latest beta improves the networking code and fixes some bugs. A couple of fixed bugs had
caused Zebra to hang in some situations. Some improvements to the documentation were also included.
All Rust crates have now been updated to use Rust 2021 Edition.

Added

  • Add a copy-state zebrad command, which copies blocks between two state services (#3175)

Networking

  • Add isolated Tor connection API, but don't enable it by default (#3303)
  • Add a test for message broadcast to the right number of peers (#3284)

Changed

  • Update to use Rust edition 2021 (#3332)

Networking

  • Cache incoming unsolicited address messages, and use them as responses (#3294)
  • Cleanup internal network request handler, fix unused request logging (#3295)

Documentation

  • Document the consensus rules for Spend Transfers, Output Transfers, and their Descriptions (Section 3.6 of the Zcash protocol specification) (#3338)
  • Document the structure of the zebra-network crate (#3317)
  • Document the consensus rules for Note Commitment Trees (Section 3.8 of the Zcash Protocol Specification) (#3319)
  • Document chain value balances consensus rules with new format (#3286)
  • Document part of the block header consensus rules (#3296)

Fixed

Consensus

  • Fix interstitial sprout anchors check (#3283)
  • Check jubjub key correctness independent of redjubjub / jubjub (#3154)

Networking

  • Fix some bugs related to isolated connections (#3302)
  • Ignore unexpected block responses to fix error cascade when synchronizing blocks, improving synchronization speed (#3374)
  • Cancel heartbeats that are waiting for a peer, rather than hanging Zebra (#3325)
  • Stop ignoring some peers when updating the address book (#3292)
  • Fix some address crawler timing issues (#3293)
  • Retry Zcash sprout and sapling parameters download (#3306)
  • Keep track of background peer tasks (#3253)

Chain Synchronization

  • Fix deadlock in chain tip watch channel, that sometimes caused chain synchronization to hang (#3378)
  • Fix syncer download order and add sync tests (#3168)

Tests

  • Fix a type resolution error in the tests (#3304)

Security

  • Stop RocksDB and Tokio from calling unexpected code when zebrad exits (#3392)

Zebra 1.0.0-beta.3

21 Dec 22:46
a5713da
Compare
Choose a tag to compare
Zebra 1.0.0-beta.3 Pre-release
Pre-release

Zebra's latest beta works towards enforcing all consensus rules by validating JoinSplit Groth16 proofs
used by Sprout transactions. We have also added security and network improvements, and have also
added some metrics to help diagnose networking issues.

Added

Consensus

Networking

  • Add and use debug_skip_parameter_preload config option in tests (#3197)
  • Disconnect from outdated peers on network upgrade (#3108)

Metrics

  • Add diagnostics for peer set hangs (#3203)
  • Add debug-level Zebra network message tracing (#3170)

Fixed

  • Stop ignoring some connection errors that could make the peer set hang (#3200)
  • Spawn initial handshakes in separate tasks, Credit: Equilibrium (#3189)
  • Fix coinbase height deserialization to reject non-minimal encodings (#3129)
  • Stop doing thousands of time checks each time we connect to a peer (#3106)

Security

  • Stop ignoring panics in inbound handshakes (#3192)
  • When there are no new peers, stop crawler using CPU and writing logs (#3177)
  • Limit address book size to limit memory usage (#3162)
  • Drop blocks that are a long way ahead of the tip, or behind the finalized tip (#3167)

Zebra 1.0.0-beta.2

02 Dec 20:55
022808d
Compare
Choose a tag to compare
Zebra 1.0.0-beta.2 Pre-release
Pre-release

Zebra's latest beta continues implementing zero-knowledge proof and note commitment tree validation. In this release, we have finished implementing transaction header, transaction amount, and Zebra-specific NU5 validation. (NU5 mainnet validation is waiting on an orchard crate update, and some consensus parameter updates.)

We also fix a number of security issues that could pose a local denial of service risk, or make it easier for an attacker to make a node follow a false chain.

As of this release, Zebra will automatically download and cache the Sprout and Sapling Groth16 circuit parameters. The cache uses around 1 GB of disk space. These cached parameters are shared across all Zebra and zcashd instances run by the same user.

Added

Network Upgrade 5

  • Validate orchard anchors (#3084)

Groth16 Circuit Parameters

  • Automatically download and cache Zcash Sapling and Sprout parameters (#3057, #3085)
  • Stop linking the Sapling parameters into the zebrad and Zebra test executables (#3057)

Proof & Anchor Verification

  • Use prepared verifying key for non-batch Sapling Groth16 verification (#3092)
  • Validate sapling anchors⚓ (#3084)
  • Add Sprout anchors to zebra-state (#3100)

Transaction Amount & Header Validation

  • Validate miner transaction fees (#3067, #3093)
  • Validate transaction lock times (#3060)
  • Validate transaction expiry height (#3082, #3103)

Dashboards

  • Add transaction-verification.json Grafana dashboard (#3122)

Fixed

  • Shut down channels and tasks on PeerSet Drop (#3078)
  • Re-order Zebra startup, so slow services are launched last (#3091)
  • Fix slow Zebra startup times, to reduce CI failures (#3104)
  • Speed up CI, and split unrelated and conflicting CI jobs (#3077)

Security

  • Stop closing connections on unexpected messages, Credit: Equilibrium (#3120, #3131)
  • Stop routing inventory requests by peer address (#3090)