bitcoin/src/node
fanquake 1e9d367d0d
Merge bitcoin/bitcoin#28423: kernel: Remove protocol.h/netaddress.h/compat.h from kernel headers
d506765199 [refactor] Remove compat.h from kernel headers (TheCharlatan)
36193af47c [refactor] Remove netaddress.h from kernel headers (TheCharlatan)
2b08c55f01 [refactor] Add CChainParams member to CConnman (TheCharlatan)
f0d1d8b35c [refactor] Add missing includes for next commit (TheCharlatan)
534b314a74 kernel: Move MessageStartChars to its own file (TheCharlatan)
9be330b654 [refactor] Define MessageStartChars as std::array (TheCharlatan)
37e2b01113 [refactor] Allow std::array<std::byte, N> in serialize.h (MarcoFalke)

Pull request description:

  This removes the non-consensus critical `protocol.h` and `netaddress.h` headers from the kernel headers. With this patch, they are no longer required to include in order to use the libbitcoinkernel library. This also allows for the removal of the `compat.h` header from the kernel headers.

  As an added future benefit it also reduces the number of of kernel headers that include the platform specific `bitcoin-config.h`.

  For those interested, the currently required kernel headers can be inspected visually with the [sourcetrail](https://github.com/CoatiSoftware/Sourcetrail) tool by looking at the required includes of `bitcoin-chainstate.cpp`.

  ---

  This is part of the [libbitcoinkernel project](https://github.com/bitcoin/bitcoin/issues/27587), namely its stage 1 step 3: Decouple most non-consensus headers from libbitcoinkernel.

ACKs for top commit:
  stickies-v:
    re-ACK d506765
  hebasto:
    ACK d506765199.
  ajtowns:
    utACK d506765199
  MarcoFalke:
    lgtm ACK d506765199 🍛

Tree-SHA512: 6f90ea510a302c2927e84d16900e89997c39b8ff3ce9d4effeb8a134bd29cc52bd9e81e51aaa11f7496bad00025b78a58b88c5a9e0bb3f4ebbe9a76309215fb7
2023-09-14 11:11:38 +01:00
..
abort.cpp kernel: Add fatalError method to notifications 2023-06-28 09:52:33 +02:00
abort.h kernel: Add fatalError method to notifications 2023-06-28 09:52:33 +02:00
blockmanager_args.cpp refactor: Move stopafterblockimport handling out of blockstorage 2023-07-11 12:00:57 +02:00
blockmanager_args.h Add [[nodiscard]] where ignoring a Result return type is an error 2023-05-29 13:12:45 +02:00
blockstorage.cpp Merge bitcoin/bitcoin#28423: kernel: Remove protocol.h/netaddress.h/compat.h from kernel headers 2023-09-14 11:11:38 +01:00
blockstorage.h kernel: Move MessageStartChars to its own file 2023-09-12 22:51:38 +02:00
caches.cpp move-only: Extract common/args and common/config.cpp from util/system 2023-04-19 10:48:30 +02:00
caches.h
chainstate.cpp scripted-diff: Rename CBlockTreeDB -> BlockTreeDB 2023-08-02 07:49:32 +02:00
chainstate.h validation: Stricter assumeutxo error handling in LoadChainstate 2023-06-15 15:11:32 -04:00
chainstatemanager_args.cpp kernel: Remove StartShutdown calls from validation code 2023-07-11 12:30:56 -04:00
chainstatemanager_args.h Add [[nodiscard]] where ignoring a Result return type is an error 2023-05-29 13:12:45 +02:00
coin.cpp
coin.h scripted-diff: Bump copyright headers 2022-12-24 23:49:50 +00:00
coins_view_args.cpp move-only: Extract common/args and common/config.cpp from util/system 2023-04-19 10:48:30 +02:00
coins_view_args.h refactor, txdb: Add CoinsViewOptions struct 2023-02-10 04:39:11 -04:00
connection_types.cpp [net] Move ConnectionType to its own file 2022-07-06 18:13:53 +02:00
connection_types.h [net] Move ConnectionType to its own file 2022-07-06 18:13:53 +02:00
context.cpp kernel: Add notification interface 2023-05-20 12:03:22 +02:00
context.h refactor: init indexes, decouple 'Start()' from the creation step 2023-07-07 19:31:27 -03:00
database_args.cpp move-only: Extract common/args and common/config.cpp from util/system 2023-04-19 10:48:30 +02:00
database_args.h refactor, dbwrapper: Add DBParams and DBOptions structs 2023-02-10 04:39:11 -04:00
eviction.cpp [net] Move eviction logic to its own file 2022-07-06 18:13:54 +02:00
eviction.h [net] Move eviction logic to its own file 2022-07-06 18:13:54 +02:00
interface_ui.cpp Add InitError(error, details) overload 2023-02-28 12:04:47 -05:00
interface_ui.h Add InitError(error, details) overload 2023-02-28 12:04:47 -05:00
interfaces.cpp assumeutxo cleanup: Move IsInitialBlockDownload & NotifyHeaderTip to ChainstateManager 2023-08-18 12:52:30 -04:00
kernel_notifications.cpp kernel: Remove StartShutdown calls from validation code 2023-07-11 12:30:56 -04:00
kernel_notifications.h kernel: Remove StartShutdown calls from validation code 2023-07-11 12:30:56 -04:00
mempool_args.cpp config: default acceptnonstdtxn=0 on all chains 2023-08-28 22:09:39 +10:00
mempool_args.h refactor: Replace std::optional<bilingual_str> with util::Result 2023-05-24 08:55:47 -04:00
mempool_persist_args.cpp move-only: Extract common/args and common/config.cpp from util/system 2023-04-19 10:48:30 +02:00
mempool_persist_args.h refactor: Move fs.* to util/fs.* 2023-03-23 12:55:18 +01:00
miner.cpp refactor: Fix logging.h includes 2023-08-05 10:42:56 +02:00
miner.h Remove unused includes from txmempool.h 2023-08-17 16:25:31 +02:00
mini_miner.cpp Mitigate timeout in CalculateTotalBumpFees 2023-06-01 18:04:44 -04:00
mini_miner.h Implement Mini version of BlockAssembler to calculate mining scores 2023-03-30 17:03:04 -04:00
minisketchwrapper.cpp Use steady clock in SeedStrengthen and FindBestImplementation 2023-03-02 14:48:28 +01:00
minisketchwrapper.h
peerman_args.cpp Merge bitcoin/bitcoin#28149: net processing: clamp PeerManager::Options user input 2023-08-09 14:26:03 +02:00
peerman_args.h [net processing] Introduce PeerManager options 2023-07-24 18:30:59 +02:00
psbt.cpp scripted-diff: Bump copyright headers 2022-12-24 23:49:50 +00:00
psbt.h
README.md
transaction.cpp refactor: Move functions to BlockManager methods 2023-05-10 19:06:53 +02:00
transaction.h refactor: Move functions to BlockManager methods 2023-05-10 19:06:53 +02:00
txreconciliation.cpp refactor: Move system from util to common library 2023-05-20 12:08:13 +02:00
txreconciliation.h [net processing] Move -txreconciliation to PeerManager::Options 2023-07-24 18:35:28 +02:00
utxo_snapshot.cpp lint: remove /* Continued */ markers from codebase 2023-08-03 17:52:24 +01:00
utxo_snapshot.h refactor: Add path argument to FindSnapshotChainstateDir 2023-05-30 16:52:48 +02:00
validation_cache_args.cpp move-only: Extract common/args and common/config.cpp from util/system 2023-04-19 10:48:30 +02:00
validation_cache_args.h validationcaches: Add and use ValidationCacheSizes 2022-08-03 12:03:27 -04:00

src/node/

The src/node/ directory contains code that needs to access node state (state in CChain, CBlockIndex, CCoinsView, CTxMemPool, and similar classes).

Code in src/node/ is meant to be segregated from code in src/wallet/ and src/qt/, to ensure wallet and GUI code changes don't interfere with node operation, to allow wallet and GUI code to run in separate processes, and to perhaps eventually allow wallet and GUI code to be maintained in separate source repositories.

As a rule of thumb, code in one of the src/node/, src/wallet/, or src/qt/ directories should avoid calling code in the other directories directly, and only invoke it indirectly through the more limited src/interfaces/ classes.

This directory is at the moment sparsely populated. Eventually more substantial files like src/validation.cpp and src/txmempool.cpp might be moved there.