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

312 lines
14 KiB
Markdown
Raw Normal View History

Changelog
=========
Aditya Kulkarni (1):
Sort taddr txns by txindex in addition to height
Alex Morcos (4):
Store the total sig op count of a tx.
Add a score index to the mempool.
Add TxPriority class and comparator
tidy up CInv::GetCommand
Daira Hopwood (8):
Improve error message when a block would overfill the Orchard commitment tree.
More precise terminology: "lock free" -> "unlocked"
ZIP 339 support.
Update URL for Boost source download (from dl.bintray.com to boostorg.jfrog.io).
Cargo.toml: use librustzcash after the merge of https://github.com/zcash/librustzcash/pull/424 .
Update unified address test data to take account of HRPs in padding (https://github.com/zcash/librustzcash/pull/419).
Avoid need to cast away const in the C caller of zip339_free_phrase.
Update authors of librustzcash to everyone currently and formerly on Core team (in alphabetical order).
Eric Lombrozo (2):
Removed ppszTypeName from protocol.cpp
getdata enum issue fix
Ethan Heilman (1):
Fix typo adddrman to addrman as requested in #8070
Ethan Heilman (1):
Remove non-determinism which is breaking net_tests #8069
Gregory Maxwell (4):
Eliminate TX trickle bypass, sort TX invs for privacy and priority.
Move bloom and feerate filtering to just prior to tx sending.
Do not use mempool for GETDATA for tx accepted after the last mempool req.
Defer inserting into maprelay until just before relaying.
Jack Grigg (109):
Re-include reading blocks from disk in block connection benchmark
cargo update
Migrate to latest zcash_* crates
metrics 0.16 and metrics-exporter-prometheus 0.5
Implement ZIP 216 consensus rules
Extract SpendDescriptionV5 and OutputDescriptionV5 classes
rust: Enable C++ streams to be passed into Rust code
ZIP 225 tx format constants
v5 transaction format parser
contrib: Add BOSL to contrib/debian/copyright
Remove early return logic from transaction parsing
rust: Document read_callback_t and write_callback_t
CTransaction: Make new ZIP 225 fields non-const and private
ZIP 244 transaction digests
ZIP 244 signature digests
ZIP 244 hashAuthDataRoot computation
Fix tests that assume CTxOuts can be "null"
test: Generate valid Sapling types
test: Small fixes to sighash test vector generation
test: Regenerate sighash.json after generator fixes
Throw an exception instead of asserting if Rust tx parser fails
CI: Publish correct book directory
CI: Build book with latest mdbook
rust: Documentation improvements to FFI methods
Implement Orchard authorization batch validator
Implement Orchard signature validation consensus rules
rust: Fix patched dependencies
book: Add dev guide page about Rust dependencies
Rename hashLightClientRoot to hashBlockCommitments in block header
ZIP 244 hashBlockCommitments implementation
test: Check for valid hashBlockCommitments construction post-NU5
Skip hashBlockCommitments check when testing block templates
test: Check hashBlockCommitments before, at, and after NU5 activation
ConnectBlock: Check NU activation when deriving block commitments
Copy authDigest in CTransaction::operator=(const CTransaction &tx)
rust: Move history tree FFI logic into a module
rust: Migrate to zcash_history with versioned trees
rust: Move history tree FFI declarations into a separate header
test: Use valid consensus branch IDs in history tree tests
Use V2 history trees from NU5 onward
test: Check history trees across Canopy and NU5 activations
rpc: Document getblock RPC finalorchardroot field, omit before NU5
rust: Document some requirements for history tree FFI methods
test: Add test case for popping from an empty history tree
Implement Orchard pool value tracking
rust: Load Orchard circuit parameters at startup
Check Orchard bundle-specific consensus rules, i.e. proofs
test: Update CCoinsViewTest with changes to CCoinsView interface
Include Orchard bundle in transaction dynamic usage
ZIP 203: Enforce coinbase nExpiryHeight consensus rule from NU5
test: Check for updated empty-tx reject messages in transaction tests
test: Fix OverwinterExpiryHeight test after ZIP 203 contextual changes
miner: Set coinbase expiry height to block height from NU5 activation
Introduce libzcash::RawAddress type
Use `libzcash::RawAddress` in `CWallet::GetFilteredNotes`
Use a visitor for handling -mineraddress config option
Add support for decoding and encoding Unified Addresses
Pass network type through to UA address handling logic
CI: Add workflow that runs general lints
CI: Check scripted diffs
CI: Add Rust lints
Document why a nested call to ExtractMinerAddress is not recursive
Add constants for UA typecodes
Postpone dependency updates we aren't doing in this release
depends: Update Rust to 1.54.0
depends: Update Clang / libcxx to LLVM 12
depends: Update utfcpp to 3.2.1
depends: Fix issue cross-compiling BDB to Windows with Clang 12
rust: cargo update
rust: metrics 0.17
CI: Use Rust 1.54 for lints
cargo fmt
test: Wait for transaction propagation in shorter_block_times RPC test
test: Fix race condition in p2p_txexpiringsoon
Revert "Remove reference to -reindex-chainstate"
test: Flush wallet in WriteCryptedSaplingZkeyDirectToDb before reopening
qa: Bump `sync_mempool` timeout for `prioritisetransaction.py`
ProcessGetData(): Rework IsExpiringSoon check
test: Print reject reason if RPC test block rejected instead of accepted
test: Fix pyflakes warnings
CI: Ignore errors from general lints we don't yet have passing
lint: remove duplicate include
lint: Add missing include guards
test: Add NU5 test cases to existing RPC tests
builder: Generate v5 transactions from NU5 activation
Print `nConsensusBranchId` in `CTransaction::ToString`
Separate the consensus and internal consistency checks for branch ID
Parse consensus branch ID when reading v5 transaction format
test: Use correct field of getnetworkinfo to read protocol version
CI: Add Dependabot config to keep Actions up-to-date
Introduce a WTxId struct
Implement CInv message type MSG_WTX
test: Fix bugs in mininode transaction parser
test: Add v5 tx support to mininode
ProcessGetData: Respond to MSG_WTX requests
Add MSG_WTX support to inv messages
Use wtxid for peer state management
test: Implement CInv.__eq__() for mininode to simplify RPC test
Postpone dependency updates that require CMake
depends: Update Rust to 1.54.0
test: Fix bug in mininode.SpendDescription.deserialize
Add named constants for legacy tx authDigest placeholder value
qa: Boost 1.77.0
cargo update
Migrate to latest revisions of Zcash Rust crates
test: Set up mininodes at the start of feature_zip239
net: Reject unknown CInv message types
make-release.py: Versioning changes for 4.5.0-rc1.
make-release.py: Updated manpages for 4.5.0-rc1.
John Newbery (10):
[tests] Remove wallet accounts test
[wallet] GetBalance can take an isminefilter filter.
[wallet] Factor out GetWatchOnlyBalance()
[wallet] deduplicate GetAvailableCredit logic
[wallet] factor out GetAvailableWatchOnlyBalance()
[wallet] GetBalance can take a min_depth argument.
[RPC] [wallet] allow getbalance to use min_conf and watch_only without accounts.
[wallet] Remove wallet account RPCs
[wallet] Kill accounts
[net] split PushInventory()
Jonas Schnelli (1):
fix locking issue with new mempool limiting
Kris Nuttycombe (46):
Update transaction auth commitments for pre-v5 transactions.
Move OrchardBundle to its own header file.
Implement the Rust side of the incremental merkle tree FFI.
Orchard changes to coins & consensus.
Return std::optional for GetAnchor
Check nullifiers length against bundle actions length.
Add Orchard bundle commitments to merkle tree.
Add Orchard merkle tree anchor tests.
Documentation cleanup.
Update orchard dependency.
Update to released version of incrementalmerkletree
Apply suggestions from code review
Apply suggestions from code review
Fix Orchard incremental Merkle tree empty root.
Fix header guards for incremental_sinsemilla_tree.h
Apply style suggestions.
Consistently panic on null commitment tree pointers.
Fix implmentation of OrchardMerkleTree.DynamicMemoryUsage
Document source of Orchard merkle tree test data.
Apply suggestions from code review
Add consensus check for duplicate Orchard nullifiers within a single transaction.
Add Orchard nullifiers to nullifiers cache.
Apply suggestions from code review
Ensure Sapling versions are valid after NU5
Make CTransaction::nConsensusBranchId a std::optional
Add NU5 upper bound check on nSpendsSapling, nOutputsSapling, nActionsOrchard
Check consensus branch ID for V5 transactions.
Rename tx.valueBalance -> tx.valueBalanceSapling
Make valueBalanceSapling a private non-const member of CTransaction.
Add Orchard value balance checks.
Account for Orchard balance in GetValueOut and GetShieldedValueIn.
Retract partial Orchard test support.
Add check that v5 transactions have empty Sprout joinsplits.
Prevent undefined behaviour in `CTransaction::GetValueOut()`
ZIP 213: Add checks to support Orchard shielded coinbase outputs.
Add check for consistency between nActionsOrchard and Orchard flags.
Ensure that the Orchard note commitment tree does not exceed its maximum size.
Update Orchard commitment tree hashes to use total MerkleCRH^Orchard.
Apply suggestions from code review
Make Sapling Spend and Ouput count, and Orchard Action count checks be noncontextual.
Use DOS level 100 for noncontextual checks.
Fix error strings to correctly reflect context.
Remove unused account-related wallet methods.
Use manual serialization for Merkle frontiers rather than bincode.
Fix clippy complaints.
Lock the wallet in SetBestChainINTERNAL
Larry Ruane (1):
ZIP 225: v5 transaction check rules
Luke Dashjr (1):
Optimisation: Store transaction list order in memory rather than compute it every need
Marco Falke (1):
[qa] py2: Unfiddle strings into bytes explicitly
Matt Corallo (4):
Fix calling mempool directly, instead of pool, in ATMP
Track (and define) ::minRelayTxFee in CTxMemPool
Add CFeeRate += operator
Print mempool size in KB when adding txn
Patrick Strateman (5):
Fix insanity of CWalletDB::WriteTx and CWalletTx::WriteToDisk
Add CWallet::ListAccountCreditDebit
Add CWallet::ReorderTransactions and use in accounting_tests.cpp
Move CWalletDB::ReorderTransactions to CWallet
Move GetAccountBalance from rpcwallet.cpp into CWallet::GetAccountBalance
Pieter Wuille (16):
Replace trickle nodes with per-node/message Poisson delays
Change mapRelay to store CTransactions
Make ProcessNewBlock dbp const and update comment
Switch reindexing to AcceptBlock in-loop and ActivateBestChain afterwards
Optimize ActivateBestChain for long chains
Add -reindex-chainstate that does not rebuild block index
Report reindexing progress in GUI
Split up and optimize transaction and block inv queues
Handle mempool requests in send loop, subject to trickle
Return mempool queries in dependency order
Add support for unique_ptr and shared_ptr to memusage
Switch CTransaction storage in mempool to std::shared_ptr
Optimize the relay map to use shared_ptr's
Optimization: don't check the mempool at all if no mempool req ever
Optimization: use usec in expiration and reuse nNow
Get rid of CTxMempool::lookup() entirely
Russell Yanofsky (2):
[wallet] Add GetLegacyBalance method to simplify getbalance RPC
[wallet] Remove unneeded legacy getbalance code
Shaul Kfir (1):
Add absurdly high fee message to validation state (for RPC propagation)
Suhas Daftuar (3):
Use txid as key in mapAlreadyAskedFor
Reverse the sort on the mempool's feerate index
Only use AddInventoryKnown for transactions
Technetium (1):
add missing aarch64 build deps
Wladimir J. van der Laan (17):
streams: Add data() method to CDataStream
streams: Remove special cases for ancient MSVC
dbwrapper: Use new .data() method of CDataStream
wallet: Use CDataStream.data()
net: Consistent checksum handling
net: Hardcode protocol sizes and use fixed-size types
protocol.h: Move MESSAGE_START_SIZE into CMessageHeader
protocol.h: Make enums in GetDataMsg concrete values
Add assertion and cast before sending reject code
Add debug message to CValidationState for optional extra information
Introduce REJECT_INTERNAL codes for local AcceptToMempool errors
Add function to convert CValidationState to a human-readable message
Remove most logging from transaction validation
Add information to errors in ConnectBlock, CheckBlock
Move mempool rejections to new debug category
net: Fix sent reject messages for blocks and transactions
test: Add basic test for `reject` code
hexabot (2):
Update depends/packages/native_clang.mk
Update depends/packages/native_rust.mk
Marshall Gaucher (5):
Remove sprout funding flow logic
Add fix and note for timing issue
Update funding logic bug
Add usage documentation for manual and faucet driven tests
Update funding logic
Jack Grigg (12):
Document next_pow2 effects and algorithm source
Improvements to CBlock::BuildAuthDataMerkleTree
rust: Explicitly return null hash for pre-v5 auth digests
book: Note that cargo patches work with absolute paths
Improve docs about setting CBlockIndex hash fields
test: Cleanups to ZIP 221 Python test code
Minor fixes to documentation and formatting
Fix typo in method documentation
Track lengths when copying receiver data from C++ to Rust
depends: Greatly simplify the Clang 12 patch
Adjust code comments to remove topological-sort references
Fix typos