5f96d7d22drpc: gettxoutsetinfo rejects hash_serialized_2 for specific height (Fabian Jahr)23fe50436btest: Add test for coinstatsindex behavior in reorgs (Fabian Jahr)90c966b0f3rpc: Allow gettxoutsetinfo and getblockstats for stale blocks (Fabian Jahr)b9362392aeindex, rpc: Add use_index option for gettxoutsetinfo (Fabian Jahr)bb7788b121test: Test coinstatsindex robustness across restarts (Fabian Jahr)e0938c2909test: Add tests for block_info in gettxoutsetinfo (Fabian Jahr)2501576eccrpc, index: Add verbose amounts tracking to Coinstats index (Fabian Jahr)655d929836test: add coinstatsindex getindexinfo coverage, improve current tests (Jon Atack)ca01bb8d68rpc: Add Coinstats index to getindexinfo (Fabian Jahr)57a026c30ftest: Add unit test for Coinstats index (Fabian Jahr)6a4c0c09abtest: Add functional test for Coinstats index (Fabian Jahr)3f166ecc12rpc: gettxoutsetinfo can be requested for specific blockheights (Fabian Jahr)3c914d58ffindex: Coinstats index can be activated with command line flag (Fabian Jahr)dd58a4de21index: Add Coinstats index (Fabian Jahr)a8a46c4b3crefactor: Simplify ApplyStats and ApplyHash (Fabian Jahr)9c8a265fd2refactor: Pass hash_type to CoinsStats in stats object (Fabian Jahr)2e2648a902crypto: Make MuHash Remove method efficient (Fabian Jahr) Pull request description: This is part of the coinstats index project tracked in #18000 While the review of the new UTXO set hash algorithm (MuHash) takes longer recently #19328 was merged which added the possibility to run `gettxoutsetinfo` with a specific hash type. As the first type it added `hash_type=none` which skips the hashing of the UTXO set altogether. This alone did not make `gettxoutsetinfo` much faster but it allows the use of an index for the remaining coin statistics even before a new hashing algorithm has been added. Credit to Sjors for the idea to take this intermediate step. Features summary: - Users can start their node with the option `-coinstatsindex` which syncs the index in the background - After the index is synced the user can use `gettxoutsetinfo` with `hash_type=none` or `hash_type=muhash` and will get the response instantly out of the index - The user can specify a height or block hash when calling `gettxoutsetinfo` to see coin statistics at a specific block height ACKs for top commit: Sjors: re-tACK5f96d7d22djonatack: Code review re-ACK5f96d7d22dper `git range-diff13d27b407201d3 5f96d7d` promag: Tested ACK5f96d7d22d. Light code review ACK5f96d7d22d. Tree-SHA512: cbca78bee8e9605c19da4fbcd184625fb280200718396c694a56c7daab6f44ad23ca9fb5456d09f245d8b8d9659fdc2b3f3ce5e953c1c6cf4003dbc74c0463c2
src/node/
The src/node/ directory contains code that needs to access node state
(state in CChain, CBlockIndex, CCoinsView, CTxMemPool, and similar
classes).
Code in src/node/ is meant to be segregated from code in
src/wallet/ and src/qt/, to ensure wallet and GUI
code changes don't interfere with node operation, to allow wallet and GUI code
to run in separate processes, and to perhaps eventually allow wallet and GUI
code to be maintained in separate source repositories.
As a rule of thumb, code in one of the src/node/,
src/wallet/, or src/qt/ directories should avoid
calling code in the other directories directly, and only invoke it indirectly
through the more limited src/interfaces/ classes.
This directory is at the moment
sparsely populated. Eventually more substantial files like
src/validation.cpp and
src/txmempool.cpp might be moved there.