zcashd/doc/release-notes/release-notes-5.2.0-rc1.md

7.9 KiB

Notable changes

Node Performance Improvements

This release makes several changes to improve the performance of node operations. These include:

  • Backported CuckooCache from upstream to improve the performance of signature caching.

  • Added caching of proof and signature validation results for Sapling and Orchard to eliminate redundant computation.

  • Backported SHA-256 assembly optimizations from upstream.

Wallet Performance Improvements

This release makes several changes to improve the performance of wallet operations. These include:

  • We now parallelize and batch trial decryption of Sapling outputs.

  • We now prune witness data in the wallet for notes spent more than 100 blocks in the past, so that we can avoid unnecessarily updating those witnesses. In order to take advantage of this performance improvement, users will need to start their nodes with -rescan the first time .

  • The process for incrementing the witnesses for notes the wallet is tracking has been optimized to avoid redundant passes over the wallet.

  • Removed an assertion that was causing a slowdown in wallet scanning post-NU5.

RPC Interface Changes

  • A version field was added to the result for the gettransaction RPC call to avoid the need to make an extra call to getrawtransaction just to retrieve the version.

Fixes

  • Fixed a regression that caused an incorrect process name to appear in the process list.

Changelog

Aditya Kulkarni (1): Add tx version

Ben Woosley (1): build: Detect gmtime_* definitions via configure

Chun Kuan Lee (1): Use __cpuid_count for gnu C to avoid gitian build fail.

Cory Fields (2): time: add runtime sanity check build: always attempt to enable targeted sse42 cxxflags

Daira Hopwood (3): This reverts part of 1f1810c37d in #5959. Leaving the main thread unnamed causes it to be displayed as the executable name (i.e. zcashd) or command line in process monitoring tools. fixes #6066 Apply doc suggestions from code review Use crossbeam-channel instead of std::sync::mpsc.

Dan Raviv (1): Fix header guards using reserved identifiers

Gregory Maxwell (1): Add an explanation of quickly hashing onto a non-power of two range.

Hennadii Stepanov (1): Use correct C++11 header for std::swap()

Jack Grigg (16): lint: Fix include guards wallet: Prune witnesses for notes spent more than 100 blocks ago wallet: Make {Increment, Decrement}NoteWitnesses-internal helpers static Cache Sapling and Orchard bundle validation Add bundle kind to BundleValidityCache initialization log message wallet: Throw error if ReadBlockFromDisk fails wallet: Improve documentation of SproutNotData and SaplingNoteData Move explicit instantiations for BundleValidityCache into zcash/cache.cpp bench: Fix ConnectBlock large block benchmarks wallet: Add BatchScanner interface to CValidationInterface wallet: Pass Consensus::Params into CWallet::FindMySaplingNotes wallet: Migrate CWallet to CValidationInterface::InitBatchScanner rust: Implement multithreaded batched trial decryption for Sapling wallet: Use batch trial decryption for Sapling outputs wallet: Enforce an assumption about how wallet data evolves wallet: Domain-separate batched txids with a "block tag"

Jeremy Rubin (4): Add CuckooCache implementation and replace the sigcache map_type with it Add unit tests for the CuckooCache Decrease testcase sizes in cuckoocache tests Deduplicate SignatureCacheHasher

Jim Posen (1): scripted-diff: Move util files to separate directory.

Jon Layton (1): doc: Doxygen-friendly CuckooCache comments

Kris Nuttycombe (15): scripted-diff: Move utiltest to src/util Add a clock for testing with an offset from the system clock. Apply suggestions from code review Add persistent Sprout test data. Remove the temporary test that was used for setup of the cached Sprout fixtures. Add RPC test initialization using the persisted Sprout chains. Update sprout_sapling_migration test to use persisted sprout chains. Update feature_zip239 test to use persisted sprout chains. Add missing header to util/time.h Update finalsaplingroot test to use persisted sprout chains. Update getblocktemplate test to use persisted sprout chain Replace setup_clean_chain with cache_behavior in rpc test init. qa: Postpone recent native_rust, native_cxxbridge and rustcxx updates make-release.py: Versioning changes for 5.2.0-rc1. make-release.py: Updated manpages for 5.2.0-rc1.

Luke Dashjr (3): configure: Invert --enable-asm help string since default is now enabled configure: Skip assembly support checks, when assembly is disabled configure: Initialise assembly enable_* variables

Marshall Gaucher (2): Update entrypoint.sh Update contrib/docker/entrypoint.sh

Pieter Wuille (34): Allow non-power-of-2 signature cache sizes Do not store Merkle branches in the wallet. Avoid duplicate CheckBlock checks Add merkle.{h,cpp}, generic merkle root/branch algorithm Switch blocks to a constant-space Merkle root/branch algorithm. Add FastRandomContext::rand256() and ::randbytes() scripted-diff: Rename cuckoo tests' local rand context Merge test_random.h into test_bitcoin.h Add various insecure_rand wrappers for tests scripted-diff: use insecure_rand256/randrange more Replace more rand() % NUM by randranges Replace rand() & ((1 << N) - 1) with randbits(N) Use randbits instead of ad-hoc emulation in prevector tests scripted-diff: Use randbits/bool instead of randrange where possible scripted-diff: Use new naming style for insecure_rand* functions Support multi-block SHA256 transforms Add SHA256 dispatcher Add SSE4 based SHA256 Add selftest for SHA256 transform Protect SSE4 code behind a compile-time flag Benchmark Merkle root computation Refactor SHA256 code Specialized double sha256 for 64 byte inputs Use SHA256D64 in Merkle root computation 4-way SSE4.1 implementation for double SHA256 on 64-byte inputs 8-way AVX2 implementation for double SHA256 on 64-byte inputs [MOVEONLY] Move unused Merkle branch code to tests Enable double-SHA256-for-64-byte code on 32-bit x86 Improve coverage of SHA256 SelfTest code For AVX2 code, also check for AVX, XSAVE, and OS support [Refactor] CPU feature detection logic for SHA256 Add SHA256 implementation using using Intel SHA intrinsics Use immintrin.h everywhere for intrinsics Avoid non-trivial global constants in SHA-NI code

Wladimir J. van der Laan (2): build: Rename --enable-experimental-asm to --enable-asm and enable by default build: Mention use of asm in summary

furszy (3): Fix missing vector include and vector type definition Rework Sprout and Sapling witnesses increment and cache workflow, so it does not loop over the entire wallet txs map indiscriminately. Use references instead of pointers where possible.

instagibbs (1): Return useful error message on ATMP failure

nathannaveen (1): chore: Set permissions for GitHub actions

practicalswift (1): Use explicit casting in cuckoocache's compute_hashes(...) to clarify integer conversion

sasha (3): Patch smoke_tests.py to properly handle changes in minconf behavior Improve smoke_test.py wait_for_balance message in the minconf!=1 case Patch smoke_tests.py to require 4 confirmations for z_mergetoaddress

Jack Grigg (2): Improve bundlecache documentation Minor fixes to documentation

Zancas Wilcox (1): match the actual two hyphen flag