dash/src/coinjoin
pasta ff1ddc952a
Merge #6443: refactor: move CConnman and PeerManager out of CDeterministicMNManager, LLMQContext member ctors, reduce use in CJContext
7d26061170 refactor: move `CConnman`, `PeerManager` out of `CCoinJoinClientQueueManager` ctor (Kittywhiskers Van Gogh)
953ba96ac9 refactor: move `CConnman` out of `CoinJoinWalletManager` ctor (Kittywhiskers Van Gogh)
ac930a84d8 refactor: remove unused `CConnman` from `CDeterministicMNManager` ctor (Kittywhiskers Van Gogh)
a14e604064 refactor: remove `CConnman`, `PeerManager` from `LLMQContext` ctor (Kittywhiskers Van Gogh)
d9e5cc7c9a refactor: move `PeerManager` out of `CInstantSendManager` ctor (Kittywhiskers Van Gogh)
82d1aed1d6 refactor: move `CConnman`, `PeerManager` out of `CSigSharesManager` ctor (Kittywhiskers Van Gogh)
7498a38076 refactor: move `PeerManager` out of `CSigningManager` ctor (Kittywhiskers Van Gogh)
7ebc61e375 refactor: move `CConnman` out of `CQuorumManager` ctor (Kittywhiskers Van Gogh)
c07b522baa refactor: move `CConnman` out of `CDKGSession{,Handler,Manager}` ctor (Kittywhiskers Van Gogh)
01876c7e56 refactor: move `PeerManager` out of `CDKGSession{,Handler,Manager}` ctor (Kittywhiskers Van Gogh)
cc0e771c29 refactor: start BLS thread in `LLMQContext` ctor, move `Start` downwards (Kittywhiskers Van Gogh)

Pull request description:

  ## Additional Information

  * Depends on https://github.com/dashpay/dash/pull/6425
  * Dependency for https://github.com/dashpay/dash/pull/6304
  * In order to reduce the logic used in chainstate initialization (that will be split out of `init.cpp` in [bitcoin#23280](https://github.com/bitcoin/bitcoin/pull/23280)), the spinning up of threads (as done in `LLMQContext::Start()`) needs to be moved down.
    * They were moved up in [dash#5752](https://github.com/dashpay/dash/pull/5752) as `CBLSWorker` is a part of `LLMQContext` and `CBLSWorker` is needed during chainstate verification. As suggested in dash#5752, an alternate fix to the one already merged in was to move `CBLSWorker` `Start()`/`Stop()` to the constructor, which is done here.
      * Another alternate fix is that we move it out of `LLMQContext` entirely and let it remain in `NodeContext` though this approach has not been taken.
    * The reason we cannot retain the status quo is because `bitcoin-chainstate` (the binary introduced in [bitcoin#24304](https://github.com/bitcoin/bitcoin/pull/24304) that's built on the code split off in [bitcoin#23280](https://github.com/bitcoin/bitcoin/pull/23280)) aims to be devoid of P2P logic and this is reflected in the source files used to build it ([source](https://github.com/bitcoin/bitcoin/pull/24304/files#diff-4cb884d03ebb901069e4ee5de5d02538c40dd9b39919c615d8eaa9d364bbbd77R794)). (Also, there's no `NodeContext`, [source](https://github.com/bitcoin/bitcoin/pull/24304/files#diff-4cb884d03ebb901069e4ee5de5d02538c40dd9b39919c615d8eaa9d364bbbd77R795-R798))
      * This means need to separate P2P and validation components from Dash-specific logic in order for the split to work as expected. This PR is a step in that direction by moving P2P elements (`CConnman` and `PeerManager`) out of constructors.
  * As it stands, there are two sources for Dash-specific components to have access to P2P components, initialization (e.g. through `LLMQContext::Start()` or `PeerManagerImpl::ProcessMessage()`).

  ## Breaking Changes

  None expected. While changes are present in initialization order, consensus behaviour should remain unchanged.

  ## Checklist:

  - [x] I have performed a self-review of my own code
  - [x] I have commented my code, particularly in hard-to-understand areas **(note: N/A)**
  - [x] I have added or updated relevant unit/integration/functional/e2e tests **(note: N/A)**
  - [x] I have made corresponding changes to the documentation **(note: N/A)**
  - [x] I have assigned this pull request to a milestone _(for repository code-owners and collaborators only)_

ACKs for top commit:
  knst:
    utACK 7d26061170
  UdjinM6:
    utACK 7d26061170

Tree-SHA512: 4f12cbda935cad3a186acb31fed513cea489b0d3a55aa80be8e1336d10cbe1579d6d3db862a78a167134650c9e97816732acaf0c85ab759f6555b1b6be99ec02
2024-12-09 15:00:23 -06:00
..
client.cpp refactor: move CConnman, PeerManager out of CCoinJoinClientQueueManager ctor 2024-12-05 22:42:16 +00:00
client.h refactor: move CConnman, PeerManager out of CCoinJoinClientQueueManager ctor 2024-12-05 22:42:16 +00:00
coinjoin.cpp fix: respect SENDDSQUEUE message, move DSQ relay into net processing / peerman 2024-11-23 00:01:11 -06:00
coinjoin.h fix: respect SENDDSQUEUE message, move DSQ relay into net processing / peerman 2024-11-23 00:01:11 -06:00
common.cpp non-scripted-diff: bump copyright year to 2023 2024-02-24 11:05:37 -06:00
common.h merge bitcoin#23524: Fix typos in endif header comments 2024-12-04 15:55:10 +00:00
context.cpp refactor: move CConnman, PeerManager out of CCoinJoinClientQueueManager ctor 2024-12-05 22:42:16 +00:00
context.h refactor: migrate some Dash code to use ChainstateManager::ProcessTransaction 2024-10-05 17:10:02 +00:00
interfaces.cpp fix: hold wallet shared pointer in CJ Manager/Sessions to prevent concurrent unload 2024-12-02 17:20:50 +03:00
options.cpp non-scripted-diff: bump copyright year to 2023 2024-02-24 11:05:37 -06:00
options.h merge bitcoin#22951: move amount.h into consensus 2024-10-25 16:00:12 +00:00
server.cpp fix: store ready queues on the mixing masternode 2024-12-05 17:36:17 +03:00
server.h fix: respect SENDDSQUEUE message, move DSQ relay into net processing / peerman 2024-11-23 00:01:11 -06:00
util.cpp fix: do not transfer wallet ownership to CTransactionBuilder{Output} 2024-12-03 12:54:42 +03:00
util.h fix: do not transfer wallet ownership to CTransactionBuilder{Output} 2024-12-03 12:54:42 +03:00