mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-11-15 08:31:49 +01:00
Merge bitcoin/bitcoin#30469: index: Fix coinstats overflow
c767974811clang-tidy: Fix critical warnings (Fabian Jahr)54dc34ec22index: Remove unused coinstatsindex recovery code (Fabian Jahr)37c4fba1f4index: Check BIP30 blocks when rewinding Coinstatsindex (Fabian Jahr)51df9de8e5doc: Add release note for 30469 (Fabian Jahr)bb8d673183test: Add coinstatsindex compatibility test (Fabian Jahr)b2e8b64ddcindex, refactor: Append blocks to coinstatsindex without db read (Fabian Jahr)431a076ae6index: Fix coinstatsindex overflow issue (Fabian Jahr)84e813a02bindex, refactor: DRY coinbase check (Fabian Jahr)fab842b324index, refactor: Rename ReverseBlock to RevertBlock (Fabian Jahr) Pull request description: Closes https://github.com/bitcoin/bitcoin/issues/26362 This continues the work that was started with #26426. It fixes the overflow issue by switching the tracked values that are in danger of overflowing from `CAmount` to `arith_uint256`. The current approach opts for a simple solution to ensure compatibility with datadirs including the previous version of the index: The new version of the index goes into a separate location in the datadir (`index/coinstatsindex/` rather than `index/coinstats/` before, the new naming is more consistent with the naming of the other indexes). There is no explicit concept of versioning of the index which earlier versions of this PR had. Having the two different versions of the index in separate places allows for downgrading of the node without having to rebuild the index. However, there will be a warning printed in the logs if the new code (v30) detects the old index still being present. A future version could delete a left-over legacy index automatically. The PR also includes several minor improvements but most notably it lets new entries be calculated and stored without needing to read any DB records. ACKs for top commit: achow101: ACKc767974811TheCharlatan: ACKc767974811mzumsande: Tested / Code Review ACKc767974811Tree-SHA512: 3fa4a19dd1a01c1b01390247bc9daa6871eece7c1899eac976e0cc21ede09c79c65f758d14daafc46a43c4ddd7055c85fb28ff03029132d48936b248639c6ab9
This commit is contained in:
@@ -57,7 +57,7 @@ Subdirectory | File(s) | Description
|
||||
`indexes/txindex/` | LevelDB database | Transaction index; *optional*, used if `-txindex=1`
|
||||
`indexes/blockfilter/basic/db/` | LevelDB database | Blockfilter index LevelDB database for the basic filtertype; *optional*, used if `-blockfilterindex=basic`
|
||||
`indexes/blockfilter/basic/` | `fltrNNNNN.dat`<sup>[\[2\]](#note2)</sup> | Blockfilter index filters for the basic filtertype; *optional*, used if `-blockfilterindex=basic`
|
||||
`indexes/coinstats/db/` | LevelDB database | Coinstats index; *optional*, used if `-coinstatsindex=1`
|
||||
`indexes/coinstatsindex/db/` | LevelDB database | Coinstats index; *optional*, used if `-coinstatsindex=1`
|
||||
`wallets/` | | [Contains wallets](#multi-wallet-environment); can be specified by `-walletdir` option; if `wallets/` subdirectory does not exist, wallets reside in the [data directory](#data-directory-location)
|
||||
`./` | `anchors.dat` | Anchor IP address database, created on shutdown and deleted at startup. Anchors are last known outgoing block-relay-only peers that are tried to re-connect to on startup
|
||||
`./` | `banlist.json` | Stores the addresses/subnets of banned nodes.
|
||||
|
||||
4
doc/release-notes-30469.md
Normal file
4
doc/release-notes-30469.md
Normal file
@@ -0,0 +1,4 @@
|
||||
Indexes
|
||||
-------
|
||||
|
||||
- The implementation of coinstatsindex was changed to prevent an overflow bug that could already be observed on the default Signet. The new version of the index will need to be synced from scratch when starting the upgraded node for the first time. The new version is stored in `/indexes/coinstatsindex/` in contrast to the old version which was stored at `/indexes/coinstats/`. The old version of the index is not deleted by the upgraded node in case the user chooses to downgrade their node in the future. If the user does not plan to downgrade it is safe for them to remove `/indexes/coinstats/` from their datadir. A future release of Bitcoin Core may remove the old version of the index automatically.
|
||||
Reference in New Issue
Block a user