bitcoin/doc
MarcoFalke 8d6224fefe
Merge #19628: net: change CNetAddr::ip to have flexible size
102867c587 net: change CNetAddr::ip to have flexible size (Vasil Dimov)
1ea57ad674 net: don't accept non-left-contiguous netmasks (Vasil Dimov)

Pull request description:

  (chopped off from #19031 to ease review)

  Before this change `CNetAddr::ip` was a fixed-size array of 16 bytes,
  not being able to store larger addresses (e.g. TORv3) and encoded
  smaller ones as 16-byte IPv6 addresses.

  Change its type to `prevector`, so that it can hold larger addresses and
  do not disguise non-IPv6 addresses as IPv6. So the IPv4 address
  `1.2.3.4` is now encoded as `01020304` instead of
  `00000000000000000000FFFF01020304`.

  Rename `CNetAddr::ip` to `CNetAddr::m_addr` because it is not an "IP" or
  "IP address" (TOR addresses are not IP addresses).

  In order to preserve backward compatibility with serialization (where
  e.g. `1.2.3.4` is serialized as `00000000000000000000FFFF01020304`)
  introduce `CNetAddr` dedicated legacy serialize/unserialize methods.

  Adjust `CSubNet` accordingly. Still use `CSubNet::netmask[]` of fixed 16
  bytes, but use the first 4 for IPv4 (not the last 4). Do not accept
  invalid netmasks that have 0-bits followed by 1-bits and only allow
  subnetting for IPv4 and IPv6.

  Co-authored-by: Carl Dong <contact@carldong.me>

ACKs for top commit:
  sipa:
    utACK 102867c587
  MarcoFalke:
    Concept ACK 102867c587
  ryanofsky:
    Code review ACK 102867c587. Just many suggested updates since last review. Thanks for following up on everything!
  jonatack:
    re-ACK 102867c587 diff review, code review, build/tests/running bitcoind with ipv4/ipv6/onion peers
  kallewoof:
    ACK 102867c587

Tree-SHA512: d60bf716cecf8d3e8146d2f90f897ebe956befb16f711a24cfe680024c5afc758fb9e4a0a22066b42f7630d52cf916318bedbcbc069ae07092d5250a11e8f762
2020-08-25 18:10:25 +02:00
..
man doc: remove OpenSSL from build instructions and licensing info 2019-11-18 08:56:48 -05:00
release-notes doc: Add historical release notes for 0.20.1 2020-08-01 14:17:14 +02:00
.gitignore Ignore Doxyfile generated from Doxyfile.in template. 2017-04-07 16:28:12 +02:00
assets-attribution.md
benchmarking.md Replace current benchmarking framework with nanobench 2020-06-13 12:24:18 +02:00
bips.md doc: list support for BIP 339 in doc/bips.md 2020-07-30 12:39:34 -07:00
bitcoin_logo_doxygen.png
bitcoin-conf.md doc: add default bitcoin.conf locations 2019-08-19 19:34:57 +02:00
build-freebsd.md doc: mention MAKE=gmake workaround when building on a BSD 2020-03-18 07:55:07 +08:00
build-netbsd.md doc: mention MAKE=gmake workaround when building on a BSD 2020-03-18 07:55:07 +08:00
build-openbsd.md doc: set CC_FOR_BUILD when building on OpenBSD 2020-07-28 16:29:47 +08:00
build-osx.md Merge #18070: doc: add note about brew doctor 2020-02-20 20:56:41 +08:00
build-unix.md doc: remove Boost Chrono from install docs 2020-03-07 08:34:31 +08:00
build-windows.md Add Windows WSL build recommendation to temporarily disable Win32 PE support. 2020-06-29 13:25:59 +01:00
dependencies.md build: set minimum required Boost to 1.58 2020-08-05 17:13:45 +08:00
descriptors.md Output a descriptor in createmultisig and addmultisigaddress 2020-01-30 23:55:36 -05:00
developer-notes.md Merge #19258: doc: improve subtree check instructions 2020-07-09 17:52:54 +02:00
dnsseed-policy.md
Doxyfile.in [doc] include Doxygen comments for HAVE_BOOST_PROCESS 2020-07-31 13:38:10 +02:00
files.md Replace hidden service with onion service 2020-08-07 14:55:02 +02:00
fuzzing.md doc: afl fuzzing comment about afl-gcc and afl-g++ 2020-07-05 20:55:11 -04:00
gitian-building.md doc: move gitian building to external repo 2017-09-25 15:45:38 +02:00
init.md fixing documentation to not require rpcpassword 2020-03-21 19:51:31 +05:30
JSON-RPC-interface.md Replace hidden service with onion service 2020-08-07 14:55:02 +02:00
multiprocess.md build: multiprocess autotools changes 2020-05-12 09:47:06 -04:00
productivity.md doc: Drop protobuf stuff 2020-05-23 10:14:18 +03:00
psbt.md doc: fix/improve analyzepsbt in doc/psbt.md 2019-05-19 17:31:37 +02:00
README_doxygen.md doc: Improve doxygen readme navigation section 2019-09-23 19:22:06 -04:00
README_windows.txt doc: Remove version numbers from READMEs 2017-04-05 09:40:48 +02:00
README.md doc: Update webchat URLs in README.md 2020-04-02 13:09:55 +00:00
reduce-memory.md doc: block-relay-only is not blocksonly 2020-03-30 09:09:12 -04:00
reduce-traffic.md doc: Use precise permission flags where possible 2020-07-10 15:37:42 +02:00
release-notes-14582.md doc: release notes for -maxapsfee 2020-08-18 15:30:36 +09:00
release-notes-15937.md Add loadwallet and createwallet RPC load_on_startup options 2020-08-13 09:44:48 -04:00
release-notes-16525.md Additionally treat Tx.nVersion as unsigned in joinpsbts 2019-09-03 10:53:45 -04:00
release-notes-19731.md doc: release note for getpeerinfo last_block/last_transaction 2020-08-15 15:26:33 +02:00
release-notes.md Merge #19628: net: change CNetAddr::ip to have flexible size 2020-08-25 18:10:25 +02:00
release-process.md [doc] fix git add argument 2020-04-03 12:52:36 +02:00
REST-interface.md Merge #19390: doc/REST-interface: Remove stale info 2020-06-29 13:32:01 +08:00
shared-libraries.md doc: correct bitcoinconsensus_version in shared-libraries 2019-04-07 21:42:32 +08:00
tor.md Replace hidden service with onion service 2020-08-07 14:55:02 +02:00
translation_process.md build: Factor out qt translations from build system 2019-09-29 14:24:54 +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 Add a link from ZMQ doc to ZMQ example in contrib/ 2020-05-12 16:06:28 +08:00

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.