Skip to content

Refactor/baseindex address spent timestamp#240

Merged
cdonnachie merged 12 commits into5.xfrom
refactor/baseindex-address-spent-timestamp
Apr 15, 2026
Merged

Refactor/baseindex address spent timestamp#240
cdonnachie merged 12 commits into5.xfrom
refactor/baseindex-address-spent-timestamp

Conversation

@cdonnachie
Copy link
Copy Markdown
Member

No description provided.

… framework

- Remove legacy BlockTreeDB-embedded address/spent/timestamp index methods
  from node/blockstorage.h/.cpp and all 6 helper functions from validation.h/.cpp
- Remove old ConnectBlock/DisconnectBlock inline index-building code from
  validation.cpp; indexing is now handled by BaseIndex subclasses
- Add src/index/addressindex.h/.cpp: AddressIndex : BaseIndex, exposes
  ReadAddressIndex() and ReadAddressUnspentIndex()
- Add src/index/spentindex.h/.cpp: SpentIndex : BaseIndex, exposes
  ReadSpentIndex()
- Add src/index/timestampindex.h/.cpp: TimestampIndex : BaseIndex
- init.cpp: construct index instances via make_unique and set fXxxIndex flags
- rpc/indexes.cpp: replace GetAddressIndex/GetSpentIndex free-function calls
  with g_addressindex->ReadAddressIndex() / g_spentindex->ReadSpentIndex()
- validation.cpp FinalizeSubpackage: call addAddressIndex/addSpentIndex after
  ChangeSet::Apply() so unconfirmed mempool transactions populate the
  in-memory address/spent maps (fixes getaddressmempool returning empty results)
listaddressesbyasset and listassetbalancesbyaddress both iterated
passets->mapAssetsAddressAmount which is cleared on every chainstate
flush (DumpCacheToDatabase -> ClearDirtyCache), causing both RPCs to
return {} after the first flush.

Fix by reading persisted balances from LevelDB (AssetAddressDir /
AddressDir) and overlaying any unsaved in-memory dirty entries on top.
@cdonnachie cdonnachie merged commit 71f52a6 into 5.x Apr 15, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant