diff options
Diffstat (limited to 'doc')
-rw-r--r-- | doc/build-unix.md | 16 | ||||
-rw-r--r-- | doc/rapidcheck.md | 84 | ||||
-rw-r--r-- | doc/release-notes-16060.md | 15 | ||||
-rw-r--r-- | doc/release-notes-16383.md | 8 | ||||
-rw-r--r-- | doc/release-notes-16647.md | 3 | ||||
-rw-r--r-- | doc/release-notes/release-notes-0.18.1.md | 3 |
6 files changed, 126 insertions, 3 deletions
diff --git a/doc/build-unix.md b/doc/build-unix.md index f1bc770dfb..eb88aca050 100644 --- a/doc/build-unix.md +++ b/doc/build-unix.md @@ -61,6 +61,14 @@ tuned to conserve memory with additional CXXFLAGS: ./configure CXXFLAGS="--param ggc-min-expand=1 --param ggc-min-heapsize=32768" +Alternatively, or in addition, debugging information can be skipped for compilation. The default compile flags are +`-g -O2`, and can be changed with: + + ./configure CXXFLAGS="-O2" + +Finally, clang (often less resource hungry) can be used instead of gcc, which is used by default: + + ./configure CXX=clang++ CC=clang ## Linux Distribution Specific Instructions @@ -88,7 +96,7 @@ Otherwise, you can build from self-compiled `depends` (see above). To build Bitcoin Core without wallet, see [*Disable-wallet mode*](/doc/build-unix.md#disable-wallet-mode) -Optional (see --with-miniupnpc and --enable-upnp-default): +Optional (see `--with-miniupnpc` and `--enable-upnp-default`): sudo apt-get install libminiupnpc-dev @@ -122,10 +130,14 @@ Build requirements: sudo dnf install gcc-c++ libtool make autoconf automake openssl-devel libevent-devel boost-devel libdb4-devel libdb4-cxx-devel python3 -Optional: +Optional (see `--with-miniupnpc` and `--enable-upnp-default`): sudo dnf install miniupnpc-devel +ZMQ dependencies (provides ZMQ API): + + sudo dnf install zeromq-devel + To build with Qt 5 you need the following: sudo dnf install qt5-qttools-devel qt5-qtbase-devel protobuf-devel diff --git a/doc/rapidcheck.md b/doc/rapidcheck.md new file mode 100644 index 0000000000..397a907f17 --- /dev/null +++ b/doc/rapidcheck.md @@ -0,0 +1,84 @@ +# RapidCheck property-based testing for Bitcoin Core + +## Concept + +Property-based testing is experimentally being added to Bitcoin Core with +[RapidCheck](https://github.com/emil-e/rapidcheck), a C++ framework for +property-based testing inspired by the Haskell library +[QuickCheck](https://hackage.haskell.org/package/QuickCheck). + +RapidCheck performs random testing of program properties. A specification of the +program is given in the form of properties which functions should satisfy, and +RapidCheck tests that the properties hold in a large number of randomly +generated cases. + +If an exception is found, RapidCheck tries to find the smallest case, for some +definition of smallest, for which the property is still false and displays it as +a counter-example. For example, if the input is an integer, RapidCheck tries to +find the smallest integer for which the property is false. + +## Running + +If RapidCheck is installed, Bitcoin Core will automatically run the +property-based tests with the unit tests during `make check`, unless the +`--without-rapidcheck` flag is passed when configuring. + +For more information, run `./configure --help` and see `--with-rapidcheck` under +Optional Packages. + +## Setup + +The following instructions have been tested with Linux Debian and macOS. + +1. Clone the RapidCheck source code and cd into the repository. + + ```shell + git clone https://github.com/emil-e/rapidcheck.git + cd rapidcheck + ``` + +2. Build RapidCheck (requires CMake to be installed). + + ```shell + cmake -DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=true -DRC_ENABLE_BOOST_TEST=ON $(pwd) + make && make install + ``` + +3. Configure Bitcoin Core with RapidCheck. + + `cd` to the directory of your local bitcoin repository and run + `./configure`. In the output you should see: + + ```shell + checking rapidcheck.h usability... yes + checking rapidcheck.h presence... yes + checking for rapidcheck.h... yes + [...] + Options used to compile and link: + [...] + with test = yes + with prop = yes + ``` + +4. Build Bitcoin Core with RapidCheck. + + Now you can run `make` and should see the property-based tests compiled with + the unit tests: + + ```shell + Making all in src + [...] + CXX test/gen/test_bitcoin-crypto_gen.o + CXX test/test_bitcoin-key_properties.o + ``` + +5. Run the unit tests with `make check`. The property-based tests will be run + with the unit tests. + + ```shell + Running tests: crypto_tests from test/crypto_tests.cpp + [...] + Running tests: key_properties from test/key_properties.cpp + ``` + +That's it! You are now running property-based tests in Bitcoin Core. diff --git a/doc/release-notes-16060.md b/doc/release-notes-16060.md new file mode 100644 index 0000000000..7e150d10e7 --- /dev/null +++ b/doc/release-notes-16060.md @@ -0,0 +1,15 @@ +Low-level RPC changes +---------------------- + +- Soft fork reporting in the `getblockchaininfo` return object has been + updated. For full details, see the RPC help text. In summary: + - The `bip9_softforks` sub-object is no longer returned + - The `softforks` sub-object now returns an object keyed by soft fork name, + rather than an array + - Each softfork object in the `softforks` object contains a `type` value which + is either `buried` (for soft fork deployments where the activation height is + hard-coded into the client implementation), or `bip9` (for soft fork deployments + where activation is controlled by BIP 9 signaling). + +- `getblocktemplate` no longer returns a `rules` array containing `CSV` + and `segwit` (the BIP 9 deployments that are currently in active state). diff --git a/doc/release-notes-16383.md b/doc/release-notes-16383.md new file mode 100644 index 0000000000..8015715167 --- /dev/null +++ b/doc/release-notes-16383.md @@ -0,0 +1,8 @@ +RPC changes +----------- + +RPCs which have an `include_watchonly` argument or `includeWatching` +option now default to `true` for watch-only wallets. Affected RPCs +are: `getbalance`, `listreceivedbyaddress`, `listreceivedbylabel`, +`listtransactions`, `listsinceblock`, `gettransaction`, +`walletcreatefundedpsbt`, and `fundrawtransaction`. diff --git a/doc/release-notes-16647.md b/doc/release-notes-16647.md new file mode 100644 index 0000000000..7e5539cb0d --- /dev/null +++ b/doc/release-notes-16647.md @@ -0,0 +1,3 @@ +RPC changes +----------- +`getmempoolentry` now provides a `weight` field containing the transaction weight as defined in BIP 141. diff --git a/doc/release-notes/release-notes-0.18.1.md b/doc/release-notes/release-notes-0.18.1.md index 8890e2163e..483cc5075e 100644 --- a/doc/release-notes/release-notes-0.18.1.md +++ b/doc/release-notes/release-notes-0.18.1.md @@ -126,8 +126,9 @@ Thanks to everyone who directly contributed to this release: - Kristaps Kaupe - Luke Dashjr - MarcoFalke -- MeshCollider +- Michele Federici - Pieter Wuille +- Samuel Dobson - shannon1916 - tecnovert - Wladimir J. van der Laan |