tl;dr: Split `GetUTXOStats` into `ComputeUTXOStats` and `CoinStatsIndex::LookUpStats`, and use `ComputeUTXOStats` in validation to enable decoupling validation from indexing.
> coinstats: Separate hasher/index lookup codepaths
>
> Split out ComputeUTXOStats and LookupUTXOStatsWithIndex from
> GetUTXOStats, since the hashing and indexing codepaths are quite
> disparate in practice.
>
> Also allow add a constructor to CCoinsStats for it to be constructed
> from a a block height and hash. This is used in both codepaths.
>
> Also add a note in GetUTXOStats documenting a behaviour quirk that
> predates this patchset.
>
> [META] This allows the hashing codepath to be moved to a separate file
> in a future commit, decoupling callers that only rely on the
> hashing codepath from the indexing one. This is key for
> libbitcoinkernel, which needs to have the hashing codepath for
> AssumeUTXO, but does not wish to be coupled with indexes.
https://github.com/bitcoin/bitcoin/pull/24410/commits/1352e410a5b84070279ff28399083cb3ab278593
> Move logic from LookupUTXOStatsWithIndex to CoinStatsIndex::LookUpStats
>
> The indexing codepath logic in node/coinstats.cpp is simple enough to be
> moved into CoinStatsIndex::LookUpStats, avoiding an additional layer of
> function calls. Callers are modified accordingly.
>
> Also, add 2 missed BOOST_CHECKs to the coinstatsindex_initial_sync unit
> test.
https://github.com/bitcoin/bitcoin/pull/24410/commits/b7634fe02b6b030f5d62502c73db84ba9a276640
> Use ComputeUTXOStats in validation
>
> This is the "fruit of our labor" for this patchset.
> ChainstateManager::PopulateAndValidateSnapshot can now directly call
> ComputeUTXOStats(...).
>
> This opens the way for our consensus engine to be fully decoupled from all indices.
https://github.com/bitcoin/bitcoin/pull/24410/commits/f1006875665ffe8ff5da8185effe25b860743b4e
Note: I backported this last commit without the `node -> kernel` refactoring. I will do this in a separate commit, together with all the moving of code it involves.
This is a partial backport of core#24410
Depends on D14672