> This commit just moves functions without making any changes. It can be
> reviewed with `git log -p -n1 --color-moved=dimmed_zebra`
>
> Motivation for this change is to make wallet.cpp/h less monolithic and
> start to make wallet transaction state tracking comprehensible so bugs
> in
> https://github.com/bitcoin-core/bitcoin-devwiki/wiki/Wallet-Transaction-Conflict-Tracking
> can be fixed safely without introducing new problems.
>
> This commit moves wallet classes and methods that deal with transactions
> out of wallet.cpp/.h into better organized files:
>
> - transaction.cpp/.h - CWalletTx and CMerkleTx class definitions
> - receive.cpp/.h - functions checking received transactions and computing balances
> - spend.cpp/.h - functions creating transactions and finding spendable coins
>
> After #20773, when loading is separated from syncing it will also be
> possible to move more wallet.cpp/.h functions to:
>
> - sync.cpp/.h - functions handling chain notifications and rescanning
>
> This commit arranges receive.cpp and spend.cpp functions in dependency
> order so it's possible to skim receive.cpp and get an idea of how
> computing balances works, and skim spend.cpp and get an idea of how
> transactions are created, without having to jump all over wallet.cpp
> where functions are not in order and there is a lot of unrelated code.
>
> Followup commit "refactor: Detach wallet transaction methods" in #21206 follows up this PR and
> tweaks function names and arguments to reflect new locations. The two
> commits are split into separate PRs because this commit is more work to
> maintain and less work to review, while the other commit is less work to
> maintain and more work to review, so hopefully this commit can be merged
> earlier.
This is a backport of core#21207