0
0
Fork 0
mirror of https://github.com/bitcoin/bitcoin.git synced 2025-03-09 15:37:00 -04:00
bitcoin-core/src/kernel
Ava Chow 949b673472
Merge bitcoin/bitcoin#28052: blockstorage: XOR blocksdir *.dat files
fa895c7283 mingw: Document mode wbx workaround (MarcoFalke)
fa359255fe Add -blocksxor boolean option (MarcoFalke)
fa7f7ac040 Return XOR AutoFile from BlockManager::Open*File() (MarcoFalke)

Pull request description:

  Currently the *.dat files in the blocksdir store the data received from remote peers as-is. This may be problematic when a program other than Bitcoin Core tries to interpret them by accident. For example, an anti-virus program or other program may scan them and move them into quarantine, or delete them, or corrupt them. This may cause Bitcoin Core to fail a reorg, or fail to reply to block requests (via P2P, RPC, REST, ...).

  Fix this, similar to https://github.com/bitcoin/bitcoin/pull/6650, by rolling a random XOR pattern over the dat files when writing or reading them.

  Obviously this can only protect against programs that accidentally and unintentionally are trying to mess with the dat files. Any program that intentionally wants to mess with the dat files can still trivially do so.

  The XOR pattern is only applied when the blocksdir is freshly created, and there is an option to disable it (on creation), so that people can disable it, if needed.

ACKs for top commit:
  achow101:
    ACK fa895c7283
  TheCharlatan:
    Re-ACK fa895c7283
  hodlinator:
    ACK fa895c7283

Tree-SHA512: c92a6a717da83bc33a9b8671a779eeefde2c63b192362ba1d71e6535ee31d08e2802b74acc908345197de9daac6930e4771595ee25b09acd5a67f7ea34854720
2024-08-05 17:52:42 -04:00
..
bitcoinkernel.cpp b-cs: Define G_TRANSLATION_FUN in bitcoinkernel.cpp 2022-04-26 16:30:53 -04:00
blockmanager_opts.h Add -blocksxor boolean option 2024-07-26 17:30:53 +02:00
chain.cpp validation: add ChainstateRole 2023-09-30 06:38:47 -04:00
chain.h validation: add ChainstateRole 2023-09-30 06:38:47 -04:00
chainparams.cpp scripted-diff: Replace uint256S("str") -> uint256{"str"} 2024-08-05 14:51:48 +02:00
chainparams.h scripted-diff: Modernize naming of nChainTx and nTxCount 2024-08-04 14:24:43 +02:00
chainstatemanager_opts.h kernel: De-globalize signature cache 2024-07-05 09:03:04 +02:00
checks.cpp kernel: Remove key module from kernel library 2024-05-09 15:56:08 +02:00
checks.h fix includes for touched header files (iwyu) 2023-05-29 13:26:31 +02:00
coinstats.cpp scripted-diff: Replace error() with LogError() 2024-03-11 13:49:37 +01:00
coinstats.h coinstats: Fix hash_serialized2 calculation 2023-10-20 22:53:05 +02:00
context.cpp kernel: Only setup kernel context globals once 2024-07-30 18:07:21 +02:00
context.h kernel: Remove key module from kernel library 2024-05-09 15:56:08 +02:00
cs_main.cpp kernel: add missing include 2023-02-22 15:46:21 +00:00
cs_main.h refactor: add kernel/cs_main.* 2023-01-05 09:05:14 +00:00
disconnected_transactions.cpp bugfix: correct DisconnectedBlockTransactions memory usage 2023-10-19 16:14:36 +01:00
disconnected_transactions.h bugfix: correct DisconnectedBlockTransactions memory usage 2023-10-19 16:14:36 +01:00
mempool_entry.h tx fees: update m_from_disconnected_block to m_mempool_limit_bypassed 2024-01-02 12:41:01 +01:00
mempool_limits.h refactor: mempool: add MemPoolLimits::NoLimits() 2022-10-05 13:07:11 +01:00
mempool_options.h policy: enable full-rbf by default 2024-08-02 20:22:20 +00:00
mempool_removal_reason.cpp move-only: Create src/kernel/mempool_removal_reason.h 2023-08-17 16:26:20 +02:00
mempool_removal_reason.h move-only: Create src/kernel/mempool_removal_reason.h 2023-08-17 16:26:20 +02:00
messagestartchars.h kernel: Move MessageStartChars to its own file 2023-09-12 22:51:38 +02:00
notifications_interface.h tidy: modernize-use-equals-default 2024-07-08 11:12:01 +02:00
warning.h introduce and use the generalized node::Warnings interface 2024-06-13 11:20:48 +01:00