bitcoin/doc
Wladimir J. van der Laan 735d6b57e7
Merge #16227: Refactor CWallet's inheritance chain
93ce4a0b6f Move WatchOnly stuff from SigningProvider to CWallet (Andrew Chow)
8f5b81e6ed Remove CCryptoKeyStore and move all of it's functionality into CWallet (Andrew Chow)
37a79a4fcc Move various SigningProviders to signingprovider.{cpp,h} (Andrew Chow)
16f8096e91 Move KeyOriginInfo to its own header file (Andrew Chow)
d9becff4e1 scripted-diff: rename CBasicKeyStore to FillableSigningProvider (Andrew Chow)
a913e3f2fb Move HaveKey static function from keystore to rpcwallet where it is used (Andrew Chow)
c7797ec655 Remove CKeyStore and squash into CBasicKeyStore (Andrew Chow)
1b699a5083 Add HaveKey and HaveCScript to SigningProvider (Andrew Chow)

Pull request description:

  This PR compresses the `CWallet` chain of inheritance from 5 classes to 3 classes. `CBasicKeyStore` is renamed to `FillableSigningProvider` and some parts of it (the watchonly parts) are moved into `CWallet`. `CKeyStore` and `CCrypoKeyStore` are completely removed. `CKeyStore`'s `Have*` functions are moved into `SigningProvider` and the `Add*` moved into `FillableSigningProvider`, thus allowing it to go away entirely. `CCryptoKeyStore`'s functionality is moved into `CWallet`. The new inheritance chain is:

  ```
  SigningProvider -> FillableSigningProvider -> CWallet
  ```

  `SigningProvider` now is the class the provides keys and scripts and indicates whether keys and scripts are present. `FillableSigningProvider` allows keys and scripts to be added to the signing provider via `Add*` functions. `CWallet` handles all of the watchonly stuff (`AddWatchOnly`, `HaveWatchOnly`, `RemoveWatchOnly` which were previously in `CKeyStore`) and key encryption (previously in `CCryptoKeyStore`).

  Implements the 2nd [prerequisite](https://github.com/bitcoin-core/bitcoin-devwiki/wiki/Wallet-Class-Structure-Changes#cwallet-subclass-stack) from the wallet restructure.

ACKs for top commit:
  Sjors:
    re-ACK 93ce4a0; it keeps `EncryptSecret`, `DecryptSecret` and `DecryptKey` in `wallet/crypter.cpp`, but makes them not static. It improves alphabetical includes, reorders some function definitions, fixes commit message, brings back lost code comment.
  instagibbs:
    utACK 93ce4a0b6f

Tree-SHA512: 393dfd0623ad2dac38395eb89b862424318d6072f0b7083c92a0d207fd032c48b284f5f2cb13bc492f34557de350c5fee925da02e47daf011c5c6930a721b6d3
2019-07-11 22:42:39 +02:00
..
man Remove -mempoolreplacement to prevent needless block prop slowness. 2019-06-08 09:32:33 -04:00
release-notes Fix spelling errors identified by codespell 1.15.0 2019-06-11 17:18:16 +02:00
.gitignore Ignore Doxyfile generated from Doxyfile.in template. 2017-04-07 16:28:12 +02:00
assets-attribution.md [doc] Merge doc/assets-attribution.md into contrib/debian/copyright 2015-09-18 18:14:42 +02:00
benchmarking.md trivial: Fixed typos and cleaned up language 2018-08-02 21:27:16 +08:00
bips.md Update bips.md for 0.18.0 2019-04-06 08:37:07 -07:00
bitcoin_logo_doxygen.png
bitcoin-conf.md Add doc/bitcoin-conf.md 2018-10-19 01:13:57 +03:00
build-freebsd.md doc: update FreeBSD build guide for 12.0 2019-02-15 19:54:59 +08:00
build-netbsd.md doc: update NetBSD build instructions for 8.0 2018-12-13 12:05:45 +08:00
build-openbsd.md Merge #14515: doc: Update OpenBSD build guide for 6.4 2018-11-05 13:26:37 +01:00
build-osx.md doc: Fix broken link in doc/build-osx.md 2019-06-29 16:32:36 +02:00
build-unix.md doc: Remove ppa from linux build instructions 2019-03-03 11:37:40 -05:00
build-windows.md Remove Windows 32 bit build 2019-05-03 13:41:27 -04:00
dependencies.md depends: expat 2.2.7 2019-07-09 08:47:41 +08:00
descriptors.md Mention new descriptor RPCs in descriptors.md 2019-04-06 08:17:51 -07:00
developer-notes.md scripted-diff: rename CBasicKeyStore to FillableSigningProvider 2019-07-09 16:20:18 -04:00
dnsseed-policy.md Correct spelling mistakes in doc folder 2015-10-18 06:25:43 +10:00
Doxyfile.in doc: Include static members in Doxygen 2019-07-06 11:48:18 -04:00
files.md Add nice table to files.md 2018-12-11 22:24:09 +01:00
fuzzing.md Update doc and CI config 2019-07-08 20:28:58 -04:00
gitian-building.md doc: move gitian building to external repo 2017-09-25 15:45:38 +02:00
init.md init: Modify docs and add release note for 12255 2019-02-04 09:18:28 -05:00
JSON-RPC-interface.md doc: Clarify RPC versioning 2019-04-15 11:20:16 -04:00
productivity.md docs: Add productivity notes for "dummy rebases" 2019-05-15 14:12:45 -04:00
psbt.md doc: fix/improve analyzepsbt in doc/psbt.md 2019-05-19 17:31:37 +02:00
README_windows.txt doc: Remove version numbers from READMEs 2017-04-05 09:40:48 +02:00
README.md docs: add reduce-memory.md 2019-07-06 10:45:04 +08:00
reduce-memory.md docs: add reduce-memory.md 2019-07-06 10:45:04 +08:00
reduce-traffic.md doc: Mention blocksonly in reduce-traffic.md, unhide option 2019-05-13 10:44:46 -04:00
release-notes-0.18.1-16257.md [wallet] abort when attempting to fund a transaction above maxtxfee 2019-06-28 22:44:38 -04:00
release-notes-13756.md docs: release note wording 2019-06-22 02:45:40 +09:00
release-notes-14054.md [docs] release note for disabling reject messages by default 2019-03-15 09:16:12 -04:00
release-notes-14802.md rpc: faster getblockstats using BlockUndo data 2019-05-10 08:33:14 -04:00
release-notes-14954.md docs: add release note for 14954 2019-05-28 14:17:31 -04:00
release-notes-15006.md Add option to create an encrypted wallet 2019-05-13 22:49:34 -04:00
release-notes-15427.md [docs] Add release notes for PR 15427 2019-07-05 10:47:01 +01:00
release-notes-15566.md cli: replace testnet with chain and return network name as per BIP70. 2019-03-09 16:35:26 +08:00
release-notes-15620.md doc: Add release notes for 15620 2019-03-19 17:06:43 -04:00
release-notes-15637.md rpc: Rename size to vsize in mempool related calls 2019-03-24 12:01:43 +08:00
release-notes-15730.md doc: Add release notes for 15730 2019-05-02 11:39:07 +01:00
release-notes-15849.md threads: prefix log messages with thread names 2019-04-29 13:49:15 -04:00
release-notes.md doc: Add release notes for 14897 & 15834 2019-06-14 15:54:52 -04:00
release-process.md doc: Remove explicit mention of version from SECURITY.md 2019-06-14 06:39:17 -04:00
REST-interface.md rpc: Expose g_is_mempool_loaded via getmempoolinfo and /rest/mempool/info.json 2019-03-22 02:31:20 -07:00
shared-libraries.md doc: correct bitcoinconsensus_version in shared-libraries 2019-04-07 21:42:32 +08:00
tor.md doc: describe onlynet option in doc/tor.md 2019-04-11 14:05:02 +02:00
translation_process.md docs: Update Transifex links 2019-03-02 17:42:33 +08:00
translation_strings_policy.md A few textual improvements 2019-02-08 09:47:50 +01:00
zmq.md ZMQ: add options to configure outbound message high water mark, aka SNDHWM 2018-10-19 07:36:13 -04: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. This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit. This product includes cryptographic software written by Eric Young (eay@cryptsoft.com), and UPnP software written by Thomas Bernard.