bitcoin/src/node
merge-script 59876b3ad7
Merge bitcoin/bitcoin#31376: Miner: never create a template which exploits the timewarp bug
733fa0b0a1 miner: never create a template which exploits the timewarp bug (Antoine Poinsot)

Pull request description:

  This check was introduced in #30681 but only enabled for testnet4. To avoid potentially creating an invalid block template if a soft fork to fix the timewarp attack were to activate in the future, we should have this check on all networks. It also seems wise for our miner to not support it whether or not a soft fork activates to fix it at the consensus level.

ACKs for top commit:
  Sjors:
    ACK 733fa0b0a1
  fjahr:
    utACK 733fa0b0a1
  TheCharlatan:
    ACK 733fa0b0a1

Tree-SHA512: 9b3bc8b26a57f93425b17dda80bcfac4ecb750a3d26bc3eb8df619135634e369ac15982fac0c9770b1df207bd2e418ffe02a98f37968f024e55262d97715a4f5
2025-01-23 10:54:47 +00:00
..
abort.cpp refactor: Split up NodeContext shutdown_signal and shutdown_request 2024-10-01 09:10:54 +02:00
abort.h refactor: Split up NodeContext shutdown_signal and shutdown_request 2024-10-01 09:10:54 +02:00
blockmanager_args.cpp Add -blocksxor boolean option 2024-07-26 17:30:53 +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 scripted-diff: rename block and undo functions for consistency 2025-01-09 15:17:02 +01:00
blockstorage.h scripted-diff: rename block and undo functions for consistency 2025-01-09 15:17:02 +01:00
caches.cpp init: Use size_t consistently for cache sizes 2025-01-15 15:44:56 +01:00
caches.h init: Use size_t consistently for cache sizes 2025-01-15 15:44:56 +01:00
chainstate.cpp init: Use size_t consistently for cache sizes 2025-01-15 15:44:56 +01:00
chainstate.h kernel: Move kernel-specific cache size options to kernel 2025-01-15 15:44:16 +01:00
chainstatemanager_args.cpp scripted-diff: Replace strprintf(Untranslated) with Untranslated(strprintf) 2024-12-04 15:09:05 -04:00
chainstatemanager_args.h refactor: Clamp worker threads in ChainstateManager constructor 2024-11-18 11:13:20 +01:00
coin.cpp refactor: Rely on returned value of GetCoin instead of parameter 2024-09-18 20:03:47 +02:00
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: expose transport types/session IDs of connections in RPC and logs 2023-10-02 18:11:11 -04:00
connection_types.h net: expose transport types/session IDs of connections in RPC and logs 2023-10-02 18:11:11 -04:00
context.cpp Introduce Mining interface 2024-06-18 18:47:51 +02:00
context.h refactor: Split up NodeContext shutdown_signal and shutdown_request 2024-10-01 09:10:54 +02: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 refactor: Use + instead of strformat to concatenate translated & untranslated strings 2024-12-04 15:09:05 -04:00
interface_ui.h add missing #include <cstdint> for GCC 15 2024-08-12 11:15:11 +01:00
interfaces.cpp scripted-diff: rename block and undo functions for consistency 2025-01-09 15:17:02 +01:00
kernel_notifications.cpp Ensure m_tip_block is never ZERO 2024-12-17 10:19:00 +07:00
kernel_notifications.h Ensure m_tip_block is never ZERO 2024-12-17 10:19:00 +07:00
mempool_args.cpp scripted-diff: Replace strprintf(Untranslated) with Untranslated(strprintf) 2024-12-04 15:09:05 -04: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
mempool_persist.cpp streams: remove AutoFile::Get() entirely 2024-09-13 21:59:29 -04:00
mempool_persist.h mempool: move LoadMempool/DumpMempool to node 2024-06-26 22:47:09 +00:00
miner.cpp Merge bitcoin/bitcoin#31376: Miner: never create a template which exploits the timewarp bug 2025-01-23 10:54:47 +00:00
miner.h miner: add package feerate vector to CBlockTemplate 2025-01-07 15:29:17 -05:00
mini_miner.cpp MiniMiner: use FeeFrac in AncestorFeerateComparator 2024-07-09 17:22:51 +01:00
mini_miner.h Don't use iterator addresses in IteratorComparator 2024-06-19 10:14:31 +01:00
minisketchwrapper.cpp Use steady clock in SeedStrengthen and FindBestImplementation 2023-03-02 14:48:28 +01:00
minisketchwrapper.h Add src/node/* code to node:: namespace 2022-01-06 22:14:16 -05:00
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
protocol_version.h Rename version.h to node/protocol_version.h 2023-11-30 11:28:31 +01:00
psbt.cpp scripted-diff: Bump copyright headers 2022-12-24 23:49:50 +00:00
psbt.h Add src/node/* code to node:: namespace 2022-01-06 22:14:16 -05:00
README.md doc: Remove irrelevant link to GitHub 2021-04-06 09:34:21 +02:00
timeoffsets.cpp refactor: remove warnings globals 2024-06-13 11:20:49 +01:00
timeoffsets.h refactor: remove warnings globals 2024-06-13 11:20:49 +01:00
transaction.cpp scripted-diff: rename block and undo functions for consistency 2025-01-09 15:17:02 +01:00
transaction.h util: move fees.h and error.h to common/messages.h 2024-05-16 10:16:08 -05:00
txdownloadman_impl.cpp [p2p] only attempt 1p1c when both txns provided by the same peer 2025-01-06 09:02:05 -05:00
txdownloadman_impl.h [cleanup] remove p2p_inv from AddTxAnnouncement 2025-01-06 09:02:05 -05:00
txdownloadman.h [cleanup] remove p2p_inv from AddTxAnnouncement 2025-01-06 09:02:05 -05:00
txreconciliation.cpp random: get rid of GetRand by inlining 2024-07-01 12:39:53 -04:00
txreconciliation.h [net processing] Move -txreconciliation to PeerManager::Options 2023-07-24 18:35:28 +02:00
types.h refactor: fix typo in node/types.h 2024-12-18 14:55:35 +07:00
utxo_snapshot.cpp streams: remove unused code 2024-09-19 07:33:02 -04:00
utxo_snapshot.h assumeutxo: Drop block height from metadata 2024-08-08 23:55:06 +02:00
warnings.cpp scripted-diff: drop config/ subdir for bitcoin-config.h, rename to bitcoin-build-config.h 2024-10-10 12:22:12 +02:00
warnings.h refactor: remove warnings globals 2024-06-13 11:20:49 +01: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.