bitcoin/doc
Andrew Chow d232e36abd
Merge bitcoin/bitcoin#28207: mempool: Persist with XOR
fa6b053b5c mempool: persist with XOR (MarcoFalke)

Pull request description:

  Currently the `mempool.dat` file stores 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 the file and move it into quarantine, or delete it, or corrupt it.

  While the local wallet is expected to re-submit any pending transactions, unrelated transactions may be missing from the mempool after a restart. This may cause fee estimates to be off, or may cause block relay to be slower.

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

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

ACKs for top commit:
  achow101:
    re-ACK fa6b053b5c
  glozow:
    reACK fa6b053b5c
  ismaelsadeeq:
    ACK fa6b053b5c

Tree-SHA512: ded2ce3d81bc944b828263534e3178a1e45a914fe8e024f4a14c6561a73e301820944ecc75dd704b3d4221a7a3a5c0597ccab79546250c1197609ee981fe324e
2023-11-13 11:28:15 -05:00
..
design Merge bitcoin/bitcoin#28721: multiprocess compatibility updates 2023-11-13 12:32:55 +00:00
man scripted-diff: Fix typo in stub manual pages 2021-01-12 16:46:55 +01:00
policy typo: in packages.md 2023-10-03 11:22:46 -07:00
release-notes doc: remove release note fragments for 26.x branch 2023-10-24 11:13:44 +01:00
.gitignore
Doxyfile.in Generate doxygen documentation for test sources 2021-05-19 22:08:18 -07:00
JSON-RPC-interface.md Update JSON-RPC-interface.md 2023-08-17 13:46:18 +01:00
README.md Add offline signing tutorial 2023-10-27 12:32:48 +03:00
README_doxygen.md doc: Improve doxygen readme navigation section 2019-09-23 19:22:06 -04:00
README_windows.txt
REST-interface.md Merge bitcoin/bitcoin#26207: rest: add verbose and mempool_sequence query params for mempool/contents 2023-03-15 19:39:30 -04:00
assets-attribution.md
benchmarking.md doc: update doc/benchmarking.md 2021-06-24 11:15:29 +02:00
bips.md doc: mention BIP324 support in bips.md 2023-10-02 18:11:11 -04:00
bitcoin-conf.md Security config warning 2022-08-19 23:18:13 -04:00
bitcoin_logo_doxygen.png
build-android.md build, qt: Use Android NDK r23 LTS 2021-12-05 03:00:02 +02:00
build-freebsd.md Merge bitcoin/bitcoin#26773: doc: FreeBSD build doc updates to reflect removal of install_db4.sh 2023-02-16 14:50:00 +00:00
build-netbsd.md doc: update for NetBSD 9.2, add GUI Build Instructions 2022-07-06 21:27:05 -04:00
build-openbsd.md doc: update OpenBSD build docs for 7.3 (external signer support available) 2023-04-11 22:59:08 +02:00
build-osx.md build: remove dmg dependencies 2023-09-15 13:47:50 +01:00
build-unix.md doc: remove Fedora libdb4-*-devel install docs 2023-08-07 14:48:35 +02:00
build-windows.md doc: Correct linked Microsoft URLs 2022-12-31 16:54:13 +01:00
cjdns.md doc: update getnodeaddresses for CJDNS, I2P and Tor and rm link 2023-06-01 15:52:51 +02:00
dependencies.md build: Update `qt` package up to 5.15.11 2023-11-01 15:20:20 +00:00
descriptors.md doc: correct deriveaddresses RPC name 2022-10-30 18:11:45 +00:00
developer-notes.md Merge bitcoin/bitcoin#27116: doc: clarify that LOCK() internally checks whether the mutex is held 2023-10-26 15:02:13 -04:00
dnsseed-policy.md
external-signer.md Move external signer out of wallet module 2021-04-08 17:56:00 +02:00
files.md Ignore banlist.dat 2021-07-30 11:21:51 +02:00
fuzzing.md docs: fixup honggfuzz patch 2023-07-03 11:00:57 +01:00
guix.md docs: Point to contrib/guix/README.md in doc/guix.md 2021-01-08 11:40:01 -05:00
i2p.md doc: simplify the router options in doc/i2p.md 2023-06-27 10:26:57 -06:00
init.md Remove `-sysperms` option 2023-02-05 08:09:16 +00:00
managing-wallets.md Change dots to an ellipsis and fix capitalization 2023-01-12 11:15:02 -05:00
multisig-tutorial.md doc: update multisig-tutorial.md to default wallet type 2022-03-10 12:50:34 +01:00
offline-signing-tutorial.md Add offline signing tutorial 2023-10-27 12:32:48 +03:00
p2p-bad-ports.md init, doc: improve -onlynet help and tor/i2p documentation 2022-03-03 16:14:01 +01:00
productivity.md doc: add distcc to productivity notes 2022-06-13 16:13:11 +02:00
psbt.md doc: M-of-N multisig using descriptor wallets and PSBTs, as well as a signing flow 2021-08-16 10:43:07 +05:00
reduce-memory.md doc: Be vague instead of wrong about MALLOC_ARENA_MAX 2023-09-20 17:12:24 +00:00
reduce-traffic.md doc: Use precise permission flags where possible 2020-07-10 15:37:42 +02:00
release-notes-28207.md mempool: persist with XOR 2023-11-09 19:44:50 +01:00
release-notes-empty-template.md depends: Bump MacOS minimum runtime requirement to 11.0 2023-06-22 15:28:47 +00:00
release-process.md doc: update example pulls in release-process.md 2023-10-05 16:04:23 +01:00
shared-libraries.md docs: add docs for additional libconsensus functions 2023-10-13 08:55:12 -03:00
tor.md Merge bitcoin/bitcoin#27719: doc: remove Tor link & generalize onion getnodeaddresses RPC 2023-06-01 15:24:23 +01:00
tracing.md Use `int32_t` type for most transaction size/weight values 2023-06-12 19:47:19 +01:00
translation_process.md doc: Remove unnecessary steps from translations update process 2021-07-03 21:31:29 +02:00
translation_strings_policy.md doc: Do not translate technical or extremely rare errors 2020-05-05 04:46:08 +03:00
zmq.md validationinterface: only send zmq notifications for active 2023-09-30 06:38:47 -04:00

README.md

Bitcoin Core

Setup

Bitcoin Core is the original Bitcoin client and it builds the backbone of the network. It downloads and, by default, stores the entire history of Bitcoin transactions, which requires a few hundred gigabytes of disk space. Depending on the speed of your computer and network connection, the synchronization process can take anywhere from a few hours to a day or more.

To download Bitcoin Core, visit bitcoincore.org.

Running

The following are some helpful notes on how to run Bitcoin Core on your native platform.

Unix

Unpack the files into a directory and run:

  • bin/bitcoin-qt (GUI) or
  • bin/bitcoind (headless)

Windows

Unpack the files into a directory, and then run bitcoin-qt.exe.

macOS

Drag Bitcoin Core to your applications folder, and then run Bitcoin Core.

Need Help?

Building

The following are developer notes on how to build Bitcoin Core on your native platform. They are not complete guides, but include notes on the necessary libraries, compile flags, etc.

Development

The Bitcoin repo's root README contains relevant information on the development process and automated testing.

Resources

Miscellaneous

License

Distributed under the MIT software license.