0.17my #16460

pull Chunbao wants to merge 2864 commits into bitcoin:0.17 from bitcoin:master changing 1013 files +66367 −26204
  1. Chunbao commented at 3:31 PM on July 25, 2019: none

    Pull requests without a rationale and clear improvement may be closed immediately.

    Please provide clear motivation for your patch and explain how it improves Bitcoin Core user experience or Bitcoin Core developer experience significantly.

    • Any test improvements or new tests that improve coverage are always welcome.
    • All other changes should have accompanying unit tests (see src/test/) or functional tests (see test/). Contributors should note which tests cover modified code. If no tests exist for a region of modified code, new tests should accompany the change.
    • Bug fixes are most welcome when they come with steps to reproduce or an explanation of the potential issue as well as reasoning for the way the bug was fixed.
    • Features are welcome, but might be rejected due to design or scope issues. If a feature is based on a lot of dependencies, contributors should first consider building the system outside of Bitcoin Core, if possible.
    • Refactoring changes are only accepted if they are required for a feature or bug fix or otherwise improve developer experience significantly. For example, most "code style" refactoring changes require a thorough explanation why they are useful, what downsides they have and why they significantly improve developer experience or avoid serious programming bugs. Note that code style is often a subjective matter. Unless they are explicitly mentioned to be preferred in the developer notes, stylistic code changes are usually rejected.

    Bitcoin Core has a thorough review process and even the most trivial change needs to pass a lot of eyes and requires non-zero or even substantial time effort to review. There is a huge lack of active reviewers on the project, so patches often sit for a long time.

  2. Merge #12324: speed up Unserialize_impl for prevector
    86b47fa741408b061ab0bda784b8678bfd7dfa88 speed up Unserialize_impl for prevector (Akio Nakamura)
    
    Pull request description:
    
      The unserializer for prevector uses `resize()` for reserve the area, but it's prefer to use `reserve()` because `resize()` have overhead to call its constructor many times.
    
      However, `reserve()` does not change the value of `_size` (a private member of prevector).
    
      This PR make the logic of read from stream to callback function, and prevector handles initilizing new values with that call-back and ajust the value of `_size`.
    
      The changes are as follows:
      1. prevector.h
      Add a public member function named 'append'.
      This function has 2 params, number of elemenst to append and call-back function that initilizing new appended values.
    
      2. serialize.h
      In the following two function:
      - `Unserialize_impl(Stream& is, prevector<N, T>& v, const unsigned char&)`
      - `Unserialize_impl(Stream& is, prevector<N, T>& v, const V&)`
      Make a callback function from each original logic of reading values from stream, and call prevector's `append()`.
    
      3. test/prevector_tests.cpp
      Add a test for `append()`.
    
      ## A benchmark result is following:
      [Machine]
      MacBook Pro (macOS 10.13.3/i7 2.2GHz/mem 16GB/SSD)
    
      [result]
      DeserializeAndCheckBlockTest  => 22% faster
      DeserializeBlockTest => 29% faster
    
      [before PR]
          # Benchmark, evals, iterations, total, min, max, median
          DeserializeAndCheckBlockTest, 60, 160, 94.4901, 0.0094644, 0.0104715, 0.0098339
          DeserializeBlockTest, 60, 130, 65.0964, 0.00800362, 0.00895134, 0.00824187
    
      [After PR]
          # Benchmark, evals, iterations, total, min, max, median
          DeserializeAndCheckBlockTest, 60, 160, 77.1597, 0.00767013, 0.00858959, 0.00805757
          DeserializeBlockTest, 60, 130, 49.9443, 0.00613926, 0.00691187, 0.00635527
    
    ACKs for top commit:
      laanwj:
        utACK 86b47fa741408b061ab0bda784b8678bfd7dfa88
    
    Tree-SHA512: 62ea121ccd45a306fefc67485a1b03a853435af762607dae2426a87b15a3033d802c8556e1923727ddd1023a1837d0e5f6720c2c77b38196907e750e15fbb902
    8777a80706
  3. Merge #15651: torcontrol: Use the default/standard network port for Tor hidden services, even if the internal port is set differently
    8a2656702b4b5d53d1b8343c3215302e4305a038 torcontrol: Use the default/standard network port for Tor hidden services, even if the internal port is set differently (Luke Dashjr)
    
    Pull request description:
    
      Currently, the hidden service is published on the same port as the public listening port.
      But if a non-standard port is configured, this can be used to guess (pretty reliably) that the public IP and the hidden service are the same node.
    
    ACKs for top commit:
      practicalswift:
        utACK 8a2656702b4b5d53d1b8343c3215302e4305a038
      naumenkogs:
        utACK 8a26567
      laanwj:
        utACK 8a2656702b4b5d53d1b8343c3215302e4305a038
    
    Tree-SHA512: 737c8da4f7c3f0bb22a338647d357987f5808156e3f38864168d0d8c2e2b171160812f7da4de11eef602902b304e357d76052950b72d7b3b83535b0fdd05fadc
    6c9d3c704f
  4. Merge #16112: util: Log early messages
    faa2a47cd7 logging: Add threadsafety comments (MarcoFalke)
    0b282f9b00 Log early messages with -printtoconsole (Anthony Towns)
    412987430c Replace OpenDebugLog() with StartLogging() (Anthony Towns)
    
    Pull request description:
    
      Early log messages are dropped on the floor and they'd never make it to the console or debug log. This can be tested by running the test included in this pull request without re-compiling the `bitcoind`.
    
      Fix that by buffering early messages and flushing them as soon as all logging options have been initialized and logging has been started.
    
      This pull request is identical to  "Log early messages with -printtoconsole" (#13088)  by **ajtowns**, with the following changes:
      * Rebased
      * Added docstrings for `m_buffering` and `StartLogging`
      * Switch `CCriticalSection` (aka `RecursiveMutex`) to just `Mutex` in the last commit
      * Added tests
    
      Fixes #16098
      Fixes #13157
      Closes #13088
    
    ACKs for commit faa2a4:
      ajtowns:
        utACK faa2a47cd7bcdbd187035c76f8dbd0442f6818dc
      hebasto:
        ACK faa2a47cd7bcdbd187035c76f8dbd0442f6818dc
      kristapsk:
        ACK faa2a47cd7bcdbd187035c76f8dbd0442f6818dc (ran added functional test before / after recompiling, didn't do additional testing)
    
    Tree-SHA512: 685e2882642fe2a43ce171d42862582dadb840d03cda8236a994322c389ca2a1f3f431b179b2726c155c61793543bb340c568a5455d97f8b83bc7d307a85d387
    0853d8d2fd
  5. test: Add test for unknown args fa7dd88b71
  6. chainparams: Remove unused fMineBlocksOnDemand
    It is equal to consensus.fPowNoRetargeting
    fa613ca0a8
  7. test: Add test that mainnet requires standard txs fa9b419160
  8. Merge #16092: Don't use global (external) symbols for symbols that are used in only one translation unit
    0959d37e3e Don't use global (external) symbols for symbols that are used in only one translation unit (practicalswift)
    
    Pull request description:
    
      Don't use global (external) symbols for symbols that are used in only one translation unit.
    
      Before:
    
      ```
      $ for SYMBOL in $(nm src/bitcoind | grep -E ' [BD] ' | c++filt | cut -f3- -d' ' | grep -v @ | grep -v : | sort | grep '[a-z]' | sort -u | grep -vE '(^_|typeinfo|vtable)'); do
            REFERENCES=$(git grep -lE "([^a-zA-Z]|^)${SYMBOL}([^a-zA-Z]|\$)" -- "*.cpp" "*.h")
            N_REFERENCES=$(wc -l <<< "${REFERENCES}")
            if [[ ${N_REFERENCES} > 1 ]]; then
                continue
            fi
            echo "Global symbol ${SYMBOL} is used in only one translation unit: ${REFERENCES}"
        done
      Global symbol g_chainstate is used in only one translation unit: src/validation.cpp
      Global symbol g_ui_signals is used in only one translation unit: src/ui_interface.cpp
      Global symbol instance_of_cmaincleanup is used in only one translation unit: src/validation.cpp
      Global symbol instance_of_cnetcleanup is used in only one translation unit: src/net.cpp
      Global symbol instance_of_cnetprocessingcleanup is used in only one translation unit: src/net_processing.cpp
      Global symbol pindexBestForkBase is used in only one translation unit: src/validation.cpp
      Global symbol pindexBestForkTip is used in only one translation unit: src/validation.cpp
      $
      ```
    
      After:
    
      ```
      $ for SYMBOL in $(nm src/bitcoind | grep -E ' [BD] ' | c++filt | cut -f3- -d' ' | grep -v @ | grep -v : | sort | grep '[a-z]' | sort -u | grep -vE '(^_|typeinfo|vtable)'); do
            REFERENCES=$(git grep -lE "([^a-zA-Z]|^)${SYMBOL}([^a-zA-Z]|\$)" -- "*.cpp" "*.h")
            N_REFERENCES=$(wc -l <<< "${REFERENCES}")
            if [[ ${N_REFERENCES} > 1 ]]; then
                continue
            fi
            echo "Global symbol ${SYMBOL} is used in only one translation unit: ${REFERENCES}"
        done
      $
      ```
    
      ♻️ Think about future generations: save the global namespace from unnecessary pollution!  ♻️
    
    ACKs for commit 0959d3:
      Empact:
        ACK https://github.com/bitcoin/bitcoin/pull/16092/commits/0959d37e3e0f80010a78d175e3846dabf5d35919
      MarcoFalke:
        ACK 0959d37e3e0f80010a78d175e3846dabf5d35919
      hebasto:
        ACK 0959d37e3e0f80010a78d175e3846dabf5d35919
      promag:
        ACK 0959d37.
    
    Tree-SHA512: 722f66bb50450f19b57e8a8fbe949f30cd651eb8564e5787cbb772a539bf3a288c048dc49e655fd73ece6a46f6dafade515ec4004729bf2b3ab83117b7c5d153
    0b68fca700
  9. test: Log output even if fuzzer failed fa35c4239f
  10. test: Suppress false positive leak in secure_allocator<RNGState> fa410f67aa
  11. Merge #16236: fuzz: Log output even if fuzzer failed
    fa410f67aa test: Suppress false positive leak in secure_allocator<RNGState> (MarcoFalke)
    fa35c4239f test: Log output even if fuzzer failed (MarcoFalke)
    
    Pull request description:
    
      Also suppress a false positive detected leak
    
    ACKs for commit fa410f:
      practicalswift:
        utACK fa410f67aa1d0ccd306dc16e438c1a034b8cc049
    
    Tree-SHA512: 224a72ae0dd9bbe7debda17cd626c01cfbd0e45d7df47a2b591ce8ea386951ad94f4c0677dd268079a4caac382c5acac03199146015a95c308a633e9e4f84c09
    ac4d38c337
  12. Merge #13756: wallet: "avoid_reuse" wallet flag for improved privacy
    5ebc6b0eb267e0552c66fffc5e5afe7df8becf80 bitcoind: update -avoidpartialspends description to account for auto-enable for avoid_reuse wallets (Karl-Johan Alm)
    ada258f8c8f92d44d893cf9f22d15acdeca40b1a doc: release notes for avoid_reuse (Karl-Johan Alm)
    27669551da52099e4a6a401acd7aa32b32832423 wallet: enable avoid_partial_spends by default if avoid_reuse is set (Karl-Johan Alm)
    8f2e208f7c0468f9ba92bc789a698281b1c81284 test: add test for avoidreuse feature (Karl-Johan Alm)
    0bdfbd34cf4015de87741ff549db35e5064f4e16 wallet/rpc: add 'avoid_reuse' option to RPC commands (Karl-Johan Alm)
    f904723e0d5883309cb0dd14b826bc45c5e776fb wallet/rpc: add setwalletflag RPC and MUTABLE_WALLET_FLAGS (Karl-Johan Alm)
    8247a0da3a46d7c38943ee0304343ab7465305bd wallet: enable avoid_reuse feature (Karl-Johan Alm)
    eec15662fad917b169f5e3b8baaf4301dcf00a7b wallet: avoid reuse flags (Karl-Johan Alm)
    58928098c299efdc7c5ddf2dc20716ca5272f21b wallet: make IsWalletFlagSet() const (Karl-Johan Alm)
    129a5bafd9a3efa2fa16d780885048a06566d262 wallet: rename g_known_wallet_flags constant to KNOWN_WALLET_FLAGS (Karl-Johan Alm)
    
    Pull request description:
    
      Add a new wallet flag called `avoid_reuse` which, when enabled, will keep track of when a specific destination has been spent from, and will actively "blacklist" any new UTXOs which send to an already-spent-from destination.
    
      This improves privacy, as a payer could otherwise begin tracking a payee's wallet by regularly peppering a known UTXO with dust outputs, which would then be scooped up and used in payments by the payee, allowing the payer to map out (1) the inputs owned by the payee and (2) the destinations to which the payee is making payments.
    
      This replaces #10386 and together with the (now merged) #12257 it addresses #10065 in full. The concerns raised in https://github.com/bitcoin/bitcoin/pull/10386#issuecomment-302361381 are also addressed due to #12257.
    
      ~~Note: this builds on top of #15780.~~ (merged)
    
    ACKs for commit 5ebc6b:
      jnewbery:
        ACK 5ebc6b0eb
      laanwj:
        Concept and code-review ACK 5ebc6b0eb267e0552c66fffc5e5afe7df8becf80
      meshcollider:
        Code review ACK https://github.com/bitcoin/bitcoin/pull/13756/commits/5ebc6b0eb267e0552c66fffc5e5afe7df8becf80
      achow101:
        ACK 5ebc6b0eb267e0552c66fffc5e5afe7df8becf80 modulo above nits
    
    Tree-SHA512: fdef45826af544cbbb45634ac367852cc467ec87081d86d08b53ca849e588617e9a0a255b7e7bb28692d15332de58d6c3d274ac003355220e4213d7d9070742e
    44d8172323
  13. Cleaned up and consolidated msvc build files to allow faster builds and easier migration to vs2019. 750d1bc7df
  14. docs: add rapidcheck to vcpkg install list 4971be76a7
  15. Merge #16235: build: Cleaned up and consolidated msbuild files (no code changes)
    750d1bc7df Cleaned up and consolidated msvc build files to allow faster builds and easier migration to vs2019. (Aaron Clauson)
    
    Pull request description:
    
      This PR does the following:
    
       - Big cleanup of the msbuild project files and consolidation of common build parameters into a single common include,
       - Gets ready for switch to building with Visual Studio 2019 and Platform Toolset v142,
       - Will allow me to rebase #15529 to include the Qt Projects in the msbuild config.
    
    ACKs for commit 750d1b:
      fanquake:
        ACK 750d1bc7df5ec6505a8fb92dabface887c23817c
      NicolasDorier:
        tACK 750d1bc . Good to see the boilerplate go away.
    
    Tree-SHA512: 15b2c3e095037d2b927aecf81593be6b6963a944c40d8c6b270cd0a2e1f8b67347bf6a4676a15d7ba1831a60f4ee4e6a405611e1ff5a27aa4888b2f857eef22b
    0221420d1a
  16. doc: Remove travis badge from readme e91f0a7af2
  17. Prepend the error/warning prefix for GUI messages f0641f274f
  18. Add MSG_NOPREFIX flag for user messages
    It forces do not prepend error/warning prefix.
    96fd4ee02f
  19. Make AbortNode() aware of MSG_NOPREFIX flag f724f31401
  20. Merge #16241: docs: add rapidcheck to vcpkg install list
    4971be76a7 docs: add rapidcheck to vcpkg install list (fanquake)
    
    Pull request description:
    
      Setting up a fresh Windows 10 VM using [this guide](https://github.com/fanquake/core-review/blob/master/windows.md), installing `rapidcheck` and building using the changes in #16235 resulted in a working `bitcoind` and all tests passing.
    
    ACKs for commit 4971be:
    
    Tree-SHA512: d0cb2d1d6ac5cdecf77c21f9b05e8803266511dbd06cb644352a229d101c7bf63f8022822852877371cce83c414275a850eb9ab6876a61c2fd1061627b7223f7
    b1344eac5f
  21. Merge #16243: doc: Remove travis badge from readme
    e91f0a7af2 doc: Remove travis badge from readme (MarcoFalke)
    
    Pull request description:
    
      The readme(s) are shipped in the released source-code archive, in which case the travis badge is useless since it doesn't link to the travis result of the correct commit/tag/branch. GitHub embeds the correct links for each tag or commit that ci ran on, so we don't need this link in the readme.
    
    ACKs for commit e91f0a:
      hebasto:
        ACK e91f0a7af2aec7d924f00da25c69d8f46e0dd33d
    
    Tree-SHA512: 860435a58b38a9bd0bc62a1e74b3a63c138c9a2f09008a090d5ecc7fd86fa908d2e5eda41d16606507a238d9488fa5323405364a9556b670684a2e4838aead2d
    413e438ea9
  22. Move ismine to wallet module 7c611e2000
  23. Change ismine to take a CWallet instead of CKeyStore e61de6306f
  24. MSVC: Fix error in debug mode (Fix #16245) eb832cd3b4
  25. test: Create data dir in BasicTestingSetup fad3d2a624
  26. test: use common setup in gui tests fa4a04a5a9
  27. net: Document what happens to getdata of unknonw type dddd9270f8
  28. Make and get the multisig redeemscript and destination in one function instead of two
    Instead of creating a redeemScript with CreateMultisigRedeemscript and
    then getting the destination with AddAndGetDestinationForScript, do
    both in the same function.
    
    CreateMultisigRedeemscript is changed to AddAndGetMultisigDestination.
    It creates the redeemScript and returns it via an output parameter. Then
    it calls AddAndGetDestinationForScript to add the destination to the
    keystore and get the proper destination.
    
    This allows us to inspect the public keys in the redeemScript before creating
    the destination so that the correct destination is used when uncompressed
    pubkeys are in the multisig.
    a49503402b
  29. test: Log to debug.log in all tests fabc57e07d
  30. Set AA_EnableHighDpiScaling attribute early
    Qt docs: This attribute must be set before QGuiApplication is 
    constructed.
    099e4b9ad3
  31. ci: Run extended tests fa00326158
  32. Merge #15520: cirrus: Run extended test feature_pruning
    fa00326158 ci: Run extended tests (MarcoFalke)
    
    Pull request description:
    
      Currently not run in this repo, but in https://cirrus-ci.com/github/MarcoFalke/bitcoin
    
      https://cirrus-ci.com/github/MarcoFalke/bitcoin/1903-ciExt
    
    ACKs for commit fa0032:
    
    Tree-SHA512: e74b21084fe88dacedc5806d083c4273847fd75b202d5d829ea10e05ca94ebfe769d0e94a9b8779da4973be0e640d7b0e0bea44954006a2efe97969d118da3e4
    9c95515ba0
  33. Merge #16234: test: Add test for unknown args
    fa7dd88b71 test: Add test for unknown args (MarcoFalke)
    
    Pull request description:
    
      Currently uncovered.
    
      Further reading:
    
      * https://marcofalke.github.io/btc_cov/total.coverage/src/util/system.cpp.gcov.html
      *  Fail on unknown config file options #15021
    
    ACKs for commit fa7dd8:
      promag:
        ACK fa7dd88b71a1c6641bd450fae29a4a31849b1afd, tests looks good to me.
      hebasto:
        ACK fa7dd88b71a1c6641bd450fae29a4a31849b1afd, I have tested the code.
    
    Tree-SHA512: 86ab370ce8e85925f945a52e81457b5678d71bbabcef01205a97782b780003f363552e0bad1ff678bccc784f82c6b511c3b88de3f8f25f62b0b713c387950564
    ea45967e85
  34. Merge #16207: test: stop generating lcov coverage when functional tests fail
    9218ce8d48 Failing functional tests stop lcov (Aseem Sood)
    
    Pull request description:
    
      Fixes #15648
    
      Functional tests can fail and lcov still generates a coverage file, which is inaccurate. This change stops `make` from proceeding if functional tests fail.
    
      before:
    
      ![image](https://user-images.githubusercontent.com/6106941/59449220-a9a11480-8dd4-11e9-9eff-81c42513aafa.png)
    
      after:
      ![image](https://user-images.githubusercontent.com/6106941/59449234-b160b900-8dd4-11e9-9d80-6e9c7f41c241.png)
    
    ACKs for commit 9218ce:
      laanwj:
        straightforward enough ACK 9218ce8d48e504aeaa983e82b206a386712e43e4
    
    Tree-SHA512: 6bbba625f021471d897e911b0df7703153634ef133e295e7be8639346e11f5532bac04e9bab7d793e520fdf4b903219cacecc2ce1e25da0a6828a34a396729e2
    b4ad4c0de3
  35. Merge #16246: MSVC: Fix error in debug mode (Fix #16245)
    eb832cd3b4 MSVC: Fix error in debug mode (Fix #16245) (nicolas.dorier)
    
    Pull request description:
    
      This fix a build error in Debug mode #16245
    
    ACKs for commit eb832c:
      sipsorcery:
        tACK eb832cd3b46a0f9abff238dfa780e4e9df05fdb7
    
    Tree-SHA512: 6d874afc4ffd8b033ca4eafa40d3bb259bed82b4ca09afa7ed05e3b47c11422503b2f75b91da017bfa9ffc6587fff492cdd76014477ed1d90df326b304d6a77c
    23815ee74d
  36. doc: remove orphaned header in developer notes
    The "Git and GitHub tips" section was moved from doc/developer-notes.md to doc/productivity.md in 5b76c31, but the header link to that long-gone section in the developer notes remains and needs to go.
    
    So long, Git and GitHub tips, we barely knew ya.
    5a88ea7c67
  37. [MSVC]: Create the config.ini as part of bitcoind build e47e79377f
  38. Merge #16026: Ensure that uncompressed public keys in a multisig always returns a legacy address
    a49503402b6bc21e3878e151c07529941d36aed0 Make and get the multisig redeemscript and destination in one function instead of two (Andrew Chow)
    
    Pull request description:
    
      `CreateMultisigRedeemscript()` is changed to `AddAndGetMultisigDestination()` so that the process of constructing the redeemScript and then getting the `CTxDestination` are done in the same function. This allows that function to see what the keys in the multisig are so that the correct address type is returned from `AddAndGetDestinationForScript()`.
    
      This only effects the `createmultisig` and `addmultisigaddress` RPCs and does not change signing logic as #16022 does.
    
      Alternative to #16022 and #16012
    
      Fixes #16011
    
    ACKs for commit a49503:
    
    Tree-SHA512: 5b0154a714deea3b2cc3a54beb420c95eeeacf4ca30c40ca80940d9d640f8b03611b0fc14c2f0710bfd8a79e8d27ad7d9ae380b4b83d52b40ab201624f2a63f0
    303ec103ba
  39. Merge #16226: Move ismine to the wallet module
    e61de6306fd89fe9aae90253062e7b1b20343f8a Change ismine to take a CWallet instead of CKeyStore (Andrew Chow)
    7c611e20007bf5face34d33dffa26c8db67e29ec Move ismine to wallet module (Andrew Chow)
    
    Pull request description:
    
      `IsMine` isn't used outside of the wallet except for the tests. It also doesn't make sense to be outside of the wallet. This PR moves `IsMine` into the wallet module and for it to take a `CWallet` instead of `CKeyStore`. The test that used `IsMine` is also moved to the wallet tests.
    
      This is first [prerequisites](https://github.com/bitcoin-core/bitcoin-devwiki/wiki/Wallet-Class-Structure-Changes#ismine) for the wallet structure changes.
    
    ACKs for commit e61de6:
      MarcoFalke:
        re-ACK e61de6306f (only change is rebase with git auto-merge)
      meshcollider:
        Very light code review ACK https://github.com/bitcoin/bitcoin/pull/16226/commits/e61de6306fd89fe9aae90253062e7b1b20343f8a
    
    Tree-SHA512: 1cb4ad12652aef7922ab7460c6d413e8b9d1855dca78c0a286ae49d5c0765bc7996c55f262c742001d434eb9bd4215dc2cc7aae1b371ee1a82d46b32c17e6341
    fd333e15a5
  40. Merge #16256: doc: remove orphaned header in developer notes
    5a88ea7c67448748a63ac7963c70a047a5daca79 doc: remove orphaned header in developer notes (Jon Atack)
    
    Pull request description:
    
      The "Git and GitHub tips" section was moved from doc/developer-notes.md to doc/productivity.md in 5b76c31, but the header link to that long-gone section in the developer notes remains and needs to go.
    
      So long, Git and GitHub tips, we barely knew ya.
    
    ACKs for commit 5a88ea:
      fanquake:
        ACK 5a88ea7c67448748a63ac7963c70a047a5daca79
    
    Tree-SHA512: d2a0bea27cd9209adec2127fae5e336c44771aa46af7c544fa2c80a3df4868adafbccc30ef370369404b882fa009f7198cbf41777afd30eccf0c21a7eb1d0ad1
    32e9453818
  41. Use qInfo() if no error occurs
    qWarning() is used to report warnings and recoverable errors in your 
    application.
    qInfo() is used for informational messages (since Qt 5.5).
    a2aabfb749
  42. wallet/rpc/getbalances: add entry for 'mine.used' balance in results 53c3c1ea9e
  43. wallet/rpc: use static help text
    Always show the same help topic regardless of wallet flags, and explain that something is not always available, rather than runtime-modifying the help output.
    3d2ff37913
  44. docs: release note wording 71d0344cf2
  45. test: Require standard txs in regtest fa89badf88
  46. Merge #16239: wallet/rpc: follow-up clean-up/fixes to avoid_reuse
    71d0344cf25d3aaf60112c5248198c444bc98105 docs: release note wording (Karl-Johan Alm)
    3d2ff379131a01e4e9f9648b150e806104a23795 wallet/rpc: use static help text (Karl-Johan Alm)
    53c3c1ea9e20f881c843a9219e48cec202e962f8 wallet/rpc/getbalances: add entry for 'mine.used' balance in results (Karl-Johan Alm)
    
    Pull request description:
    
      This addresses a few remaining issues pointed out in #13756:
    
      * First commit addresses https://github.com/bitcoin/bitcoin/pull/13756#discussion_r284907468
      * Second commit addresses https://github.com/bitcoin/bitcoin/pull/13756#discussion_r294868973
    
      Ping jnewbery and achow101 as they pointed out these issues.
    
    ACKs for commit 71d034:
      jnewbery:
        ACK 71d0344cf25d3aaf60112c5248198c444bc98105
      meshcollider:
        re-utACK https://github.com/bitcoin/bitcoin/pull/16239/commits/71d0344cf25d3aaf60112c5248198c444bc98105
    
    Tree-SHA512: 5e28822af0574ad07dbbed21aa2fe7866bf5770b4c0a1c150ad0da8af3152bcfb7170330a7497fa500326c594740ecf63733cf58325821e2811d7b911d5783a0
    2cbcc55ba6
  47. Merge #16231: gui: Fix open wallet menu initialization order
    5224be5a3354e1a22ea4d7f0e40aadfccdf67064 gui: Fix open wallet menu initialization order (João Barbosa)
    
    Pull request description:
    
      Fixes #16230, the menu must be created before connecting to aboutToShow signal.
    
    ACKs for commit 5224be:
      hebasto:
        ACK 5224be5a3354e1a22ea4d7f0e40aadfccdf67064, I have tested the code on Bionic with Qt 5.12.4.
      ryanofsky:
        utACK 5224be5a3354e1a22ea4d7f0e40aadfccdf67064. Looks good, fix is simple and makes perfect sense after seeing explanation in https://github.com/bitcoin/bitcoin/pull/16118#issuecomment-503166407. Without this change (and since #16118), the menu pointer passed to `connect(m_open_wallet_action->menu(), ...)` is null and connecting has no effect. With this change, the menu is constructed earlier so the connect call can work.
      fanquake:
        ACK 5224be5a3354e1a22ea4d7f0e40aadfccdf67064 Testing included in a comment above. The segfaulting with QT_FATAL_WARNINGS is unrelated to this change.
    
    Tree-SHA512: 97b42493b37b96683058bccf39a0ee93589293d4ba8f0c60aef7f4fb9dd084cc6d5608cd5ef531cadf5e03b1f01627ef96bc2d79f784fb38cb87aa6643183d41
    c1bab5052a
  48. build: dont compile rapidcheck with -Wall 63d0a079e0
  49. rpc: Allow shutdown while in generateblocks
    By checking the shutdown flag every loop we can use the entire nonce space
    instead of breaking every 16 bits to check the shutdown flag.
    
    This has been possible since the shutdown flag was switched to an atomic,
    before that change it was controlled by a condition variable and lock.
    3b9bf0eb0e
  50. Merge #16263: qt: Use qInfo() if no error occurs
    a2aabfb749198bce896c9e597082acd67d3b863e Use qInfo() if no error occurs (Hennadii Stepanov)
    
    Pull request description:
    
      [Warning and Debugging Messages](https://doc.qt.io/qt-5/debug.html#warning-and-debugging-messages):
      > - `qInfo()` is used for informational messages.
      > - `qWarning()` is used to report warnings and recoverable errors in your
      application.
      >
      > If the `QT_FATAL_WARNINGS` environment variable is set, `qWarning()` exits after printing the warning message. This makes it easy to obtain a backtrace in the debugger.
    
      [`qWarning()`](https://doc.qt.io/qt-5/qtglobal.html#qWarning):
      > Calls the message handler with the warning message message... This function does nothing if `QT_NO_WARNING_OUTPUT` was defined during compilation; it exits if at the nth warning corresponding to the counter in environment variable `QT_FATAL_WARNINGS`.
    
      This PR allows more productive debugging using the environment variable `QT_FATAL_WARNINGS`.
    
      Examples:
      - https://github.com/bitcoin/bitcoin/pull/16118#issuecomment-503184695
      - https://github.com/bitcoin/bitcoin/pull/16254#issuecomment-504223404
    
      The behavior, when option `-debug=qt` is set/unset, remains unchanged.
    
    ACKs for commit a2aabf:
      promag:
        ACK a2aabfb, I also have this change locally.
      Empact:
        ACK https://github.com/bitcoin/bitcoin/pull/16263/commits/a2aabfb749198bce896c9e597082acd67d3b863e
      laanwj:
        ACK a2aabfb749198bce896c9e597082acd67d3b863e
      fanquake:
        ACK a2aabfb749198bce896c9e597082acd67d3b863e.
    
    Tree-SHA512: b4df300c9c00a1705b0d3a10227e3deaac19a98b0a898bb60d5a88872cf450fb131eba150d9dd6c29e021566ee04b3b86b7d486bbe28bd894743c128d2309155
    c8fee6769a
  51. Merge #16254: qt: Set AA_EnableHighDpiScaling attribute early
    099e4b9ad3 Set AA_EnableHighDpiScaling attribute early (Hennadii Stepanov)
    
    Pull request description:
    
      Running `bitcoin-qt` compiled against Qt 5.12.4 causes a warning:
      ```
      hebasto@bionic-qt:~/bitcoin$ src/qt/bitcoin-qt
      Attribute Qt::AA_EnableHighDpiScaling must be set before QCoreApplication is created.
      ```
    
      This PR fixes this issue.
    
      From Qt docs:
      - [Qt::AA_EnableHighDpiScaling](https://doc.qt.io/qt-5/qt.html#ApplicationAttribute-enum):
      > Enables high-DPI scaling in Qt on supported platforms (see also High DPI Displays). _Supported platforms are X11, Windows and Android._ Enabling makes Qt scale the main (device independent) coordinate system according to display scale factors provided by the operating system. This corresponds to setting the `QT_AUTO_SCREEN​_SCALE_FACTOR` environment variable to 1. This attribute must be set before `QGuiApplication` is constructed. This value was added in Qt 5.6.
    
      - [QCoreApplication::setAttribute()](https://doc.qt.io/qt-5/qcoreapplication.html#setAttribute)
    
    ACKs for commit 099e4b:
      MarcoFalke:
        ACK 099e4b9ad3d9967051d5c3d45c6315d1b30fea05
      jonasschnelli:
        utACK 099e4b9ad3d9967051d5c3d45c6315d1b30fea05
      fanquake:
        ACK 099e4b9ad3d9967051d5c3d45c6315d1b30fea05. Did some testing on `Bionic` and `Windows 10` (using VirtualBox). I couldn't see any obvious visual difference, but given Marco's screens above, this change is obviously better. I also checked that there wasn't any sort of regression on macOS.
    
    Tree-SHA512: 1965a427ee14ffb3871bac317685032406cf02d1fa2b2dc11c8b643bfe4ba09195674d149d1e41752f14c0d000446b35e142f3ce60d987ba97082fd7ee39a094
    44e849c35a
  52. Merge #16223: devtools: Fetch and display ACKs at sign-off time in github-merge
    0e01e4522e devtools: Fetch and display ACKs at sign-off time in github-merge (Wladimir J. van der Laan)
    
    Pull request description:
    
      - Fetch the ACKs only at sign-off time. This makes sure that any last-minute ACKs are included (fixes #16200)
      - Show a list of ACKs that will be included and their author before signing off, and warn if there are none
    
      ![1](https://user-images.githubusercontent.com/126646/59605250-ad070980-910e-11e9-9f9a-d789c7f06ebb.png)
      ![2](https://user-images.githubusercontent.com/126646/59605255-b1332700-910e-11e9-80a5-d1e244f48264.png)
    
      There's a slight change to the merge commit format—before it was
      ```
          ACKs for commit 88884c:
      (list of ACKs, could be empty)
      ```
      now it is
      ```
      ACKs for top commit:
            jnewbery:
              ACK 5ebc6b0eb
          ... (list of ACKs cannot be empty)
      ```
      or
      ```
      Top commit has no ACKs.
      ```
      I don't think there's a reason to have the abbreviated commit ID there, after all the full commit id is already in the beginning of the merge commit message, and at least the abbreviated one is in every single ACK message.
    
    ACKs for commit 0e01e4:
      fanquake:
        ACK 0e01e4522e0f9e2e994f80fc61f40d61a4a70d79
    
    Tree-SHA512: 8576de016137d71cfc101747e9bb6779c13e0953cf2babee7afc9972bf2bd46f6912be4982b54fa5abf4d91e98e8fdae6b4ca3eef7d6892b7a5f04a7017b6882
    e115a21f79
  53. signrawtransactionwithkey: report error when missing redeemScript/witnessScript param 01174596e6
  54. Merge #16188: net: Document what happens to getdata of unknown type
    dddd9270f85bd2e71fd281a0c6b4053e02fce93c net: Document what happens to getdata of unknonw type (MarcoFalke)
    
    Pull request description:
    
      Any getdata of unknown type will never be processed and blocks all future messages from a peer. This isn't obviously clear from reading the code, so document it.
    
    Top commit has no ACKs.
    
    Tree-SHA512: 4f8e43bbe6534242facfcfffae28b7a6aa2d228841fa2146a87d494e69f614b0da23cf7a5f3d4367358a7c1981fe2ec196a21c437ae1653f1c7e0351be22598a
    21bd6eb782
  55. Merge #16183: depends: xtrans: Configure flags cleanup.
    30ea931dee8e4533c4b8efe00693aebb6fbd78fc depends: xtrans: Configure flags cleanup. (Carl Dong)
    
    Pull request description:
    
      ```
      xtrans does not understand the --with-pic and --disable-shared flags we
      pass it because it is not a library. Instead, we should pass it flags
      that disable features/packages we're not using so they don't get a
      chance to sneak in.
      ```
    
      Here's a comparison of stdout and stderr of `make -j(nproc) V=1 xtrans_built` before and after this PR: https://gist.github.com/dongcarl/4ebf6fe9985ebc1508190f75932e4237
    
    ACKs for top commit:
      fanquake:
        ACK 30ea931dee8e4533c4b8efe00693aebb6fbd78fc
    
    Tree-SHA512: 49e060dffbae8c148c1164b493d03e7db4f260e7746d94c783377185c665e16fb6638827473709ed543eb266cc293d2313f61ade05ee8af4edb0bfbda0d1f785
    bc948d4cfd
  56. Merge #16252: test: Log to debug.log in all unit tests
    fabc57e07dc34c103552cb51c9277bb48ef97739 test: Log to debug.log in all tests (MarcoFalke)
    fa4a04a5a942d582c62773d815c7e1e9897975d0 test: use common setup in gui tests (MarcoFalke)
    fad3d2a624377de4b0311e6ddd446c36dafd1ddc test: Create data dir in BasicTestingSetup (MarcoFalke)
    
    Pull request description:
    
      This makes it easier to debug a frozen test or a test that failed. To debug a failed test, remove the line `fs::remove_all(m_path_root);`.
    
      The pull is done in three commits:
      * Create a datadir for every unit test once (and only once). This requires the `SetDataDir` function to go away.
      * Use the common setup in the gui unit tests. Some of those tests are testing the init sequence, so we'd have to undo some of what the testing setup did.
      * Log to the debug.log in all tests
    
    ACKs for top commit:
      laanwj:
        ACK fabc57e07dc34c103552cb51c9277bb48ef97739
    
    Tree-SHA512: 73444210b88172669e2cd22c2703a1e30e105185d2d5f03decbdedcfd09c64ed208d3716c59c8bebb0e44214cee5c8095e3e995d049e1572ee98f1017e413665
    c52776e6ff
  57. Merge #15894: Remove duplicated "Error: " prefix in logs
    f724f31401b963c75bd64f5e2c5b9d9561a9a9dd Make AbortNode() aware of MSG_NOPREFIX flag (Hennadii Stepanov)
    96fd4ee02f6c3be21cade729b95a85c60634b0f8 Add MSG_NOPREFIX flag for user messages (Hennadii Stepanov)
    f0641f274ffe94fbe7cae43c07a9373013739df2 Prepend the error/warning prefix for GUI messages (Hennadii Stepanov)
    
    Pull request description:
    
      The "Error" prefix/title is set already in the next functions:
      - `noui_ThreadSafeMessageBox()`https://github.com/bitcoin/bitcoin/blob/2068f089c8b7b90eb4557d3f67ea0f0ed2059a23/src/noui.cpp#L17
      - `ThreadSafeMessageBox()`https://github.com/bitcoin/bitcoin/blob/a720a983015c9ef8cc814c16a5b9ef6379695817/src/qt/bitcoingui.cpp#L1351
    
      Currently on master:
      ![Screenshot from 2019-04-25 22-08-54](https://user-images.githubusercontent.com/32963518/56763092-25ee8280-67aa-11e9-86c8-6a029dd9ab08.png)
    
      With this PR:
      ![Screenshot from 2019-04-25 22-26-36](https://user-images.githubusercontent.com/32963518/56763107-30108100-67aa-11e9-9021-683cbd7e2aaa.png)
    
    ACKs for top commit:
      laanwj:
        concept and code-review ACK f724f31401b963c75bd64f5e2c5b9d9561a9a9dd
    
    Tree-SHA512: 218a179b81cc2ac64239d833c02b4c4d4da9b976728a2dcd645966726c4c660b6f1fe43aa28f33d1cb566785a4329e7f93bf5a502bf202316db79d2ff5fce0f8
    332c6134bb
  58. Add ChaCha20Poly1305@Bitcoin AEAD implementation af5d1b5f4a
  59. Fix GCC 7.4.0 warning
    Warning: enumeral and non-enumeral type in conditional expression.
    d8bd97d5ee
  60. Remove extra CBlockIndex declaration 9824a0d6e9
  61. Merge #16286: refactoring: wallet: Fix GCC 7.4.0 warning
    d8bd97d5ee766a75dec016203bd4d4aafcc24c4f Fix GCC 7.4.0 warning (Hennadii Stepanov)
    
    Pull request description:
    
      Having #13756 and #16239 merged cause GCC warning:
      ```
      $ gcc --version
      gcc (Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0
      ...
      $ make -j 4 > /dev/null
      wallet/wallet.cpp: In member function ‘CWallet::Balance CWallet::GetBalance(int, bool) const’:
      wallet/wallet.cpp:2269:45: warning: enumeral and non-enumeral type in conditional expression [-Wextra]
           isminefilter reuse_filter = avoid_reuse ? 0 : ISMINE_USED;
                                       ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
      ```
    
      Fixed with this PR.
    
    ACKs for top commit:
      practicalswift:
        utACK d8bd97d5ee766a75dec016203bd4d4aafcc24c4f
      promag:
        ACK d8bd97d.
      kallewoof:
        utACK d8bd97d5ee766a75dec016203bd4d4aafcc24c4f
      meshcollider:
        Trivial utACK https://github.com/bitcoin/bitcoin/pull/16286/commits/d8bd97d5ee766a75dec016203bd4d4aafcc24c4f
    
    Tree-SHA512: 2fb315ac82f290c8b9f4e48d1b4526b9babe0717c68593c7bc55cd6c289e64b6322aba72984f39291a9254b57d3f6ba8dbfe03799f510c0c1dc108b21b286732
    ca80fec973
  62. Add missing ECC_Stop(); in GUI rpcnestedtests.cpp f466c4ce84
  63. Merge #16287: refactor: remove extra CBlockIndex declaration
    9824a0d6e91f75477b8417a2acb3301a8e8d8aa1 Remove extra CBlockIndex declaration (RJ Rybarczyk)
    
    Pull request description:
    
      Remove duplicate `class CBlockIndex;` declaration.
    
    ACKs for top commit:
      promag:
        ACK 9824a0d. Is this a random finding or you have searched for more similar cases?
      practicalswift:
        utACK 9824a0d6e91f75477b8417a2acb3301a8e8d8aa1
      fanquake:
        ACK 9824a0d6e91f75477b8417a2acb3301a8e8d8aa1
    
    Tree-SHA512: aaf88450f53cb8859778102fe971b1121808819c04e64802e5a5cf47bf1403b42531361c52b097b41b905f9fa1bb7acc82b446cfa659c6ac41d00fab29e114e4
    1b28bca04c
  64. Add Travis check for single parameter constructors not marked "explicit" c4606b8432
  65. build: Stop translating PACKAGE_NAME fa5e9f157e
  66. scripted-diff: Avoid passing PACKAGE_NAME for translation
    -BEGIN VERIFY SCRIPT-
    sed -i --regexp-extended -e 's/\<\w+(::\w+)?\(PACKAGE_NAME\)/PACKAGE_NAME/g' $(git grep -l --extended-regexp '\<\w+(::\w+)?\(PACKAGE_NAME\)' src)
    -END VERIFY SCRIPT-
    fabe87d2c9
  67. qt: Run «make translate» in ./src/ fab85208f6
  68. tests: Reduce compilation time and unneccessary recompiles by removing unused includes in tests 9a841696c1
  69. Merge #16289: test: Add missing ECC_Stop() in GUI rpcnestedtests.cpp
    f466c4ce846000b2f984b4759f89f3f793fa0100 Add missing ECC_Stop(); in GUI rpcnestedtests.cpp (Jonas Schnelli)
    
    Pull request description:
    
      Fixes #16288
    
      Was probably missing in #7783
    
    ACKs for top commit:
      Sjors:
        ACK f466c4c. Tested by comparing `make check` on master and this PR with macOS 10.14.5. I also tried with and without `--enable-debug` / `--without-gui`.
      fanquake:
        ACK f466c4ce846000b2f984b4759f89f3f793fa0100. Tested running `make check` on macOS.
    
    Tree-SHA512: 648e10c2e35bd01fb92e63709169a6c185ac4b62c69af0109d2cd2d7db47e56ae804c788f9a1a1845746f818764799732f9e58e9dbfca3bffeea8f14683c8c7f
    3077f11dad
  70. Merge #16278: tests: Remove unused includes
    9a841696c1e7147e259e5a387566e461abc144ec tests: Reduce compilation time and unneccessary recompiles by removing unused includes in tests (practicalswift)
    
    Pull request description:
    
      Reduce compilation time and unneccessary recompiles by removing unused includes in tests.
    
      A subset of #16273 ("refactor: Reduce total compilation time by 2% and avoid unnecessary recompiles by removing unused includes") as requested by MarcoFalke in https://github.com/bitcoin/bitcoin/pull/16273#issuecomment-505022643.
    
    ACKs for top commit:
      Sjors:
        ACK 9a84169 on macOS 10.14.5 (I rebased on #16289)
    
    Tree-SHA512: bcb6ecffef689a9839bee1a5cb93abe83db1f30819a54226c5630fee456b5a5d187507d06861454adfda939c3556a975113f97662e415cb47fa0327ea4fd09fb
    7400135b79
  71. util: Explain why the path is cached fa69c3e6ca
  72. util: No translation of `Bitcoin Core` in the copyright fa64b947bb
  73. qt: test: Create at most one testing setup faa1e0fb17
  74. [MSVC] Enable Fuzz for functional tests 819c5ddad3
  75. Merge #16300: util: Explain why the path is cached
    fa69c3e6ca71800376761e264320c363f072dc2f util: Explain why the path is cached (MarcoFalke)
    
    Pull request description:
    
      The rationale for caching the datadir is given as
    
      ```
          // This can be called during exceptions by LogPrintf(), so we cache the
          // value so we don't have to do memory allocations after that.
      ```
    
      Since 8c2d695c4a45bdd9378c7970b0fcba6e1efc01f9, the debug log location is actually cached itself in `m_file_path`.
    
      So explain that the caching is now only used to guard against disk access on each call. (See also #16255)
    
    ACKs for top commit:
      promag:
        ACK fa69c3e6ca71800376761e264320c363f072dc2f.
      laanwj:
        ACK fa69c3e6ca71800376761e264320c363f072dc2f
      ryanofsky:
        utACK fa69c3e6ca71800376761e264320c363f072dc2f. Good cleanup. Previous comment was confusing, and definitely not helpful if outdated.
    
    Tree-SHA512: 02108c90026d6d7c02843aaf59a06b4e1fa63d5d4378bb7760f50767efc340dc94c259bf7afb32fa4d47952b48a4e91798d1e0ddc1b051d770405e078636793a
    935cd6b1ec
  76. test: Add missing sync_all to wallet_balance test fa815255c7
  77. [wallet] abort when attempting to fund a transaction above maxtxfee
    FundTransaction calls GetMinimumFee which, when the fee rate is absurdly high, quietly reduced the fee to -maxtxfee. Becaue an absurdly high fee rate is usually the result of a fat finger, aborting seems safer behavior.
    806b0052c3
  78. Merge #16258: [MSVC]: Create the config.ini as part of bitcoind build
    819c5ddad3ca915f77adc94d8b0a5d73069fff99 [MSVC] Enable Fuzz for functional tests (nicolas.dorier)
    e47e79377f5d81b567881fcba851772bda0cefd8 [MSVC]: Create the config.ini as part of bitcoind build (nicolas.dorier)
    
    Pull request description:
    
      This remove the patchwork of powershell done in AppVeyor to the `AfterBuild` target of `bitcoind` so that windows developers do not have to figure out how to manually edit the config.ini before running the functional tests.
    
      You can easily test with `msbuild /t:AfterBuild` in bitcoind folder.
    
    ACKs for top commit:
      sipsorcery:
        tACK 819c5dd.
      fanquake:
        ACK 819c5ddad3ca915f77adc94d8b0a5d73069fff99
    
    Tree-SHA512: 657a3019532c6a3729310e52bfc2183cc805a406aab84cd83b0219e3ef8a6f208a3b1760317b41978d9dabb90fae0350e8cb00cf7e219b3bab04010ef1267a4b
    0f309541aa
  79. Merge #15964: Docs: Improve build-osx document formatting
    dbd137a4ea8f1b5dfc5cdc72cee99c8f8328b793 Improve build-osx formatting (Giulio Lombardo)
    
    Pull request description:
    
      This `PR` will improve `build-osx.md` formatting by:
    
      1. Updating Markdown syntax to the latest one
      2. Adding syntax highlighting to all code blocks
      3. Aligning the text up to `80` column guideline (before it was following different guidelines, sometime `80`, sometime `90`, etc.)
      4. Small grammar improvements here and there
    
    ACKs for top commit:
      fanquake:
        ACK dbd137a4ea8f1b5dfc5cdc72cee99c8f8328b793 - Document reads and renders essentially the same as the current `build-osx.md`, with minor formatting / grammatical  changes.
    
    Tree-SHA512: 47747991b5fddf0725c82f17f153e83150e51f698787544b4c51b32479989e4b550e2b3aec92979d2b0c76edfdcbbe7c4d9d0115df12e2bfde0cfcb277e9b984
    04710b6d8c
  80. [MSVC] allow user level project customization c83f0ac9b2
  81. doc: Fix broken link in doc/build-osx.md
    This fixes the regression in PR #15964 as noted here:
    
    https://github.com/bitcoin/bitcoin/pull/15964/files#r298798933
    90b5c4eefb
  82. Include Objective-C source files
    The copyright_header.py script will process Objective-C source files 
    (*.mm) as other ones.
    01fafe55a1
  83. Drop no-longer-relevant copyright holder name 621463d7df
  84. Fix: "Bitcoin Core" -> "The Bitcoin Core" ca11606858
  85. Merge #16313: doc: Fix broken link in doc/build-osx.md
    90b5c4eefbfbdfc91fe2e8dde1203784374648d3 doc: Fix broken link in doc/build-osx.md (Jon Atack)
    
    Pull request description:
    
      This fixes the regression in PR #15964 as noted here:
    
      https://github.com/bitcoin/bitcoin/pull/15964/files#r298798933
    
    ACKs for top commit:
      hebasto:
        ACK 90b5c4eefbfbdfc91fe2e8dde1203784374648d3. Provided link verified.
      fanquake:
        ACK 90b5c4eefbfbdfc91fe2e8dde1203784374648d3. Thanks.
    
    Tree-SHA512: 2197809d37c357d36097839941ba3cee32e4d6ba2e4d609d99fb04286330d9dbcb89d6331fe1aa798fdb5964e522970f57b8ce0c2cb034b0f48b77b1d60e33e1
    fd925e9b1c
  86. Merge #16302: test: Add missing syncwithvalidationinterfacequeue to wallet_balance test
    fa815255c70d32809aac640db4a8762c7d71e8db test: Add missing sync_all to wallet_balance test (MarcoFalke)
    
    Pull request description:
    
      A `syncwithvalidationinterfacequeue` should be sufficient.
    
      Fixes  #16020
    
    ACKs for top commit:
      promag:
        ACK fa81525. This can be tested by adding sleep in `CWallet::BlockConnected` just before `LOCK(cs_wallet)` - master will always fail while this PR will succeed.
    
    Tree-SHA512: 07e067c698627f90f0b9848f921b7067adc70c27105db3258e056384197e50dbee055c87839d238cc11bde11179d3f5879b39e1c8e15465f8f07558c694b677d
    e7f3450b7d
  87. Merge #16271: build: remove -Wall from rapidcheck build flags
    63d0a079e04dad42c6f63793505a0af59d085a7f build: dont compile rapidcheck with -Wall (fanquake)
    
    Pull request description:
    
      Fixes #16062.
    
      Remove `-Wall` from the rapidcheck build flags pre compilation.
    
      Discussed briefly with theuni.
    
    ACKs for top commit:
      MarcoFalke:
        ACK 63d0a079e04dad42c6f63793505a0af59d085a7f (checked that `RAPIDCHECK=1 make rapidcheck` fails without this)
    
    Tree-SHA512: 6cb3653221c1eadbc8da54812298a061130b4377da6f63dcc2dfb97379d303b4db538e67f4fe3c96a03ee6a1e65840f0def0ac4e862553480c7ac4bdcc77e113
    6e9eda5567
  88. Merge #16309: [MSVC] allow user level project customization
    c83f0ac9b2b3f96090c4b632495c92c8be1df909 [MSVC] allow user level project customization (nicolas.dorier)
    
    Pull request description:
    
      This PR allow the user to customize the build process.
    
      For example with the following `common.init.vcxproj.user` file
      ```xml
      <?xml version="1.0" encoding="utf-8"?>
      <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
        <PropertyGroup>
          <CLToolExe>clcache.exe</CLToolExe>
          <CLToolPath>C:\ProgramData\chocolatey\bin\</CLToolPath>
          <TrackFileAccess>false</TrackFileAccess>
        </PropertyGroup>
      </Project>
      ```
      I can use `clcache` while developing in visual studio.
    
    ACKs for top commit:
      sipsorcery:
        tACK c83f0ac9b2b3f96090c4b632495c92c8be1df909.
      fanquake:
        ACK c83f0ac9b2b3f96090c4b632495c92c8be1df909. I did not test the customization.
    
    Tree-SHA512: beef4ac97ed4e1ef46c358629101a008b7df81ca96f3ef7e0947788a6c295c1dddd00a93a09c1aa9daa68a6da0c4ab271aa5dd23df35f3fc8f453ee929e047f8
    b3edacb529
  89. [MSVC] Copy build output to src/ automatically after build 08c721dab2
  90. Improve documentation of memory_cleanse()
    So far, the documentation of memory_cleanse() is a verbatim copy of
    the commit message in BoringSSL, where this code was originally
    written. However, our code evolved since then, and the commit message
    is not particularly helpful in the code but is rather of historical
    interested in BoringSSL only.
    
    This commit improves improves the comments around memory_cleanse()
    and gives a better rationale for the method that we use. This commit
    touches only comments.
    f53a70ce95
  91. Merge #16257: [wallet] abort when attempting to fund a transaction above -maxtxfee
    806b0052c3b45415862f74f20ba5f389e5b673de [wallet] abort when attempting to fund a transaction above maxtxfee (Sjors Provoost)
    
    Pull request description:
    
      `FundTransaction` calls `GetMinimumFee` which, when the fee rate is absurdly high, quietly reduces the fee to `-maxtxfee`.
    
      Becaue an absurdly high fee rate is usually the result of a fat finger, aborting seems safer behavior.
    
      Before:
      ```
      bitcoin-cli walletcreatefundedpsbt '[]' '[{"tb1q...": 0.01}]' 0 '{"feeRate": 10}' true
      {
        "psbt": "cHNidP8...gAA=",
        "fee": 0.10000000,
        "changepos": 1
      }
    
      ```
    
      After:
      ```
      bitcoin-cli walletcreatefundedpsbt '[]' '[{"tb1q...": 0.01}]' 0 '{"feeRate": 10}' true
      error code: -25
      error message:
      Fee exceeds maximum configured by -maxtxfee
      ```
    
      QT still checks the max fee rate as expected:
      <img width="566" alt="Schermafbeelding 2019-06-20 om 19 52 00" src="https://user-images.githubusercontent.com/10217/59888424-a2aa7100-9395-11e9-8ae6-8a3c1f7de585.png">
    
    ACKs for top commit:
      laanwj:
        Code review ACK 806b0052c3b45415862f74f20ba5f389e5b673de
    
    Tree-SHA512: bee95811711cdab100b614d2347921407af3b400aea613ca156953ed3f60b924ad29a1d335bd0e240c0b7c0fbb360226bab03294d226a5560cdf2a3f21e6d406
    1212808762
  92. TEST: Replace hard-coded hex tx with classes 8f250ab788
  93. Add antialiasing to traffic graph widget db26e8e228
  94. Merge #16212: addrdb: Avoid eating inodes - remove temporary files created by SerializeFileDB in case of errors
    d9753383b9e1b61d19d98bcd1d66607f398c7e9f addrdb: Remove temporary files created in SerializeFileDB. Fixes non-determinism in unit tests. (practicalswift)
    
    Pull request description:
    
      Remove temporary files created in `SerializeFileDB` in case of errors.
    
      _Edit: Previously this was hit non-deterministically from the tests: that is no longer the case but the cleanup issue remains :-)_
    
    ACKs for top commit:
      laanwj:
        code-review ACK d9753383b9e1b61d19d98bcd1d66607f398c7e9f
    
    Tree-SHA512: e72b74b8de411f433bd8bb354cacae07ab75a240db6232bc6a37802ccd8086bff5275ce3d196ddde033d8ab9e2794bb8f60eb83554af7ec2e9f91d6186cb4647
    3ccab6470a
  95. Merge #15538: wallet_bumpfee.py: Make sure coin selection produces change
    276972cb95ba944a7a4b1858a08d333962261396 wallet_bumpfee.py: Make sure coin selection produces change (Gregory Sanders)
    
    Pull request description:
    
      I was hitting the case where change-less transactions were being made.
    
    ACKs for top commit:
      ryanofsky:
        utACK 276972cb95ba944a7a4b1858a08d333962261396
    
    Tree-SHA512: e2b7a50363daddd3ee749cacfc9d3d685a6c0c7e3e48118bb60131d205bf83ea06cdd66b69dfa3bd4dbb3bbf2b5b673d7225171486ae72fc762e5dabe2c01ef5
    6c21a801f3
  96. Merge #14193: validation: Add missing mempool locks
    fa2b083c3feb0522baf652045efa6b73458761a3 [test] Add test to check mempool consistency in case of reorgs (MarcoFalke)
    fabeb1f613653a8c1560e4a093a9b6b7a069b60b validation: Add missing mempool locks (MarcoFalke)
    fa0c9dbf9156d64a4b9bff858da97825369a9134 txpool: Make nTransactionsUpdated atomic (MarcoFalke)
    
    Pull request description:
    
      Take the mempool read lock during reorgs, so that we don't accidentally read an inconsistent mempool.
    
    ACKs for top commit:
      laanwj:
        code review ACK fa2b083c3feb0522baf652045efa6b73458761a3
      ryanofsky:
        utACK fa2b083c3feb0522baf652045efa6b73458761a3 [EDIT: was ~e284e422e75189794e24fe482819d8b1407857c3~, from bad copy and paste]. Changes since last review: rebase after #15976, adding vTxHashes lock annotation, adding new commit dropping mempool lock for nTransactionsUpdated and making it atomic to avoid deadlock between mempool lock and g_best_block_mutex
    
    Tree-SHA512: cfe7777993589087753e000e3736d79d320dca412383fb77b56bef8946a04049722bf888c11b6f722adf677165185c7e58b4a269f7c5fa25e84dda375f6c8a7d
    c6e42f1ca9
  97. Merge #15427: Add support for descriptors to utxoupdatepsbt
    26fe9b990995f9cb5eee21d40b4daaad19f7181f Add support for descriptors to utxoupdatepsbt (Pieter Wuille)
    3135c1a2d2e2fb31bc362c848bd2456d576e408b Abstract out UpdatePSBTOutput from FillPSBT (Pieter Wuille)
    fb90ec3c33e824f5abb6a68452c683d6ce8b3e4a Abstract out EvalDescriptorStringOrObject from scantxoutset (Pieter Wuille)
    eaf4f887348a08c620732125ad4430e1a133d434 Abstract out IsSegWitOutput from utxoupdatepsbt (Pieter Wuille)
    
    Pull request description:
    
      This adds a descriptors argument to the `utxoupdatepsbt` RPC. This means:
      * Input and output scripts and keys will be filled in when known.
      * P2SH-witness inputs will be filled in from the UTXO set when a descriptor is provided that shows they're spending segwit outputs.
    
      This also moves some (newly) shared code to separate functions: `UpdatePSBTOutput` (an analogue to `SignPSBTInput`), `IsSegWitOutput`, and `EvalDescriptorStringOrObject` (implementing the string or object notation parsing used in `scantxoutset`).
    
    ACKs for top commit:
      jnewbery:
        utACK 26fe9b990995f9cb5eee21d40b4daaad19f7181f
      laanwj:
        utACK 26fe9b990995f9cb5eee21d40b4daaad19f7181f (will hold merging until response to promag's comments)
      promag:
        ACK 26fe9b9, checked refactors and tests look comprehensive. Still missing a release note but can be added later.
    
    Tree-SHA512: 1d833b7351b59d6c5ded6da399ff371a8a2a6ad04c0a8f90e6e46105dc737fa6f2740b1e5340280d59e01f42896c40b720c042f44417e38dfbee6477b894b245
    2f717fb5cd
  98. wallet: Fix -maxtxfee check by moving it to CWallet::CreateTransaction 5c1b9714cb
  99. Merge #16314: scripts and tools: Update copyright_header.py script
    ca11606858a787c133983dcb1e0fea2ac54fc530 Fix: "Bitcoin Core" -> "The Bitcoin Core" (Hennadii Stepanov)
    621463d7df0c644f4bf45550d3a75e134876480a Drop no-longer-relevant copyright holder name (Hennadii Stepanov)
    01fafe55a1ab20870749dae01b437049ad4ce6e6 Include Objective-C source files (Hennadii Stepanov)
    
    Pull request description:
    
      Now the `copyright_header.py` script handles Objective-C source files `*.mm`:
      ```
      src/qt/macdockiconhandler.mm
      src/qt/macnotificationhandler.mm
      src/qt/macos_appnap.mm
      ```
    
      Also the only occurrence of `Bitcoin Core Developers` replaced with ubiquitous `The Bitcoin Core developers`.
    
      EDITED:
      The reason to remove "Sam Rushing" is (on master):
      ```
      $ git grep "Sam Rushing"
      contrib/devtools/copyright_header.py:    "Sam Rushing\n",
      ```
    
    ACKs for top commit:
      laanwj:
        code review ACK ca11606858a787c133983dcb1e0fea2ac54fc530
    
    Tree-SHA512: 446c8fc569f732a6758e765f64110d9faeeffabb69088dd081d7bb730255c87196da96cea51081f4bd49280049fa4ed2ae22091059cb0f89bdc4ef8dd5e63cf0
    c84349a148
  100. wallet: Remove unreachable code in CreateTransaction 177550101b
  101. rpc: Clarify that block count means height excl genesis fab0c820fa
  102. Merge #16153: Qt: Add antialiasing to traffic graph widget
    db26e8e22822c65a3817b16805f5ba9ad2235f93 Add antialiasing to traffic graph widget (Josu Goñi)
    
    Pull request description:
    
      Before:
    
      ![image](https://user-images.githubusercontent.com/25986871/58974389-92559c00-87c2-11e9-9673-0c47ac71de2e.png)
    
      After:
    
      ![image](https://user-images.githubusercontent.com/25986871/58974280-56223b80-87c2-11e9-8fcc-1e5d299dd1e2.png)
    
    ACKs for top commit:
      laanwj:
        ACK db26e8e22822c65a3817b16805f5ba9ad2235f93
    
    Tree-SHA512: d795809458522a1ec19e236de30c2c5070960544162323324f0d4e2f49c3590fe7756e924f1021056106b4c52dcb564e690c15f85a15ea35342badf72653d534
    4db2f8cf0f
  103. bench: Move generated data to a dedicated translation unit 3d60a03a7c
  104. test: Add tests for getblockchaininfo.softforks faf6caf4da
  105. Merge #16250: signrawtransactionwithkey: report error when missing redeemScript/witnessScript
    01174596e69568c434198a86f54cb9ea6740e6c2 signrawtransactionwithkey: report error when missing redeemScript/witnessScript param (Anthony Towns)
    
    Pull request description:
    
      Adding support for "witnessScript" as an alternative to "redeemScript" when using "signrawtransactionwithkey" meant that the `RPCTypeCheckObj()` call in `SignTransaction` can't error out just because either parameter is missing -- it's only a problem if both are missing, which isn't a state `RPCTypeCheckObj()` tests for. This results in the regression described in #16249. This patch adds some code to test for this case and give a similar error, namely:
    
          error code: -8
          error message:
          Missing redeemScript/witnessScript
    
      Fixes: #16249
    
    ACKs for top commit:
      meshcollider:
        utACK https://github.com/bitcoin/bitcoin/pull/16250/commits/01174596e69568c434198a86f54cb9ea6740e6c2
      promag:
        ACK 01174596e. Could also write test without `dict`/`del`:
    
    Tree-SHA512: cf51346b7dea551b7f18f2a93c2a336a293b2535c62c03a5263cd2be8c58cf0cc302891da659c167e88ad1a68a756472c3c07e99f71627c61d32886fc5a3a353
    e06067387e
  106. rpc: fix RPC help requirements for getblocktemplate
    First argument is optional, and defaults to {mode:template}.
    0ab8ba1ac6
  107. Add ChaCha20Poly1305@Bitcoin tests 99aea045d6
  108. Add ChaCha20Poly1305@Bitcoin AEAD benchmark bb326add9f
  109. Merge #16262: rpc: Allow shutdown while in generateblocks
    3b9bf0eb0e0d69f112ce905078018d8351c73e26 rpc: Allow shutdown while in generateblocks (Patrick Strateman)
    
    Pull request description:
    
      By checking the shutdown flag every loop we can use the entire 32 bit nonce space instead of breaking every 16 bits to check the flag.
    
      This is possible now because the shutdown flag is an atomic where before it was controlled by a condition variable and lock.
    
    ACKs for top commit:
      kallewoof:
        Re-ACK 3b9bf0e
    
    Tree-SHA512: d0664201a55215130c2e9199a31fb81361daf4102a65cb3418984fd61cb98bfb9136d9ee8d23a85d57e50051f9bb0059bd71fe0488a17f63c38ea5caa6004504
    7d7b832d67
  110. Merge #16158: Fix logic of memory_cleanse() on MSVC and clean up docs
    f53a70ce95231d34bb14cd6c58503927e8d7ff59 Improve documentation of memory_cleanse() (Tim Ruffing)
    cac30a436cab3641bba3b774d3d3ddbc426e7908 Clean up logic in memory_cleanse() for MSVC (Tim Ruffing)
    
    Pull request description:
    
      When working on https://github.com/bitcoin-core/secp256k1/issues/185, I noticed that the logic in memory_cleanse(), which is supposed to clear memory securely, is weird on MSVC. While it's correct, it's at least a code smell because the code clears the memory twice on MSVC. This weirdness was introduced by #11558.
    
      This PR fixes the logic on MSVC and also improves the docs around this function. Best reviewed in individual commits, see the commit messages for more rationale. The second commit touches only comments.
    
    ACKs for top commit:
      practicalswift:
        utACK f53a70ce95231d34bb14cd6c58503927e8d7ff59 :-)
      laanwj:
        code review ACK f53a70ce95231d34bb14cd6c58503927e8d7ff59
    
    Tree-SHA512: 1c2fd98ae62b34b3e6e59d1178b293af969a9e06cbb7df02a699ce8802f145a336f72edb178c520e3ecec81f7e8083828f90a5ba6367d966a2c7d7c0dd6c0475
    7f985d6c81
  111. Merge #16294: qt: test: Create at most one testing setup
    faa1e0fb1712b1f94334e42794163f79988270fd qt: test: Create at most one testing setup (MarcoFalke)
    
    Pull request description:
    
      It is assumed that ideally only one BasicTestingSetup exists at any point in time for each process (due to use of globals).
    
      This assumption is violated in the GUI tests, as a testing setup is created as the first step of the `main` function and then (sometimes) another one for the following test cases.
    
      So, the gui tests create two testing setups:
      * `BasicTestingSetup` in `main` (added in fa4a04a5a942d582c62773d815c7e1e9897975d0)
      * a testing setup for individual test cases
    
      Avoid that by destructing the testing setup in main after creation and then move the explicit `ECC_Stop` to the only places where it is needed (before and after `apptests`).
    
    ACKs for top commit:
      laanwj:
        code review ACK faa1e0fb1712b1f94334e42794163f79988270fd
    
    Tree-SHA512: b8edceb7e2a8749e1de3ea80bc20b6fb7d4390bf366bb9817206ada3dc8669a91416f4803c22a0e6c636c514e0c858dcfe04523221f8851b10deaf472f107d82
    38fbb575e2
  112. Merge #14734: fix an undefined behavior in uint::SetHex
    0f459d868d85053f1cc066ea9099793f88cbd655 fix an undefined behavior in uint::SetHex (Kaz Wesley)
    
    Pull request description:
    
      Decrementing psz beyond the beginning of the string is UB, even though
      the out-of-bounds pointer is never dereferenced.
    
      I don't think any clang sanitizer covers this, so I don't see any way a test could catch the original behavior.
    
    ACKs for top commit:
      promag:
        utACK 0f459d8.
      l2a5b1:
        utACK 0f459d868d85053f1cc066ea9099793f88cbd655
    
    Tree-SHA512: 388223254ea6e955f643d2ebdf74d15a3d494e9f0597d9f05987ebb708d7a1cc06ce64bd25d447d75b5f5561bdae9630dcf25adb7bd75f7a382298b95d127162
    085cac6b90
  113. Merge #15483: rpc: Adding a 'logpath' entry to getrpcinfo
    8a6810d0d2759c69f63b53c48aa79e0cfdd88ffb Add a 'logpath' field to getrpcinfo (darosior)
    
    Pull request description:
    
      as discussed in #15438
    
    ACKs for top commit:
      laanwj:
        Tested ACK 8a6810d0d2759c69f63b53c48aa79e0cfdd88ffb
    
    Tree-SHA512: 752c7d90f670677c8144efb338c5c97c2264f85f1e65e031fd5a44f04230b6eafbabd0f634db263eb42c25642ecc1c4b1b602d4735e3fab07ec00b566134ddab
    9339008a9d
  114. Merge #16325: rpc: Clarify that block count means height excl genesis
    fab0c820fa4c0c3227eec85c64310a3bf938a149 rpc: Clarify that block count means height excl genesis (MarcoFalke)
    
    Pull request description:
    
      There is a common misconception that the block count returned by the blockchain rpcs includes the genesis block. See for example the discussion in https://github.com/bitcoin/bitcoin/pull/16292#issuecomment-506303256.
    
      However, it really returns the height, which is `0` for the genesis block.
    
      So clarify that and also remove the misleading "longest blockchain" comment.
    
      Finally, fix the wallet test that incorrectly used this rpc.
    
    ACKs for top commit:
      instagibbs:
        utACK https://github.com/bitcoin/bitcoin/pull/16325/commits/fab0c820fa4c0c3227eec85c64310a3bf938a149
      promag:
        ACK fab0c82, sorry for the misconception.
    
    Tree-SHA512: 0d087cbb628d3866352bca6420402f392e6a997e579941701a408a7fca355d84645045661f39b022e4479cc07f85a6cddaa9095b6fd9911b245692482420a5e4
    11de669d8b
  115. Add logpath description for getrpcinfo a30bd09454
  116. Use placeholder instead of key expiration date 88fd556a96
  117. Merge #16299: bench: Move generated data to a dedicated translation unit
    3d60a03a7cfb2d46b5f10633e9f6a9a36b8cb76f bench: Move generated data to a dedicated translation unit (João Barbosa)
    
    Pull request description:
    
      With this change multiple benchmarks can use the same data without incurring in a bigger binary.
    
    ACKs for top commit:
      laanwj:
        code review ACK 3d60a03a7cfb2d46b5f10633e9f6a9a36b8cb76f
    
    Tree-SHA512: 8903bb09e4327c88e585a09bc7df1cbdfc18ebdc5d9c86bf3d6d9252a05eaf18b14ecd2bafdacd82f05a659e4b35ecd301c36011c97f7bf89302793165b00fdc
    91c345eb92
  118. Merge #16329: test: Add tests for getblockchaininfo.softforks
    faf6caf4daa33b9179f4f02c09e184245ea53fa1 test: Add tests for getblockchaininfo.softforks (MarcoFalke)
    
    Pull request description:
    
    ACKs for top commit:
      laanwj:
        Code review ACK faf6caf4daa33b9179f4f02c09e184245ea53fa1
    
    Tree-SHA512: 8a0bb3b648f18fdba7a36a960d70c6217fd7312cf2ef52b3b911be0d7f1d27c5c50856946d7e6cb81d96c081913b7308cc5f9d89af34518439ff4ada024441da
    1381ddbcfc
  119. Add HaveKey and HaveCScript to SigningProvider 1b699a5083
  120. Merge #16330: docs: Use placeholder instead of key expiration date
    88fd556a969d1120a0ff633bc384336388a11709 Use placeholder instead of key expiration date (Hennadii Stepanov)
    
    Pull request description:
    
      Use a placeholder instead of the actual expiration date, so that the documentation doesn't require updating every time an expiry date changes.
    
    ACKs for top commit:
      fanquake:
        ACK 88fd556a969d1120a0ff633bc384336388a11709
    
    Tree-SHA512: 391707833cc0e701cf560ec82fd91368468c90a95f85e4ce2a211b20d12463c85775142f28a3536b57c5f6950b9e6e0785632f6f071fa2180bc8aab53008603b
    dfdcb3dfe5
  121. [RPC] add new utxoupdatepsbt arguments to the CRPCCommand and CPRCConvertParam tables
    The new `descriptors` argument needs to be added to the Command and
    ConvertParams tables to by usable as a named argument and by
    bitcoin-cli.
    
    Also update the test to use named arguments to test this.
    3b11420b3c
  122. Enable ShellCheck rules
    Enabled ShellCheck rules:
      SC1087
      SC2001
      SC2004
      SC2005
      SC2006
      SC2016
      SC2028
      SC2048
      SC2066 (note that IFS already contains only a line feed)
      SC2116
      SC2166
      SC2181
      SC2206
      SC2207
      SC2230
      SC2236
    1ac454a384
  123. Disable other targets when enable-fuzz is set 48bcb2ac24
  124. Merge #16327: scripts and tools: Update ShellCheck linter
    1ac454a3844b9b8389de0f660fa9455c0efa7140 Enable ShellCheck rules (Hennadii Stepanov)
    
    Pull request description:
    
      Enable some simple ShellCheck rules.
    
      Note for reviewers: `bash` and `shellcheck` on macOS are different from ones on Ubuntu.
      For local tests the latest `shellcheck` version 0.6.0 should be used (see #15166).
    
    ACKs for top commit:
      practicalswift:
        utACK 1ac454a3844b9b8389de0f660fa9455c0efa7140
      dongcarl:
        utACK 1ac454a
      fanquake:
        ACK 1ac454a3844b9b8389de0f660fa9455c0efa7140
    
    Tree-SHA512: 8d0a3a5c09fe1a0c22120178f5e6b80f81f746f8c3356b7701ff301c117acb2edea8fe08f08fb54ed73f94b1617515fb239fa28e7ab4121f74872e6494b6f20e
    1088b90cba
  125. Merge #16308: [MSVC] Copy build output to src/ automatically after build
    08c721dab2b6d33f11ecf5ed089841d1fc9d8d15 [MSVC] Copy build output to src/ automatically after build (nicolas.dorier)
    
    Pull request description:
    
      I got frustrated many time that I run functional tests on an outdated binary.
    
      This make sure that files are properly copied (and debuggable) for functional tests after a build.
    
      This PR add a `common.vcxproj` which can be used to extend the build steps.
      I can't move it in `common.init`, because build step customization must always come at the end of a project file.
    
    ACKs for top commit:
      sipsorcery:
        tACK 08c721dab2b6d33f11ecf5ed089841d1fc9d8d15.
      fanquake:
        ACK 08c721dab2b6d33f11ecf5ed089841d1fc9d8d15
    
    Tree-SHA512: 7c033552a7bbbd3bb51a72d13bf4254e3b779c59ec93629c85f17745a1b17a8c1d6c87bb5e50eb5f4e5486e767929c0126e555b185608fd666aa39729b5068e1
    4f378ac30c
  126. rpc: migrate JSONRPCRequest functionality into request.cpp 5c5e32bbe3
  127. [docs] Add release notes for PR 15427 91cc18f602
  128. bench: Benchmark blockToJSON 91509ffe24
  129. Merge #15457: Check std::system for -[alert|block|wallet]notify
    f874e14cd3c84cd412bd3fb42b3ee1706ca6a267 [build]: check std::system for -[alert|block|wallet]notify (Sjors Provoost)
    cc3ad56ff2bc2583fe68c4a9e0b41072a47c0b07 [build] MSVC: set HAVE_SYSTEM for desktop apps (Sjors Provoost)
    c1c91bb78d7267f01ee3a3c156c218b46a92cd39 [build] detect std::system or ::wsystem (Sjors Provoost)
    
    Pull request description:
    
      Platforms such as iOs and Universal Windows Platform do not support launching a process through system().
    
    ACKs for top commit:
      laanwj:
        code review ACK f874e14cd3c84cd412bd3fb42b3ee1706ca6a267
    
    Tree-SHA512: 16bb4a8fa1896046ccb22a46c8985e1aa45f5b11ecf5539eb2299e9a58f1a5b085c0c12cb6939c7493d93abce7e84fadcbfc73374c887db63da6d00c08aa476d
    8c69fae944
  130. [build]: use #if HAVE_SYSTEM instead of defined(HAVE_SYSTEM) 976b034b13
  131. docs: add reduce-memory.md
    Co-Authored-By: Wladimir J. van der Laan <laanwj@gmail.com>
    64b27c46e4
  132. doc: Include static members in Doxygen 84ad4d2b9d
  133. Merge #16326: [RPC] add new utxoupdatepsbt arguments to the CRPCCommand and CPRCCvertParam tables
    91cc18f602fe2ff7fe47335a8e1e7734895a19d9 [docs] Add release notes for PR 15427 (John Newbery)
    3b11420b3c91f731b03805a39e48ee32e54484a2 [RPC] add new utxoupdatepsbt arguments to the CRPCCommand and CPRCConvertParam tables (John Newbery)
    
    Pull request description:
    
      The new `descriptors` argument was not added to the CRPCCommand and CPRCCvertParam tables, meaning that it couldn't be used with bitcoin-cli or named arguments.
    
      Before this PR:
    
      ```
      > bitcoin-cli utxoupdatepsbt 'cHNidP8BAFMCAAAAAYCdwVRx2X3o4KHx5tAMsN1ddp51MbfWsietjfMbl5HtAAAAAAD/////AQDh9QUAAAAAF6kUW+rtEOi4nk9rpw2F5XZl1dd8ehGHAAAAAAAAAA==' "[{\"desc\":\"sh(wpkh([bd50871a/0h/0h/0h]03895c66337b38699bfafff1084ad35bc347fac4f4e5e5fe5eb7dd81155280db53))\"}]"
      error code: -3
      error message:
      Expected type array, got string
      > bitcoin-cli --named utxoupdatepsbt psbt='cHNidP8BAFMCAAAAAYCdwVRx2X3o4KHx5tAMsN1ddp51MbfWsietjfMbl5HtAAAAAAD/////AQDh9QUAAAAAF6kUW+rtEOi4nk9rpw2F5XZl1dd8ehGHAAAAAAAAAA==' descriptors="[{\"desc\":\"sh(wpkh([bd50871a/0h/0h/0h]03895c66337b38699bfafff1084ad35bc347fac4f4e5e5fe5eb7dd81155280db53))\"}]"
      error code: -8
      error message:
      Unknown named parameter descriptors
      ```
    
      After this PR:
    
      ```
      bitcoin-cli utxoupdatepsbt 'cHNidP8BAFMCAAAAAYCdwVRx2X3o4KHx5tAMsN1ddp51MbfWsietjfMbl5HtAAAAAAD/////AQDh9QUAAAAAF6kUW+rtEOi4nk9rpw2F5XZl1dd8ehGHAAAAAAAAAA==' "[{\"desc\":\"sh(wpkh([bd50871a/0h/0h/0h]03895c66337b38699bfafff1084ad35bc347fac4f4e5e5fe5eb7dd81155280db53))\"}]"
      cHNidP8BAFMCAAAAAYCdwVRx2X3o4KHx5tAMsN1ddp51MbfWsietjfMbl5HtAAAAAAD/////AQDh9QUAAAAAF6kUW+rtEOi4nk9rpw2F5XZl1dd8ehGHAAAAAAAAAA==
      bitcoin-cli --named utxoupdatepsbt psbt='cHNidP8BAFMCAAAAAYCdwVRx2X3o4KHx5tAMsN1ddp51MbfWsietjfMbl5HtAAAAAAD/////AQDh9QUAAAAAF6kUW+rtEOi4nk9rpw2F5XZl1dd8ehGHAAAAAAAAAA==' descriptors="[{\"desc\":\"sh(wpkh([bd50871a/0h/0h/0h]03895c66337b38699bfafff1084ad35bc347fac4f4e5e5fe5eb7dd81155280db53))\"}]"
      cHNidP8BAFMCAAAAAYCdwVRx2X3o4KHx5tAMsN1ddp51MbfWsietjfMbl5HtAAAAAAD/////AQDh9QUAAAAAF6kUW+rtEOi4nk9rpw2F5XZl1dd8ehGHAAAAAAAAAA==
      ```
    
    ACKs for top commit:
      promag:
        ACK 91cc18f.
      fanquake:
        re-ACK 91cc18f602fe2ff7fe47335a8e1e7734895a19d9
    
    Tree-SHA512: 279b2339a5cac17e363002e4ab743e251d6757c904c89f1970575bdce18d4f63d5e13507e171bf2bdc1bf6dd457db345a4b11b15d4ff71b96c2fedc4ffe52b23
    584168c7f9
  134. Merge #16344: build: use #if HAVE_SYSTEM instead of defined(HAVE_SYSTEM)
    976b034b13d28877aee641833d5ee28a8cc5d83f [build]: use #if HAVE_SYSTEM instead of defined(HAVE_SYSTEM) (Sjors Provoost)
    
    Pull request description:
    
      It seems that `AC_DEFINE([HAVE_SYSTEM], [HAVE_STD__SYSTEM || HAVE_WSYSTEM]` causes `HAVE_SYSTEM` to always be defined, so we need to use `#if HAVE_SYSTEM` instead of `#if defined(HAVE_SYSTEM)`.
    
      Followup for #15457, can be tested with #12557.
    
    ACKs for top commit:
      dongcarl:
        ACK https://github.com/bitcoin/bitcoin/pull/16344/commits/976b034b13d28877aee641833d5ee28a8cc5d83f.
      promag:
        ACK 976b034b13d28877aee641833d5ee28a8cc5d83f.
      fanquake:
        ACK 976b034b13d28877aee641833d5ee28a8cc5d83f
    
    Tree-SHA512: b8cdd04c2ec399fd15638aef5d75ea0886ec1572d3cf4fcea27c193e1e6390344315908262cad8981a9b0a905ab9520619ce2ffe9a717f4ee6bfa8b028ebbdc6
    f373beebbc
  135. Remove unused guard
    It is no longer used since switching to autotools build system.
    d003110351
  136. build: prune dbus from depends e8fabd9253
  137. Merge #16350: qt: Remove unused guard
    d003110351568f0f8e69bec445f4ddc3a56396ff Remove unused guard (Hennadii Stepanov)
    
    Pull request description:
    
      `BITCOIN_QT_TEST` is no longer used since switching to autotools build system.
    
      Some historical refs:
      - #807
      - #4241
    
    ACKs for top commit:
      practicalswift:
        utACK d003110351568f0f8e69bec445f4ddc3a56396ff
      promag:
        ACK d003110351568f0f8e69bec445f4ddc3a56396ff.
      jonasschnelli:
        Verified ACK d003110351568f0f8e69bec445f4ddc3a56396ff
    
    Tree-SHA512: 1242ef7927d2dbd2e47cdb50de6ebb20e4ac427a66a37b4d4de8ca1b50581d34f818cb576fc9fdfb3e7dd7259d11812e3807da33b3357850d67548b837d5549b
    05623c0216
  138. Merge #16339: doc: add reduce-memory.md
    64b27c46e4c21fc7902a69d8ddb6791ef417c4af docs: add reduce-memory.md (fanquake)
    
    Pull request description:
    
      Following some discussion in https://github.com/bitcoin-core/docs/issues/50, this adds Wladimir's [reducing bitcoind memory usage gist](https://gist.github.com/laanwj/efe29c7661ce9b6620a7) to `/doc`.
    
      The conclusion seemed to be that if the main repo already has [reduce-traffic.md](https://github.com/bitcoin/bitcoin/blob/master/doc/reduce-traffic.md), then we could also add `reduce-memory.md`.
    
    ACKs for top commit:
      practicalswift:
        ACK 64b27c46e4c21fc7902a69d8ddb6791ef417c4af
      hebasto:
        ACK 64b27c46e4c21fc7902a69d8ddb6791ef417c4af, I have reviewed the changes and they look OK, I agree they can be merged. Also a link from `/doc/README.md` has been tested.
      jonasschnelli:
        ACK 64b27c46e4c21fc7902a69d8ddb6791ef417c4af
    
    Tree-SHA512: 0ab3035403e5145cfe33c29990a8d082df834ac6602b4ad6bfa821523d57e8451f0cde3017fbf3c2c4e0b34941b6374909d11d27f9598e211bbc14accd487be1
    2b465195e0
  139. Make the RPCHelpMan aware of JSONRPCRequest and add Check() helper c7a9fc234f
  140. rpc: switch to using RPCHelpMan.Check() b6fb617aaa
  141. Merge #16347: doc: Include static members in Doxygen
    84ad4d2b9d80dcbfa9780984bc7c9cbe1f7b3f60 doc: Include static members in Doxygen (Carl Dong)
    
    Pull request description:
    
      This makes our Doxygen output more useful by generating them for static members.
    
    ACKs for top commit:
      practicalswift:
        ACK 84ad4d2b9d80dcbfa9780984bc7c9cbe1f7b3f60
      laanwj:
        ACK https://github.com/bitcoin/bitcoin/pull/16347/commits/84ad4d2b9d80dcbfa9780984bc7c9cbe1f7b3f60
      fanquake:
        ACK 84ad4d2b9d80dcbfa9780984bc7c9cbe1f7b3f60
    
    Tree-SHA512: f47fe6f36739ba8d7978169b28a29ad3d0796d7535052e447740077f4827c9bf5082d14c9cac2fbaf91f01bb2bffc25d9d7c3f702c0848c79a48a311ebd3344f
    e1a8d76aff
  142. test: Add log messages to test/functional/tool_wallet.py
    and update code comments as per Python PEP 8 style guide.
    1eb13f09a9
  143. Merge #16332: rpc: Add logpath description for getrpcinfo
    a30bd0945427f310640d8515c11a3d1b70762e69 Add logpath description for getrpcinfo (Gregory Sanders)
    
    Pull request description:
    
      Introduced in https://github.com/bitcoin/bitcoin/pull/15483
    
    ACKs for top commit:
      fanquake:
        ACK a30bd0945427f310640d8515c11a3d1b70762e69
    
    Tree-SHA512: f561af675d1184412b9e426debab6269f80a65098fc7226ee93581f4075dfc93846dd4b226bd4842eb43e1649d3291c7d18558bfeb851970728b64b8a0e6df0f
    f5a01cf259
  144. test: Split tool_wallet.py test into subtests
    as per Marco Falke review suggestion.
    3bf2b3a37b
  145. test: Tool wallet test coverage for unexpected writes to wallet
    This commit adds test coverage in `test/functional/tool_wallet.py` to reproduce unexpected writes to the wallet as described in https://github.com/bitcoin/bitcoin/issues/15608:
    
        - wallet tool `info` unexpectedly writes to the wallet file if the wallet file permissions are read/write.
    
        - wallet tool `info` raises with "Error loading . Is wallet being used by another process?" if the wallet file permissions are read-only.
    
    1. Reproduce the reported issue, define the current unexpected behavior, and add test coverage to guide a future fix in the form of commented-out assertions to be uncommented when testing/fixing.
    
    2. Provisionally extend the same coverage to the wallet tool create test and the getwalletinfo test as regression tests while fixing the issue.
    
    3. Add some logging for sanity checking.
    
    ------
    
    Changes after rebase:
    
    5. Make wallet_path an instance method instead of a function in tool_wallet.py as per Marco Falke review suggestion.
    
    6. Assert wallet permissions instead of logging them in tool_wallet.py. This ran into an issue with Appveyor keeping permissions at 666 so allowed for 666 as a workaround.
    
    7. Change the added logging from info to debug level.
    
    8. More helpful assertions order in tool_wallet.py#assert_tool_output. This change makes #assert_tool_output raise "Error loading wallet.dat. Is wallet being used by another process?" rather than a less-helpful message when debugging the read-only wallet permissions issue.
    7195fa792f
  146. Merge #16352: build: prune dbus from depends
    e8fabd9253400a7c3fe45b34bc572eb00ff5522d build: prune dbus from depends (fanquake)
    
    Pull request description:
    
      Since #8210 (59d063d07660d6e8d53ed8aa1eb8b0747ea6767c), we've been passing `-dbus-runtime` when configuring Qt.
    
      ```
      qtbase-opensource-src-5.9.7 $ ./configure -h | grep -i dbus
        -no-dbus ............. Do not build the Qt D-Bus module
        -dbus-linked ......... Build Qt D-Bus and link to libdbus-1 [auto]
        -dbus-runtime ........ Build Qt D-Bus and dynamically load libdbus-1 [no]
      ```
    
      This means we don't actually seem to be using the `D-Bus` we build in depends. This was pointed out by theuni at the time, [here](https://github.com/bitcoin/bitcoin/pull/7993#issuecomment-223114395) and [here](https://github.com/bitcoin/bitcoin/pull/8210#issuecomment-226930545), but was never followed up. dongcarl also bought it up as part of #16150.
    
      I've tested building and running `bitcoin-qt` using depends on Debian. Needs further testing.
    
    ACKs for top commit:
      laanwj:
        code review ACK e8fabd9253400a7c3fe45b34bc572eb00ff5522d
    
    Tree-SHA512: 164e6e52b6f97c04aef42bd185e2a157bc1a42103840f9404c5a795749f45a8c2c35f35873395a3a56398b3cd5955496b90d9c885d929b434c9bc871695abe20
    983c84844c
  147. Merge #15687: test: tool wallet test coverage for unexpected writes to wallet
    7195fa792fcc19e9c064c4e38814c3b46a210b34 test: Tool wallet test coverage for unexpected writes to wallet (Jon Atack)
    3bf2b3a37bbd550491d124b77fd7c1b2a7969f66 test: Split tool_wallet.py test into subtests (Jon Atack)
    1eb13f09a9d8c2c7dc69f4cdf1b1ccf632543aa0 test: Add log messages to test/functional/tool_wallet.py (Jon Atack)
    
    Pull request description:
    
      This pull request adds test coverage in `test/functional/tool_wallet.py` to reproduce unexpected writes to the wallet as described in https://github.com/bitcoin/bitcoin/issues/15608 and serve as a benchmark for fixing the issue:
    
      - Wallet tool `info` unexpectedly writes to the wallet file if the wallet file permissions are read/write.
    
      - Wallet tool `info` raises with "Error loading . Is wallet being used by another process?" if the wallet file permissions are read-only.
    
      Goals:
    
      1. Reproduce the reported issue, define the current unexpected behavior, and add test coverage to guide a future fix. Add debug-level logging for sanity checking and commented-out assertions to be uncommented when fixing the issue. Add the same coverage to the wallet tool create test and the getwalletinfo test as regression tests while fixing the issue.
    
      2. Add info log messages as there are currently none in the test file.
    
      3. Split the tests out to separate functions as per review feedback.
    
      Thanks to Marco Falke for pointing me in the right direction.
    
    ACKs for top commit:
      laanwj:
        code review ACK 7195fa792fcc19e9c064c4e38814c3b46a210b34
    
    Tree-SHA512: 16a41cce989c8f819cf5b02c6cf8ea84653ede2738fb402f6c36cf4dc075b424dff3e2c73a1cfa1ec9c75f614675baecc71e588845a2596db06ba0957db2df7b
    b5fa2319d8
  148. gui: Sort wallets in open wallet menu 224eb9534a
  149. refactor: Rename getWallets to getOpenWallets in WalletController fa90fe6440
  150. Merge #16106: gui: Sort wallets in open wallet menu
    fa90fe6440301edba71a6f0b1ba3ef1c78d5eae4 refactor: Rename getWallets to getOpenWallets in WalletController (João Barbosa)
    224eb9534a8d2b0f140ecb0cc00c61af8ba1da4e gui: Sort wallets in open wallet menu (João Barbosa)
    
    Pull request description:
    
      Ensure wallets are sorted by name in the open wallet menu. This also improves the change done in #15957, since it avoids a second call to `listWalletDir`.
    
    ACKs for top commit:
      laanwj:
        code review ACK fa90fe6440301edba71a6f0b1ba3ef1c78d5eae4
    
    Tree-SHA512: 349ea195021e56760dea3551126d1b9dc4821faab44aaf2858229db4fddaf0ce0b5eb0a8fa5025f47c77134b003067a77e8c340f9655a99e1305d430ccecced8
    2679bb8919
  151. refactoring: move block metadata structures into BlockManager
    Separate out the management of chain-agnostic block metadata from any given
    CChainState instance. This allows us to avoid duplicating data like
    `mapBlockIndex` unnecessarily for multiple chainstates.
    
    This also adds a CChainState constructor that accepts and sets m_blockman.
    Ultimately this reference will point to a BlockMan instance that
    is shared across CChainStates.
    
    This commit can be decomposed into smaller commits if necessary.
    613c46fe9e
  152. refactoring: add block_index_candidates arg to LoadBlockIndex
    Prevents BlockManager from having to reference ChainstateActive()
    within one of its methods which improves encapsulation and makes
    testing easier.
    4ed55dfcd7
  153. refactoring: make pindexBestInvalid internal to validation.cpp
    There's no need to have this member live on CChainState since it's only used
    in validation.cpp.
    55d525ab90
  154. refactoring: remove mapBlockIndex global
    in lieu of ::BlockIndex().
    682a1d0f20
  155. Merge #16291: gui: Stop translating PACKAGE_NAME
    fa64b947bb3075ff8737656706b941af691908ab util: No translation of `Bitcoin Core` in the copyright (MarcoFalke)
    fab85208f678ba1be53bdb73a73ce3c5c937d448 qt: Run «make translate» in ./src/ (MarcoFalke)
    fabe87d2c923ab3a70b8cde2666a4d1cda8b22fb scripted-diff: Avoid passing PACKAGE_NAME for translation (MarcoFalke)
    fa5e9f157e568b7fbbea1482b393181f0733f2ba build: Stop translating PACKAGE_NAME (MarcoFalke)
    
    Pull request description:
    
      Generally the package name is not translated, but the package description is.
    
      E.g. `GIMP` or `Firefox` are always called that way regardless of the system language. However, "`Firefox` webbrowser" or "`GIMP` image manipulation program" are translated.
    
    ACKs for top commit:
      hebasto:
        ACK fa64b947bb3075ff8737656706b941af691908ab, I have not tested the code, but I have reviewed it and it looks OK, I agree it can be merged.
    
    Tree-SHA512: 626f811531182d0ba0ef1044930d32726773349bcb49b10261288a86ee6b80a183db30a87d817d5b0d501fad058ac22d6272311716b4f5a154f17c6f391a5a1a
    4882040182
  156. Merge #16267: bench: Benchmark blockToJSON
    91509ffe247b0eacbf84214c7c9c3f8a0012f2eb bench: Benchmark blockToJSON (Kirill Fomichev)
    
    Pull request description:
    
      Related:
      - "getblock performance issue on verbosity" https://github.com/bitcoin/bitcoin/issues/15925
      - "refactor: Avoid UniValue copy constructor" #15974
    
    ACKs for top commit:
      laanwj:
        ACK 91509ffe247b0eacbf84214c7c9c3f8a0012f2eb
    
    Tree-SHA512: e70b12cb31921c7527bde334f52f39776da698b6bbdb196079a8b68478c67585a5bd7bed7403f65166bd604f7ed60778c53dc064d743bb8368318a1283d1073e
    0a6ee9797e
  157. Merge #14505: test: Add linter to make sure single parameter constructors are marked explicit
    c4606b84329d760d7cee144bebe05807857edaae Add Travis check for single parameter constructors not marked "explicit" (practicalswift)
    
    Pull request description:
    
      Make single parameter constructors `explicit` (C++11).
    
      Rationale from the developer notes:
    
      > - By default, declare single-argument constructors `explicit`.
      >   - *Rationale*: This is a precaution to avoid unintended conversions that might
      >   arise when single-argument constructors are used as implicit conversion
      >   functions.
    
    ACKs for top commit:
      laanwj:
        ACK c4606b84329d760d7cee144bebe05807857edaae
    
    Tree-SHA512: 3e6fd51935fd93b2604b2188664692973d0897469f814cd745b5147d71b99ea5d73c1081cfde9f6393f51f56969e412fcda35d2d54e938a3235b8d40945f31fd
    345f42a9e3
  158. Merge #16128: Delete error-prone CScript constructor only used with FindAndDelete
    e1a55690e66ca962179bc8170695b92af8a3caa8 Delete error-prone CScript constructor (Gregory Sanders)
    
    Pull request description:
    
      The behavior of this constructor is not the expected behavior compared to the other constructors which directly interpret the vector as a CScript, rather than serialize it into a new CScript. It has only four uses in the entire codebase. Delete this constructor and replace its four uses with the more clear serialization construction.
    
    ACKs for top commit:
      Empact:
        ACK https://github.com/bitcoin/bitcoin/pull/16128/commits/e1a55690e66ca962179bc8170695b92af8a3caa8
      sipa:
        Concept and code review ACK e1a55690e66ca962179bc8170695b92af8a3caa8, but I'd like to make sure we have tests covering the FindAndDelete usage.
    
    Tree-SHA512: b6721e343c867ca401a80ec87c25939d7f1fc798f3bf7e5feb0ea6f8280eecb6bd65afc8286912c76ff8119ccea50ad7726b1a4137cae70c9d4fed7d960e10d3
    c799976c86
  159. test: rpc_users: Add function for auth'd requests. 604e2a997f
  160. test: rpc_users: Add function for testing auth params. c73d871799
  161. test: rpc_users: Also test rpcauth.py with specified password. 830dc2dd0f
  162. test: rpc_users: Make variable names more clear. e263a343d4
  163. gui: Fix missing qRegisterMetaType(WalletModel*) f27bd96b5f
  164. qt: Assert QMetaObject::invokeMethod result 64fee48944
  165. Update doc and CI config 84edfc72e5
  166. depends: expat 2.2.7 0512f0521a
  167. Merge #16348: qt: Assert QMetaObject::invokeMethod result
    64fee489448c62319e77941c30152084695b5a5d qt: Assert QMetaObject::invokeMethod result (João Barbosa)
    f27bd96b5fdc2921d93c44bbf422bff0e979c4de gui: Fix missing qRegisterMetaType(WalletModel*) (João Barbosa)
    
    Pull request description:
    
      Invalid/wrong dynamic calls aren't verified by the compiler. This PR asserts those dynamic calls. Once we bump Qt to at least 5.10 these can be refactored to use the `invokeMethod` overload that allows connecting to lambdas or member pointers, which are compile checked.
    
      For reference, one of the overloaded versions is https://doc.qt.io/qt-5/qmetaobject.html#invokeMethod-5.
    
    ACKs for top commit:
      laanwj:
        ACK 64fee489448c62319e77941c30152084695b5a5d
    
    Tree-SHA512: d332e5d7eb2c7be5d3fe90e2e4ff20a67800b9664f6637c122a23647a964f7915703d3f086e2de440f695cfe14de268ff581d0092b7736e911952a4f4d248e25
    8046a3e0be
  168. Remove CKeyStore and squash into CBasicKeyStore c7797ec655
  169. [mempool] Allow one extra single-ancestor transaction per package
    This implements the proposed policy change from [1], which allows
    certain classes of contract protocols involving revocation
    punishments to use CPFP. Note that some such use-cases may still
    want some form of one-deep package relay, though even this alone
    may greatly simplify some lightning fee negotiation.
    
    [1] https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2018-November/016518.html
    50cede3f5a
  170. Move HaveKey static function from keystore to rpcwallet where it is used a913e3f2fb
  171. scripted-diff: rename CBasicKeyStore to FillableSigningProvider
    -BEGIN VERIFY SCRIPT-
    git grep -l "CBasicKeyStore" | xargs sed -i -e 's/CBasicKeyStore/FillableSigningProvider/g'
    -END VERIFY SCRIPT-
    d9becff4e1
  172. Move KeyOriginInfo to its own header file 16f8096e91
  173. Move various SigningProviders to signingprovider.{cpp,h}
    Moves all of the various SigningProviders out of sign.{cpp,h} and
    keystore.{cpp,h}. As such, keystore.{cpp,h} is also removed.
    
    Includes and the Makefile are updated to reflect this. Includes were largely
    changed using:
    git grep -l "keystore.h" | xargs sed -i -e 's;keystore.h;script/signingprovider.h;g'
    37a79a4fcc
  174. Remove CCryptoKeyStore and move all of it's functionality into CWallet
    Instead of having a separate CCryptoKeyStore that handles the encryption
    stuff, just roll it all into CWallet.
    8f5b81e6ed
  175. Move WatchOnly stuff from SigningProvider to CWallet 93ce4a0b6f
  176. Add GetNewDestination to CWallet to fetch new destinations
    Instead of having the same multiple lines of code everywhere
    that new destinations are fetched, introduce GetNewDestination as
    a member function of CWallet which does the key fetching, label
    setting, script generation, and destination generation.
    172213be5b
  177. Replace CReserveKey with ReserveDestinatoin
    Instead of reserving keys, reserve destinations which are backed by keys
    33d13edd2b
  178. Add GetNewChangeDestination for getting new change Destinations
    Adds a GetNewChangeDestination that has the same objective as GetNewDestination
    8e7f930828
  179. Merge #16240: JSONRPCRequest-aware RPCHelpMan
    b6fb617aaaad5f9cdd7f2ad2825b253ca792055d rpc: switch to using RPCHelpMan.Check() (Karl-Johan Alm)
    c7a9fc234f3ce400ce78b9b434d2d210b2646c50 Make the RPCHelpMan aware of JSONRPCRequest and add Check() helper (Karl-Johan Alm)
    5c5e32bbe3dfa790dd8bb421fbd6301ae10b09f5 rpc: migrate JSONRPCRequest functionality into request.cpp (Karl-Johan Alm)
    0ab8ba1ac65b70f044a5e323b13d098cef33695a rpc: fix RPC help requirements for getblocktemplate (Karl-Johan Alm)
    
    Pull request description:
    
      Every single RPC call has a helper-section at the start, which throws a help string if the user asks for help or if the user provided too few/many arguments.
    
      ```C++
      const RPCHelpMan help{...};
      if (request.fHelp || !help.IsValidNumArgs(request.params.size())) {
          throw std::runtime_error(help.ToString());
      }
      ```
    
      or (older version)
    
      ```C++
      if (request.fHelp || request.params.size() < min || request.params.size() > max)
          throw std::runtime_error(
              RPCHelpMan{...}.ToString()
          );
      ```
    
      It seems like an obvious improvement, and less copy-pasting, to make `RPCHelpMan` aware of `JSONRPCRequest`, and to let it handle the checks instead. Both of the above become
    
      ```C++
      RPCHelpMan{...}.Check(request);
      ```
    
      which means we save roughly 3 lines per RPC command, and the `RPCHelpMan` instance is never referenced afterwards, so the approach is a tiny fraction cleaner.
    
      This is a complete update, sans a few special case locations that had special rules. 623 lines turn into 284 (which includes the addition to `RPCHelpMan`).
    
    ACKs for top commit:
      laanwj:
        code rview and lightly tested ACK b6fb617aaaad5f9cdd7f2ad2825b253ca792055d
      MarcoFalke:
        ACK b6fb617aaa, looked at the diff, verified move-only where applicable
    
    Tree-SHA512: eb73f47f812512905b852e313281d1c8df803db40a6188aa39d5a7586631664db6764491152a8a96769946c796dc56d38c6e3a66ddd06ba3fb9d20050e6274e1
    357488f660
  180. Move wallet creation out of the createwallet rpc into its own function 1aecdf2063
  181. Merge #16237: Have the wallet give out destinations instead of keys
    8e7f930828a9f8f9be1c90ff45e3fdfef1980eaf Add GetNewChangeDestination for getting new change Destinations (Andrew Chow)
    33d13edd2bda0af90660e275ea4fa96ca9896f2a Replace CReserveKey with ReserveDestinatoin (Andrew Chow)
    172213be5b174243dc501c1103ad5fe2fee67a16 Add GetNewDestination to CWallet to fetch new destinations (Andrew Chow)
    
    Pull request description:
    
      The wallet should give out destinations instead of keys. It should be the one that handles the conversion from key to destination and the setting of the label, not the caller. In order to do this, two new member functions are introduced `GetNewDestination()` and `GetNewChangeDestination()`. Additionally, `CReserveKey` is changed to be `ReserveDestination` and represents destinations whose keys can be returned to the keypool.
    
    ACKs for top commit:
      instagibbs:
        re-utACK https://github.com/bitcoin/bitcoin/pull/16237/commits/8e7f930828a9f8f9be1c90ff45e3fdfef1980eaf
      sipa:
        ACK 8e7f930828a9f8f9be1c90ff45e3fdfef1980eaf. Concept ACK as this gives a much cleaner abstraction to work with, and light code review ACK.
      laanwj:
        ACK 8e7f930828a9f8f9be1c90ff45e3fdfef1980eaf
    
    Tree-SHA512: 5be7051409232b71e0ef2c1fd1a3e76964ed2f5b14d47d06edc2ad3b3687abd0be2803a1adc45c0433aa2c3bed172e14f8a7e9f4a23bff70f86260b5a0497500
    8d1286014c
  182. Merge #16338: test: Disable other targets when enable-fuzz is set
    84edfc72e5eba3dde824ebd0626e97929a0b1bca Update doc and CI config (qmma)
    48bcb2ac249e0e666ce638bb29124558b3283c16 Disable other targets when enable-fuzz is set (qmma)
    
    Pull request description:
    
      This is to fix https://github.com/bitcoin/bitcoin/issues/16094
    
      When the `enable-fuzz` flag is set, disable all other binary targets.
    
    ACKs for top commit:
      MarcoFalke:
        ACK 84edfc72e5eba3dde824ebd0626e97929a0b1bca (only checked that travis compiled this)
    
    Tree-SHA512: f4ac80526388a67709986b22de88b00bf93ab44ae31a20bd4d8923a4982ab97e015a9f13010081d6ecf6c23ae8afeac7ca9d849d198ce6ebe239aa3127151efc
    5859b7dc6f
  183. Merge #16270: depends: expat 2.2.7
    0512f0521a63a4cd65e5e93ac1c44e4d54604605 depends: expat 2.2.7 (fanquake)
    
    Pull request description:
    
      Major changes in expat 2.2.7:
    
      * [#186](https://github.com/libexpat/libexpat/issues/186) [#262](https://github.com/libexpat/libexpat/pull/262)  Fix extraction of namespace prefixes from XML names;
                          XML names with multiple colons could end up in the
                          wrong namespace, and take a high amount of RAM and CPU
                          resources while processing, opening the door to use for denial-of-service attacks
      * [#227](https://github.com/libexpat/libexpat/pull/227) Autotools: Add --without-examples and --without-tests
    
      Full changelog is available [here](https://github.com/libexpat/libexpat/blob/R_2_2_7/expat/Changes#L5).
    
    ACKs for top commit:
      laanwj:
        ACK 0512f0521a63a4cd65e5e93ac1c44e4d54604605
    
    Tree-SHA512: 45162a9b0011107fd59a97dae7b5eb61989dafbec26b1ee497d1b11bf5c6a119971096899caa2998648b82a62db57c629a1560453557146c2496b39a7f3f8de9
    d1fc827300
  184. test: Add test for maxtxfee option 0d101a340c
  185. Merge #16322: wallet: Fix -maxtxfee check by moving it to CWallet::CreateTransaction
    0d101a340c44841cbbc5982d55354b1787bc39e2 test: Add test for maxtxfee option (MarcoFalke)
    177550101b600ccb32886695326eb72cd9752c8b wallet: Remove unreachable code in CreateTransaction (MarcoFalke)
    5c1b9714cb0a13be28324f91f4ec9ca66a1de8c7 wallet: Fix -maxtxfee check by moving it to CWallet::CreateTransaction (João Barbosa)
    
    Pull request description:
    
      Follow up to #16257, this PR makes `bumpfee` aware of `-maxtxfee`.
    
      It also prevents dangling locked unspents when calling `fundrawtransaction` - because the previous check was after `LockCoin`.
    
    ACKs for top commit:
      MarcoFalke:
        re-ACK 0d101a340c44841cbbc5982d55354b1787bc39e2, only change is small test fixup
    
    Tree-SHA512: 3464b24ae7cd4e72ed41438c6661828ba1304af020f05da62720b23668ae734e16cf47c6d97e150cc84ef631ee099b16fc786c858f3d089905845437338fd512
    6c1e45c4c4
  186. Remove redundant pre-TopUpKeypool checks 96b6dd468a
  187. CreateTransaction calls KeepDestination on ReserveDestination before success d9ff862f2d
  188. Restrict lifetime of ReserveDestination to CWallet::CreateTransaction e10e1e8db0
  189. Merge #16361: Remove redundant pre-TopUpKeypool check
    96b6dd468a4cb6077d1a2267d620d99d39aac7d0 Remove redundant pre-TopUpKeypool checks (Gregory Sanders)
    
    Pull request description:
    
      TopUpKeypool already has a quick check for `IsLocked()`
    
    ACKs for top commit:
      achow101:
        ACK 96b6dd468a4cb6077d1a2267d620d99d39aac7d0 Reviewed the diff and checked that the `if (!IsLocked()) TopUpKeypool()` pattern is changed everywhere.
    
    Tree-SHA512: 36f5ae1be611404656ac855763e569fd3b5e932db8170f39ebda74300aa02062774b2c28ce6cf00f2ccc0e3550de58df36efa9097e24f0a51f2809b8a489c95a
    ff0aad8a40
  190. Merge #16244: Move wallet creation out of the createwallet rpc into its own function
    1aecdf2063cbe28d4715ae5ae1a7e51b860c9f4d Move wallet creation out of the createwallet rpc into its own function (Andrew Chow)
    
    Pull request description:
    
      Moves the wallet creation logic from within the `createwallet` rpc and into its own function within wallet.cpp.
    
    ACKs for top commit:
      jnewbery:
        ACK 1aecdf2063cbe28d4715ae5ae1a7e51b860c9f4d
      MarcoFalke:
        ACK 1aecdf2063cbe28d4715ae5ae1a7e51b860c9f4d
      Sjors:
        ACK 1aecdf2 with some suggestions for followup.
    
    Tree-SHA512: 8d26d7ff48db4f8fac12408a5a294f788b7f50a72e7eb4008fb74ff14d7400eb3970f8038a19f989eff55198fc11c0cf86f52231c62b9015eb777132edc8ea88
    4fcccdac78
  191. Merge #15649: Add ChaCha20Poly1305@Bitcoin AEAD
    bb326add9f38f2a8e5ce5ee29d98ce08038200d8 Add ChaCha20Poly1305@Bitcoin AEAD benchmark (Jonas Schnelli)
    99aea045d688059caf89c0e485fa427bd28eddd8 Add ChaCha20Poly1305@Bitcoin tests (Jonas Schnelli)
    af5d1b5f4a7b56628a76af21284c258d845894f0 Add ChaCha20Poly1305@Bitcoin AEAD implementation (Jonas Schnelli)
    
    Pull request description:
    
      This adds a new AEAD (authenticated encryption with additional data) construct optimised for small messages (like used in Bitcoins p2p network).
    
      Includes: #15519, #15512 (please review those first).
    
      The construct is specified here.
      https://gist.github.com/jonasschnelli/c530ea8421b8d0e80c51486325587c52#ChaCha20Poly1305Bitcoin_Cipher_Suite
    
      This aims for being used in v2 peer-to-peer messages.
    
    ACKs for top commit:
      laanwj:
        code review ACK bb326add9f38f2a8e5ce5ee29d98ce08038200d8
    
    Tree-SHA512: 15bcb86c510fce7abb7a73536ff2ae89893b24646bf108c6cf18f064d672dbbbea8b1dd0868849fdac0c6854e498f1345d01dab56d1c92031afd728302234686
    28d1353f48
  192. Merge #16227: Refactor CWallet's inheritance chain
    93ce4a0b6fb54efb1f424a71dfc09cc33307e5b9 Move WatchOnly stuff from SigningProvider to CWallet (Andrew Chow)
    8f5b81e6edae9cb22559545de63f391d97c15701 Remove CCryptoKeyStore and move all of it's functionality into CWallet (Andrew Chow)
    37a79a4fccbf6cd65a933594e24e59d36e674653 Move various SigningProviders to signingprovider.{cpp,h} (Andrew Chow)
    16f8096e911e4d59292240a17e2d4004f0500b9e Move KeyOriginInfo to its own header file (Andrew Chow)
    d9becff4e13da8e182631baa79b9794c03d44434 scripted-diff: rename CBasicKeyStore to FillableSigningProvider (Andrew Chow)
    a913e3f2fbeb1352fc66f334d4f5f7332ea89ad7 Move HaveKey static function from keystore to rpcwallet where it is used (Andrew Chow)
    c7797ec65544bd23a2e571b2892e1bf512f2a485 Remove CKeyStore and squash into CBasicKeyStore (Andrew Chow)
    1b699a5083b435c2b79f3951f94ac9f967d24f6c 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 https://github.com/bitcoin/bitcoin/pull/16227/commits/93ce4a0b6fb54efb1f424a71dfc09cc33307e5b9
    
    Tree-SHA512: 393dfd0623ad2dac38395eb89b862424318d6072f0b7083c92a0d207fd032c48b284f5f2cb13bc492f34557de350c5fee925da02e47daf011c5c6930a721b6d3
    735d6b57e7
  193. init: Use InitError for all errors in bitcoind/qt
    Also, remove unused <boost/thread.hpp> include (and others)
    fad2502240
  194. Call node->initError instead of InitError from GUI code
    Avoids GUI code calling a node function, and having to live in the same process
    as g_ui_signals and uiInterface global variables.
    fa6f402bde
  195. contrib: Add deterministic Guix builds. 3e80ec3ea9
  196. contrib: guix: Clarify SOURCE_DATE_EPOCH. 8dff3e48a9
  197. contrib: guix: Various improvements.
    - Clearer and more accurate prose
    - Pin `guix pull' to commit rather than branch
    - Just use `use-module' instead of `define-module'
    - Use `bash-minimal' instead of `bash'
    - Remove unneeded `tcsh' from manifest
    - Explicitly use `python-3.7'
    - Add comments about how {native,cross}-toolchains are produced and
      why
    cd3e947f50
  198. Fix autostart filenames on Linux ae311bc036
  199. contrib: guix: Additional clarifications re: substitutes 751549b52a
  200. Merge #15277: contrib: Enable building in Guix containers
    751549b52a9a4cd27389d807ae67f02bbb39cd7f contrib: guix: Additional clarifications re: substitutes (Carl Dong)
    cd3e947f50db7cfe05c05b368c25742193729a62 contrib: guix: Various improvements. (Carl Dong)
    8dff3e48a9e03299468ed3b342642f01f70da9db contrib: guix: Clarify SOURCE_DATE_EPOCH. (Carl Dong)
    3e80ec3ea9691c7c89173de922a113e643fe976b contrib: Add deterministic Guix builds. (Carl Dong)
    
    Pull request description:
    
      ~~**This post is kept updated as this project progresses. Use this [latest update link](https://github.com/bitcoin/bitcoin/pull/15277#issuecomment-497303718) to see what's new.**~~
    
      Please read the `README.md`.
    
      -----
    
      ### Guix Introduction
    
      This PR enables building bitcoin in Guix containers. [Guix](https://www.gnu.org/software/guix/manual/en/html_node/Features.html) is a transactional package manager much like Nix, but unlike Nix, it has more of a focus on [bootstrappability](https://www.gnu.org/software/guix/manual/en/html_node/Bootstrapping.html) and [reproducibility](https://www.gnu.org/software/guix/blog/tags/reproducible-builds/) which are attractive for security-sensitive projects like bitcoin.
    
      ### Guix Build Walkthrough
    
      Please read the `README.md`.
    
      [Old instructions no. 4](https://github.com/bitcoin/bitcoin/pull/15277#issuecomment-497303718)
    
      [Old instructions no. 3](https://github.com/bitcoin/bitcoin/pull/15277#issuecomment-493827011)
    
      [Old instructions no. 2](https://github.com/bitcoin/bitcoin/pull/15277#issuecomment-471658439)
    
      <details>
      <summary>Old instructions no. 1</summary>
      In this PR, we define a Guix [manifest](https://www.gnu.org/software/guix/manual/en/html_node/Invoking-guix-package.html#profile_002dmanifest) in `contrib/guix/manifest.scm`, which declares what packages we want in our environment.
    
      We can then invoke
      ```
      guix environment --manifest=contrib/guix/manifest.scm --container --pure --no-grafts --no-substitutes
      ```
      To have Guix:
      1. Build an environment containing the packages we defined in our `contrib/guix/manifest.scm` manifest from the Guix bootstrap binaries (see [bootstrappability](https://www.gnu.org/software/guix/manual/en/html_node/Bootstrapping.html) for more details).
      2. Start a container with that environment that has no network access, and no access to the host's filesystem except to the `pwd` that it was started in.
      3. Drop you into a shell in that container.
    
      > Note: if you don't want to wait hours for Guix to build the entire world from scratch, you can eliminate the `--no-substitutes` option to have Guix download from available binary sources. Note that this convenience doesn't necessarily compromise your security, as you can check that a package was built correctly after the fact using `guix build --check <packagename>`
    
      Therefore, we can perform a build of bitcoin much like in Gitian by invoking the following:
    
      ```
      make -C depends -j"$(nproc)" download && \
          cat contrib/guix/build.sh | guix environment --manifest=contrib/guix/manifest.scm --container --pure --no-grafts --no-substitutes
      ```
    
      We don't include `make -C depends -j"$(nproc)" download` inside `contrib/guix/build.sh` because `contrib/guix/build.sh` is run inside the container, which has no network access (which is a good thing).
      </details>
    
      ### Rationale
    
      I believe that this represents a substantial improvement for the "supply chain security" of bitcoin because:
    
      1. We no longer have to rely on Ubuntu for our build environment for our releases ([oh the horror](https://github.com/bitcoin/bitcoin/blob/72bd4ab867e3be0d8410403d9641c08288d343e3/contrib/gitian-descriptors/gitian-linux.yml#L10)), because Guix builds everything about the container, we can perform this on almost any Linux distro/system.
      2. It is now much easier to determine what trusted binaries are in our supply chain, and even make a nice visualization! (see [bootstrappability](https://www.gnu.org/software/guix/manual/en/html_node/Bootstrapping.html)).
      3. There is active effort among Guix folks to minimize the number of trusted binaries even further. OriansJ's [stage0](https://github.com/oriansj/stage0), and janneke's [Mes](https://www.gnu.org/software/mes/) all aim to achieve [reduced binary boostrap](http://joyofsource.com/reduced-binary-seed-bootstrap.html) for Guix. In fact, I believe if OriansJ gets his way, we will end up some day with only a single trusted binary: hex0 (a ~500 byte self-hosting hex assembler).
    
      ### Steps to Completion
    
      - [x] Successfully build bitcoin inside the Guix environment
      - [x] Make `check-symbols` pass
      - [x] Do the above but without nasty hacks
      - [x] Solve some of the more innocuous hacks
      - [ ] Make it cross-compile (HELP WANTED HERE)
        - [x] Linux
          - [x] x86_64-linux-gnu
          - [x] i686-linux-gnu
          - [x] aarch64-linux-gnu
          - [x] arm-linux-gnueabihf
          - [x] riscv64-linux-gnu
        - [ ] OS X
          - [ ] x86_64-apple-darwin14
        - [ ] Windows
          - [ ] x86_64-w64-mingw32
      - [ ] Maybe make importer for depends syntax
      - [ ] Document build process for future releases
      - [ ] Extra: Pin the revision of Guix that we build with with Guix [inferiors](https://www.gnu.org/software/guix/manual/en/html_node/Inferiors.html)
    
      ### Help Wanted
    
      [Old content no. 3](https://github.com/bitcoin/bitcoin/pull/15277#issuecomment-483318210)
    
      [Old content no. 2](https://github.com/bitcoin/bitcoin/pull/15277#issuecomment-471658439)
    
      <details>
      <summary>Old content no. 1</summary>
      As of now, the command described above to perform a build of bitcoin a lot like Gitian works, but fails at the `check-symbols` stage. This is because a few dynamic libraries are linked in that shouldn't be.
    
      Here's what `ldd src/bitcoind` looks like when built in a Guix container:
      ```
      	linux-vdso.so.1 (0x00007ffcc2d90000)
      	libdl.so.2 => /gnu/store/h90vnqw0nwd0hhm1l5dgxsdrigddfmq4-glibc-2.28/lib/libdl.so.2 (0x00007fb7eda09000)
      	librt.so.1 => /gnu/store/h90vnqw0nwd0hhm1l5dgxsdrigddfmq4-glibc-2.28/lib/librt.so.1 (0x00007fb7ed9ff000)
      	libstdc++.so.6 => /gnu/store/4sqps8dczv3g7rwbdibfz6rf5jlk7w90-gcc-5.5.0-lib/lib/libstdc++.so.6 (0x00007fb7ed87c000)
      	libpthread.so.0 => /gnu/store/h90vnqw0nwd0hhm1l5dgxsdrigddfmq4-glibc-2.28/lib/libpthread.so.0 (0x00007fb7ed85b000)
      	libm.so.6 => /gnu/store/h90vnqw0nwd0hhm1l5dgxsdrigddfmq4-glibc-2.28/lib/libm.so.6 (0x00007fb7ed6da000)
      	libgcc_s.so.1 => /gnu/store/4sqps8dczv3g7rwbdibfz6rf5jlk7w90-gcc-5.5.0-lib/lib/libgcc_s.so.1 (0x00007fb7ed6bf000)
      	libc.so.6 => /gnu/store/h90vnqw0nwd0hhm1l5dgxsdrigddfmq4-glibc-2.28/lib/libc.so.6 (0x00007fb7ed506000)
      	/gnu/store/h90vnqw0nwd0hhm1l5dgxsdrigddfmq4-glibc-2.28/lib/ld-linux-x86-64.so.2 => /usr/lib64/ld-linux-x86-64.so.2 (0x00007fb7ee3a0000)
      ```
    
      And here's what it looks in one of our releases:
      ```
      	linux-vdso.so.1 (0x00007ffff52cd000)
      	libpthread.so.0 => /usr/lib/libpthread.so.0 (0x00007f87726b4000)
      	librt.so.1 => /usr/lib/librt.so.1 (0x00007f87726aa000)
      	libm.so.6 => /usr/lib/libm.so.6 (0x00007f8772525000)
      	libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0x00007f877250b000)
      	libc.so.6 => /usr/lib/libc.so.6 (0x00007f8772347000)
      	/lib64/ld-linux-x86-64.so.2 => /usr/lib64/ld-linux-x86-64.so.2 (0x00007f8773392000)
      ```
    
      ~~I suspect it is because my script does not apply the gitian-input patches [described in the release process](https://github.com/bitcoin/bitcoin/blob/master/doc/release-process.md#fetch-and-create-inputs-first-time-or-when-dependency-versions-change) but there is no description as to how these patches are applied.~~ It might also be something else entirely.
    
      Edit: It is something else. It appears that the gitian inputs are only used by [`gitian-win-signer.yml`](https://github.com/bitcoin/bitcoin/blob/d6e700e40f861ddd6743f4d13f0d6f6bc19093c2/contrib/gitian-descriptors/gitian-win-signer.yml#L14)
      </details>
    
      ### How to Help
    
      1. Install Guix on your distro either [from source](https://www.gnu.org/software/guix/manual/en/html_node/Requirements.html) or perform a [binary installation](https://www.gnu.org/software/guix/manual/en/html_node/Binary-Installation.html#Binary-Installation)
      2. Try out my branch and the command described above!
    
    ACKs for top commit:
      MarcoFalke:
        Thanks for the replies. ACK 751549b52a9a4cd27389d807ae67f02bbb39cd7f
      laanwj:
        ACK 751549b52a9a4cd27389d807ae67f02bbb39cd7f
    
    Tree-SHA512: 50e6ab58c6bda9a67125b6271daf7eff0ca57d0efa8941ed3cd951e5bf78b31552fc5e537b1e1bcf2d3cc918c63adf19d685aa117a0f851024dc67e697890a8d
    3453cf26db
  201. Remove unused bits from the service flags enum fa0d0ff6e1
  202. Merge #16334: test: rpc_users: Also test rpcauth.py with password.
    e263a343d4b6a2622df6bb734cd9d51a0d20a663 test: rpc_users: Make variable names more clear. (Carl Dong)
    830dc2dd0fccb7f3ec49ff7233a188d92c541e7e test: rpc_users: Also test rpcauth.py with specified password. (Carl Dong)
    c73d871799982ca29c29cef90e1a78814cf34019 test: rpc_users: Add function for testing auth params. (Carl Dong)
    604e2a997ff26202dd0fa1932d60dc14cc53ac6d test: rpc_users: Add function for auth'd requests. (Carl Dong)
    
    Pull request description:
    
      Fixes #14758
    
      First two commits are tidy-ups which I feel are worthwhile as they are very straightforward, cut down the file by 50%, and made the final diff more minimal. Happy to squash after review.
    
    ACKs for top commit:
      laanwj:
        ACK e263a343d4b6a2622df6bb734cd9d51a0d20a663
    
    Tree-SHA512: aa75c48570a87060238932d4c68e17234e158077f6195fb4917367e1ecc565e3cd8dd0ae51f9159ddd3d03742739680391bc1246454302db22d4a608c0633e80
    536590f358
  203. test: enable passing wildcards with path to test runner
    Currently, passing wildcard testname args to the test runner from outside the `test/functional/` directory does not work. See this recent IRC discussion for more background: http://www.erisian.com.au/bitcoin-core-dev/log-2019-07-10.html#l-262 (lines 262 to 323).
    
    This small change enables passing multiple wildcards with paths, as long as the paths are coherent. Examples:
      - test/functional/test_runner.py test/functional/wallet*
      - functional/test_runner.py functional/wallet*
      - test/functional/test_runner.py ./test/functional/tool* test/functional/mempool*
    
    A current limitation that this PR does not change: 9 test files with arguments in their name are not picked up by wildcard search.
    
    - Squashed commit: non-mutating version
    
    - Squashed commit: minor code optimisation
    6a7a70b8cf
  204. doc: describe how to pass wildcard names to test runner e142ee03e7
  205. Merge #15282: test: Replace hard-coded hex tx with class in test framework
    8f250ab7882a852f1b1947cef4837d2de5ca6913 TEST: Replace hard-coded hex tx with classes (Steven Roose)
    
    Pull request description:
    
      Came across these breaking Elements.
    
    ACKs for top commit:
      MarcoFalke:
        ACK 8f250ab7882a852f1b1947cef4837d2de5ca6913
      instagibbs:
        utACK https://github.com/bitcoin/bitcoin/commit/8f250ab7882a852f1b1947cef4837d2de5ca6913
    
    Tree-SHA512: e8615dad4cda0beea4b0c7d4951a467fb9882a0a64d49c9b5ecf167369ea62a3fe5348e2401153162b0ccadecdb128492c94be36ebb881c3c42659626d86eda8
    0822b44d8a
  206. docs: Improve netbase comments
    - Improve and add various Lookup* docs
    - Improve InterruptibleRecv docs
    - Improve Socks5 docs
    - Add CreateSocket docs
    - Add ConnectSocketDirectly docs
    - Add SetNameProxy docs
    - Add ConnectThroughProxy docs
    - Add LookupSubNet docs
    c7f6ce74d3
  207. Merge #15824: docs: Improve netbase comments
    c7f6ce74d3a5cf2a0c5bac20eab1efd997175a72 docs: Improve netbase comments (Carl Dong)
    
    Pull request description:
    
      Second in a series of PRs documenting the net stack. Contributed with sincere thanks to sipa, laanwj, and gmaxwell for providing much of the history, context, and rationale.
    
    ACKs for top commit:
      laanwj:
        ACK c7f6ce74d3a5cf2a0c5bac20eab1efd997175a72
    
    Tree-SHA512: ad83054d3b8d0c8c3fb55be011bcf294176e7509513bf61326866afd53e8159644e0d59bb3a2f404717f525cbf736096d4c1990e61cfd89845d51fa6b5394b7c
    6d37ed888e
  208. qa: Add --filter option to test_runner.py 1a62425260
  209. Merge #16380: Remove unused bits from the service flags enum
    fa0d0ff6e1bee60fde63724ae28a51aac5a94d4a Remove unused bits from the service flags enum (MarcoFalke)
    
    Pull request description:
    
      Remove all bits that have no BIP specification nor can be observed on the active network
    
    ACKs for top commit:
      practicalswift:
        utACK fa0d0ff6e1bee60fde63724ae28a51aac5a94d4a
      LarryRuane:
        utACK fa0d0ff6e1bee60fde63724ae28a51aac5a94d4a
      promag:
        ACK fa0d0ff6e1bee60fde63724ae28a51aac5a94d4a.
      laanwj:
        ACK fa0d0ff6e1bee60fde63724ae28a51aac5a94d4a
    
    Tree-SHA512: 6342017bfd4c2a39c998fbb02497931b11892e1cb60fc13b948b91812f281b605a25a3fdc0d5358dff18da4e82eb4eb4de95c43c7e76ecb331c1c3985443dd21
    29082e8f40
  210. Merge #16390: qa: Add --filter option to test_runner.py
    1a6242526093424947eb49f3416dc0c6bc9fc3a8 qa: Add --filter option to test_runner.py (João Barbosa)
    
    Pull request description:
    
      Allows to run functional tests like:
      ```sh
      test/functional/test_runner.py --filter wallet
      ```
    
    ACKs for top commit:
      jonatack:
        ACK 1a6242526093424947eb49f3416dc0c6bc9fc3a8
    
    Tree-SHA512: 53199e01da3b2e0112843c1c68c69d8fd7fc9bb6a6cb45a81c324973c4824ebf5fef574f9efab81a64d52e397e25d979ae40f0eaba35afb771e80012768f0b08
    8f9725c83f
  211. Merge #16194: refactor: share blockmetadata with BlockManager
    682a1d0f2004d808b87b3106d0dfae547005e638 refactoring: remove mapBlockIndex global (James O'Beirne)
    55d525ab9004631d30dcc60a1ec5d9cd6c6afe56 refactoring: make pindexBestInvalid internal to validation.cpp (James O'Beirne)
    4ed55dfcd7894fd5ba6395f244a17ab1f8e786d4 refactoring: add block_index_candidates arg to LoadBlockIndex (James O'Beirne)
    613c46fe9e39f55b0f0daa18fee20b4120db2539 refactoring: move block metadata structures into BlockManager (James O'Beirne)
    
    Pull request description:
    
      This is part of the [assumeutxo project](https://github.com/bitcoin/bitcoin/projects/11):
    
      Parent PR: #15606
      Issue: #15605
      Specification: https://github.com/jamesob/assumeutxo-docs/tree/2019-04-proposal/proposal
    
      ---
    
      Under an assumeutxo model, we have multiple CChainState instances in use at once in order to support background validation. Currently, each CChainState instance has its own mapBlockIndex, a collection of linked block headers, in addition to a few other data structures that are related to maintenance of the block tree but not necessarily to any given chainstate.
    
      In order to avoid duplicating this data across chainstates, this change moves chainstate-agnostic block metadata (and related behavior) into a class, `BlockManager`. Chainstates are parameterized with a reference to a blockmanager instance and in practice they share the same instance.
    
      Most of this change is conceptually move-only, though the diff is somewhat muddled. The first commit can be reviewed slightly more easily with `--color-moved=dimmed_zebra`. Admittedly, that commit is pretty unwieldy; I tried to split it up after the fact with `git add --patch`, but that was difficult because of git's inability to split hunks past a certain point. Some of the moves also ended up being obscured when done over separate commits.
    
    ACKs for top commit:
      MarcoFalke:
        ACK 682a1d0f2004d808b87b3106d0dfae547005e638
      ryanofsky:
        utACK 682a1d0f2004d808b87b3106d0dfae547005e638, only changes since last review were rebase and fixing conflict on a moved line
      ariard:
        utACK 682a1d0. Most of the changes are move-only, with main problem being to avoid creating circular dependencies between `BlockManager` and `CChainState`. Tested, comments are mostly nits, feel free to ignore them
    
    Tree-SHA512: 738d8d06539ba53acf4bd2d48ae000473e645bbc4e63d798d55d247a4d5a4f781b73538ed590f6407be9ab402ea9d395570ea20bff0a4b9ce747bcc1600c5108
    8f604361eb
  212. Merge #15891: test: Require standard txs in regtest by default
    fa89badf887dcc01e5bdece248b5e7d234fee227 test: Require standard txs in regtest (MarcoFalke)
    fa9b4191609c3ef75e69d391eb91e4d5c1e0bcf5 test: Add test that mainnet requires standard txs (MarcoFalke)
    fa613ca0a8f99c4771859de9e571878530d3ecb5 chainparams: Remove unused fMineBlocksOnDemand (MarcoFalke)
    
    Pull request description:
    
      I don't see a reason why regtest should allow non-standard txs, as it makes testing mainnet behaviour such as #15846 unnecessarily hard and unintuitive.
    
      Of course, testnet policy remains unchanged to allow propagation of non-standard txs.
    
    ACKs for top commit:
      ajtowns:
        ACK fa89badf887dcc01e5bdece248b5e7d234fee227
    
    Tree-SHA512: c4c675affb054868850bd2683aa07f4c741a448cbacb2ea8334191e105f426b0790fe6a468be61e9c5880d24154f7bf1c7075051697172dce92180c1bc3a1c90
    24dbcf3808
  213. Merge #16208: wallet: Consume ReserveDestination on successful CreateTransaction
    e10e1e8db043e9b7c113e07faf408f337c1b732d Restrict lifetime of ReserveDestination to CWallet::CreateTransaction (Gregory Sanders)
    d9ff862f2d24784ee081a8f62a76ffdfe409c10a CreateTransaction calls KeepDestination on ReserveDestination before success (Gregory Sanders)
    
    Pull request description:
    
      The typical usage pattern of `ReserveDestination` is to explicitly `KeepDestination`, or `ReturnDestination` when it's detected it will not be used.
    
      Implementers such as myself may fail to complete this pattern, and could result in key re-use: https://github.com/bitcoin/bitcoin/pull/15557#discussion_r271956393
    
      Since ReserveDestination is currently only used directly in the `CreateTransaction`/`CommitTransaction` flow(or fee bumping where it's just used in `CreateTransaction`), I instead make the assumption that if a transaction is returned by `CreateTransaction` it's highly likely that it will be accepted by the caller, and the `ReserveDestination` kept. This simplifies the API as well. There are very few cases where this would not be the case which may result in keys being burned.
    
      Those failure cases appear to be:
      `CommitTransaction` failing to get the transaction into the mempool
      Belt and suspenders check in `WalletModel::prepareTransaction`
    
      Alternative to https://github.com/bitcoin/bitcoin/pull/15796
    
    ACKs for top commit:
      achow101:
        ACK e10e1e8db043e9b7c113e07faf408f337c1b732d Reviewed the diff
      stevenroose:
        utACK e10e1e8db043e9b7c113e07faf408f337c1b732d
      meshcollider:
        utACK e10e1e8db043e9b7c113e07faf408f337c1b732d
    
    Tree-SHA512: 78d047a00f39ab41cfa297052cc1e9c224d5f47d3d2299face650d71827635de077ac33fb4ab9f7dc6fc5a27f4a68415a1bc9ca33a3cb09a78f4f15b2a48411b
    459baa1756
  214. fix: tor: Call event_base_loopbreak from the event's callback a981e749e6
  215. depends: xproto is only directly needed by libXau 1ec30b8fbe
  216. depends: qt: Explicitly stop using Xlib/libX11
    Previously, in 683b7d7a3fc1b9240333faf3d04497aa61583016 and
    0e752637a26cf75187864a466db9a92540a2d3c8, we accidentally broke QT's
    ability to pick up Xlib thru the config.gui.tests.xlib configuration
    test, which also means that config.gui.libraries.xcb_xlib wasn't run.
    
    This resulted in a QT build that was implicitly -no-xcb-lib and
    -no-feature-xlib.
    
    This is actually a desired behaviour, as it means less required shared
    objects for our final bitcoin-qt binary. Specifically, it eliminated the
    libX11-xcb.so.1 and libX11.so.6 requirements.
    
    In this commit, we explicitly build without Xlib. We should continue to
    track upstream ticket https://bugreports.qt.io/browse/QTBUG-61452 which
    talks about adding a -no-xlib (non-hidden) flag instead of the
    -no-feature-xlib (hidden) flag.
    9a01ab04e1
  217. depends: libX11: Make package headers-only
    We're no longer building QT with libX11/XLib, however, libX11/XLib
    headers are still required for parts of QT. In this commit we add a
    minimal configure.ac for libX11/XLib that is headers-only.
    
    This change allows us to remove all of libX11/XLib's dependencies.
    aa53cb7a2f
  218. build-aux: Remove check for x11-xcb
    We're no longer building QT with libX11/XLib, so it doesn't make sense
    to check for the x11-xcb package.
    689d3b4a03
  219. depends: libXext isn't needed by anyone
    libXext was only needed (as a library) by QT when it was using
    XLib/libX11 (as a library), now that we're building QT without
    XLib/libX11, we can safely remove libXext.
    924569914e
  220. symbol-check: Disallow libX11-*.so.* shared libraries
    They should no longer be needed as we build QT without libX11/XLib
    libraries now.
    65f8da08df
  221. Merge #16374: test: Enable passing wildcard test names to test runner from root
    e142ee03e7a139168aa1dbf5910c616f60d25042 doc: describe how to pass wildcard names to test runner (Jon Atack)
    6a7a70b8cf05a82737c72020fd2b0eebc97cb5e4 test: enable passing wildcards with path to test runner (Jon Atack)
    
    Pull request description:
    
      Currently, passing wildcard testname args to the test runner from outside the test/functional/ directory does not work, even though developers expect it to. See these recent IRC discussions for more background: http://www.erisian.com.au/bitcoin-core-dev/log-2019-07-10.html#l-262 (lines 262 to 323) and http://www.erisian.com.au/bitcoin-core-dev/log-2019-07-11.html#l-134.
    
      1. [BUGFIX] Enable passing wildcards with paths. Examples:
          - `test/functional/test_runner.py test/functional/wallet*`
          - `functional/test_runner.py functional/wallet*`
          - `test/functional/test_runner.py ./test/functional/tool* test/functional/mempool*`
          - A current limitation this PR does not change: 9 test files with arguments in their filename are not picked up by wildcard search.
    
      2. [Docs] Describe how to pass wildcard names (multiple and with paths) to the test runner in test/README.md.
    
    ACKs for top commit:
      jnewbery:
        tested ACK e142ee03e7a139168aa1dbf5910c616f60d25042
      jachiang:
        Tested ACK https://github.com/bitcoin/bitcoin/commit/e142ee03e7a139168aa1dbf5910c616f60d25042. Thanks a lot for this fix!
      MarcoFalke:
        ACK e142ee03e7a139168aa1dbf5910c616f60d25042, fine with me
    
    Tree-SHA512: cb3d994880cdc9b8918546b573a25faa5b4c7339826ac7cfe20f076aac6e731a34271609c0cf5a7ee5e4a2d5ae205298319d24bf36ef5b5d569a1a0c57883e54
    0515406acb
  222. net: Make poll in InterruptibleRecv only filter for POLLIN events.
    poll should block until there is data to be read or the timeout expires.
    
    Filtering for the POLLOUT event causes poll to return immediately which leads to high CPU usage when trying to connect to non-responding peers through tor.
    
    Removing POLLOUT matches how select is used when USE_POLL isn't defined.
    a52818cc56
  223. Merge #16405: fix: tor: Call event_base_loopbreak from the event's callback
    a981e749e6553487cd48eda28e590f769e81c85c fix: tor: Call event_base_loopbreak from the event's callback (João Barbosa)
    
    Pull request description:
    
      Calling `event_base_loopbreak` before `event_base_dispatch` has no effect. Fix this by calling `event_base_loopbreak` from the event's callback. From the [documentation](http://www.wangafu.net/~nickm/libevent-2.0/doxygen/html/event_8h.html#a07a7599e478e4031fa8cf52e26d8aa1e):
    
      > event_base_loop() will abort the loop after the next event is completed; event_base_loopbreak() is typically invoked from this event's callback. This behavior is analogous to the "break;" statement.
    
      This can be tested by running the following with and without this change:
      ```sh
      bitcoind -- -regtest -proxy=127.0.0.1:9050 -listen=1 -bind=127.0.0.1 -whitebind=127.0.0.1:0
      ```
    
      Fixes #16376.
    
    ACKs for top commit:
      laanwj:
        code review ACK a981e749e6553487cd48eda28e590f769e81c85c
      fanquake:
        ACK a981e749e6553487cd48eda28e590f769e81c85c
    
    Tree-SHA512: 328fe71366404d5be8177d7081d5b4868cee73412df631a1865d24fb1c153427210762738109e06b737f037f4c68966812fba041831bb9e8129861f19ce61a63
    65d12110d4
  224. Merge #16379: Fix autostart filenames on Linux for testnet/regtest
    ae311bc036e9461187f5396751d2e63a71248715 Fix autostart filenames on Linux (Hennadii Stepanov)
    
    Pull request description:
    
      Currently, on master the `bitcoin-test.lnk` and `bitcoin-regtest.lnk` files do not work as autostart application `.desktop` files.
    
      This PR fixes it.
    
      Refs:
      - #7045
      - [Autostart Of Applications During Startup](https://standards.freedesktop.org/autostart-spec/autostart-spec-latest.html)
    
    ACKs for top commit:
      promag:
        utACK ae311bc, weird why extension `.lnk` was used in #7045.
      laanwj:
        Code review ACK ae311bc036e9461187f5396751d2e63a71248715
    
    Tree-SHA512: 210cc346600d52b0a262c81ed5f258365a3cea2e5522f4b5f4798fd3b54f45ed82aba68eefae59a6b6f1d8e4d00221476c23bdffc038f16f2f45c1acc837f522
    e5abb59a9a
  225. QA: Fix race condition in wallet_encryption test 024ecd7e01
  226. Add release notes for DEFAULT_BLOOM change bead32e31e
  227. gitignore: Actually pay attention to depends patches
    There was a previous attempt to achieve this, and it was bad. This
    works.
    222e6cc520
  228. depends: qt: Patch to remove dep on libX11
    We can actually patch QT to remove its dependency on libX11's headers.
    It turns it this wasn't that hard.
    0c55d8b581
  229. test: remove redundant setup in addrman_tests 5c3c24cf9e
  230. Merge #16420: QA: Fix race condition in wallet_encryption test
    024ecd7e01d436ad7de608e571a20c7284b3951b QA: Fix race condition in wallet_encryption test (Jonas Schnelli)
    
    Pull request description:
    
      There is some imprecision probably in the internal HTTPRPCTimer class (haven't exactly figured out where).
      But we can't expect that waiting excatly 2 seconds right after calling `walletpassphrase(2)` will result in a locked wallet due to the nature how we internally handle threads/timers.
    
      The wallet_encryption test fails regularely in CIs.
    
      Here is a logged session:
      ```shell
       node0 2019-07-18T18:51:22.569739Z [] ThreadRPCServer method=walletpassphrase user=__cookie__ 
       node0 2019-07-18T18:51:22.628656Z [] queue run of timer lockwallet() in 2 seconds (using HTTP) 
       node0 2019-07-18T18:51:22.629002Z [] Received a POST request for / from 127.0.0.1:46898 
       node0 2019-07-18T18:51:22.629081Z [] ThreadRPCServer method=dumpprivkey user=__cookie__ 
       node0 2019-07-18T18:51:24.445620Z [] Flushing wallet.dat 
       node0 2019-07-18T18:51:24.451421Z [] Flushed wallet.dat 6ms 
       node0 2019-07-18T18:51:24.631703Z [] Received a POST request for / from 127.0.0.1:46898 
       node0 2019-07-18T18:51:24.631737Z [] ThreadRPCServer method=dumpprivkey user=__cookie__ 
       test  2019-07-18T18:51:24.632000Z TestFramework (ERROR): Assertion failed 
                                         Traceback (most recent call last):
                                           File "/home/ubuntu/src/test/functional/test_framework/test_framework.py", line 193, in main
                                             self.run_test()
                                           File "/home/ubuntu/src/test/functional/wallet_encryption.py", line 53, in run_test
                                             assert_raises_rpc_error(-13, "Please enter the wallet passphrase with walletpassphrase first", self.nodes[0].dumpprivkey, address)
      ```
    
    ACKs for top commit:
      promag:
        ACK 024ecd7e01d436ad7de608e571a20c7284b3951b, simple fix, one second shouldn't hurt.
      MarcoFalke:
        ACK 024ecd7e01d436ad7de608e571a20c7284b3951b
      fanquake:
        ACK 024ecd7e01d436ad7de608e571a20c7284b3951b
    
    Tree-SHA512: 0cda1b8969b084bb765d2b35e90a8611c565ee458a7be1f2dde675f8ddbd9b9e421514547a7683f836e2c996e0538eb66b8c5b935b5a81e9319fb2be27624374
    89d7229c9c
  231. Merge #16152: Disable bloom filtering by default.
    bead32e31e399090af30b2ee3539995d4105a66d Add release notes for DEFAULT_BLOOM change (Matt Corallo)
    f27309f55c4fa2b115525d72abb280757a568709 Move DEFAULT_PEERBLOOMFILTERS from validation.h to net_processing.h (Matt Corallo)
    5efcb772838e404ca5757818d5548efcb872724b Disable bloom filtering by default. (Matt Corallo)
    
    Pull request description:
    
      BIP 37 bloom filters have been well-known to be a significant DoS
      target for some time. However, in order to provide continuity for
      SPV clients relying on it, the NODE_BLOOM service flag was added,
      and left as a default, to ensure sufficient nodes exist with such a
      flag.
    
      NODE_BLOOM is, at this point, well-established and, as long as
      there exist 0.18 nodes with default config (which I'd anticipate
      will be true for many years), will be available from some peers. By
      that time, the continued slowdown of BIP 37-based filtering will
      likely have rendered it useless (though this is already largely the
      case). Further, BIP 37 was deliberately never updated to support
      witness-based filtering as newer wallets are expected to migrate to
      some yet-to-be-network-exposed filters.
    
    ACKs for top commit:
      jnewbery:
        ACK bead32e31e399090af30b2ee3539995d4105a66d
      kallewoof:
        ACK bead32e31e399090af30b2ee3539995d4105a66d
    
    Tree-SHA512: ecd901898e8efe1a7c82b471af0acc2373c2282ac633eb58d9aae7c35deda1999d0f79fb0485e6cecbda7246aeda00206cd82c7fa36866e2ac64705ba93f9390
    59ce537a49
  232. Merge #16422: test: remove redundant setup in addrman_tests
    5c3c24cf9eab7bf19a9201599e93955cace5c154 test: remove redundant setup in addrman_tests (zenosage)
    
    Pull request description:
    
      #10765 make this default behavior. No reason to keep these line.
    
    Top commit has no ACKs.
    
    Tree-SHA512: 545eea9c2d0741a75708f288f2c8752534ecaa6d54a9d014ef9afa295b0d075007704b64809eec090023703f47753e8ec755d22c9ccecf57b75f6898f6b708dd
    c7b7cf299a
  233. Merge #16412: net: Make poll in InterruptibleRecv only filter for POLLIN events.
    a52818cc5633494992da7d1dc8fdb04b4a1b7c29 net: Make poll in InterruptibleRecv only filter for POLLIN events. poll should block until there is data to be read or the timeout expires. (tecnovert)
    
    Pull request description:
    
      poll should block until there is data to be read or the timeout expires.
    
      Filtering for the POLLOUT event causes poll to return immediately which leads to high CPU usage when trying to connect to non-responding peers through tor.
    
      When USE_POLL is not defined select is used with the writefds parameter set to nullptr.
      Removing POLLOUT causes the behavior of poll to match that of select.
    
      Fixes: #16004.
    
    ACKs for top commit:
      laanwj:
        code review ACK a52818cc5633494992da7d1dc8fdb04b4a1b7c29
      jonasschnelli:
        utACK a52818cc5633494992da7d1dc8fdb04b4a1b7c29
    
    Tree-SHA512: 69934cc14e3327c7ff7f6c5942af8761e865220b2540d74ea1e176adad326307a73860417dddfd32d601b5c0e9e2ada1848bd7e3d27b0b7a9b42f11129af8eb1
    f4b1fe7165
  234. Merge #15681: [mempool] Allow one extra single-ancestor transaction per package
    50cede3f5a4d4fbfbb7c420b94e661a6a159bced [mempool] Allow one extra single-ancestor transaction per package (Matt Corallo)
    
    Pull request description:
    
      This implements the proposed policy change from [1], which allows
      certain classes of contract protocols involving revocation
      punishments to use CPFP. Note that some such use-cases may still
      want some form of one-deep package relay, though even this alone
      may greatly simplify some lightning fee negotiation.
    
      [1] https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2018-November/016518.html
    
    ACKs for top commit:
      ajtowns:
        ACK 50cede3f5a4d4fbfbb7c420b94e661a6a159bced -- looked over code again, compared with previous commit, compiles, etc.
      sdaftuar:
        ACK 50cede3f5a4d4fbfbb7c420b94e661a6a159bced
      ryanofsky:
        utACK 50cede3f5a4d4fbfbb7c420b94e661a6a159bced. Changes since last review: adding EXTRA_DESCENDANT_TX_SIZE_LIMIT constant, changing max ancestor size from 1,000,000 to nLimitAncestorSize constant (101,000), fixing test comment and getting rid of unused test node.
    
    Tree-SHA512: b052c2a0f384855572b4579310131897b612201214b5abbb225167224e4f550049e300b471dbf320928652571e92ca2d650050b7cf39ac92b3bc1d2bcd386c1c
    51a6e2c419
  235. doc: Update bips 35, 37 and 111 status fa56b21c74
  236. move-onlyish: move CCoinsViewErrorCatcher out of init.cpp
    and into coins.cpp. This move is necessary so that we can later include a
    CCoinsViewErrorCatcher instance under CChainState.
    
    Co-authored-by: MarcoFalke <falke.marco@gmail.com>
    4f050b91c7
  237. travis: Print memory and number of cpus fa4010e112
  238. Merge #16438: travis: Print memory and number of cpus
    fa4010e1129f2a4f3348f7a02896021df9270ee0 travis: Print memory and number of cpus (MarcoFalke)
    
    Pull request description:
    
      For some reason it shows a different value than the one they advertise. This might be related to the flood of sanitizer warnings we see.
    
      https://docs.travis-ci.com/user/reference/overview/#virtualisation-environment-vs-operating-system
    
    Top commit has no ACKs.
    
    Tree-SHA512: 285bdf6e7fe29990b980acf64ca658f4319d17c770f45cfd4339244e6b7ec11b7a39b9c4a54e71415c32fef08ee5da75ab7171861905494d633631779480c146
    67737cf22a
  239. Merge #16430: doc: Update bips 35, 37 and 111 status
    fa56b21c744577eb5d2085fd6104cbc3dc62d677 doc: Update bips 35, 37 and 111 status (MarcoFalke)
    
    Pull request description:
    
      Follow-up to
    
      * #16152: Disable bloom filtering by default
    
    ACKs for top commit:
      laanwj:
        ACK fa56b21c744577eb5d2085fd6104cbc3dc62d677, thanks for keeping this file up to date
      fanquake:
        ACK fa56b21c744577eb5d2085fd6104cbc3dc62d677
    
    Tree-SHA512: 50c17067abbba096e8604b8abccbd0474ecc2dca973935751720c79a023a2d517bb025bb6c36d4fb0d29b7338322af7ae1c0d5a9aaf2712000d9d336c898c204
    ad4391ca38
  240. Merge #16355: refactor: move CCoinsViewErrorCatcher out of init.cpp
    4f050b91c706181084b9288b8a87b7b637e4e4f7 move-onlyish: move CCoinsViewErrorCatcher out of init.cpp (James O'Beirne)
    
    Pull request description:
    
      This is part of the [assumeutxo project](https://github.com/bitcoin/bitcoin/projects/11):
    
      Parent PR: #15606
      Issue: #15605
      Specification: https://github.com/jamesob/assumeutxo-docs/tree/2019-04-proposal/proposal
    
      ---
    
      This change moves `CCoinsViewErrorCatcher` out of `init` and into `coins` so that it can later be included in [a `CoinsView` instance](https://github.com/bitcoin/bitcoin/pull/15606/commits/91284964ef34b90ee6c626137973d2c15e7b25da#diff-349fbb003d5ae550a2e8fa658e475880R504) under `CChainState`.
    
      Instead of hardcoding read failure behavior that has knowledge of qt, it accepts error callbacks via `AddReadErrCallback()`.
    
    ACKs for top commit:
      dongcarl:
        re-ACK 4f050b91c706181084b9288b8a87b7b637e4e4f7
      ryanofsky:
        utACK 4f050b91c706181084b9288b8a87b7b637e4e4f7. Only change since last review is fixing const.
    
    Tree-SHA512: eaba21606d15d2b8d0e3db7cec57779ce181af953db1ef4af80a0bc1dfb57923d0befde9d61b7be55c32224744f7fb6bd47d4e4c72f3ccfe6eaf0f4ae3765c17
    848f245d04
  241. Merge #16408: depends: Prune X packages
    0c55d8b58186ba69fffc147cd02b174450dac578 depends: qt: Patch to remove dep on libX11 (Carl Dong)
    222e6cc52075cf6f866ce4a2e5900f0d6358f903 gitignore: Actually pay attention to depends patches (Carl Dong)
    65f8da08df601ac98bad6f638392343fd564c0b9 symbol-check: Disallow libX11-*.so.* shared libraries (Carl Dong)
    924569914e6079763fd1692bed372ded2c63d685 depends: libXext isn't needed by anyone (Carl Dong)
    689d3b4a030675b6de87a55463a8e155843293fb build-aux: Remove check for x11-xcb (Carl Dong)
    aa53cb7a2f04a59a4722c662e67b7a6ec04e32b5 depends: libX11: Make package headers-only (Carl Dong)
    9a01ab04e1125b37618266d7fd1c3a6e3bb7e3f8 depends: qt: Explicitly stop using Xlib/libX11 (Carl Dong)
    1ec30b8fbe4a162d6e2e6a9711d83f1bafd9b645 depends: xproto is only directly needed by libXau (Carl Dong)
    
    Pull request description:
    
      Related to: #16150
    
      We noticed that we could build QT without using XLib/libX11 as a library. XLib/libX11's headers are still used, and a minimal `configure.ac` has been added to eliminate overly-enthusiastic configure-time dependencies that aren't actually required to obtain the headers.
    
      This also means that we eliminate XLib/libX11 as required shared libraries at runtime, which is desirable.
    
      See commit messages for more details.
    
      ---
    
      Reviewers: I am least sure about the minimal `configure.ac`, as I'm not too familiar with the autoconf syntax. Any improvements w/re robustness would be welcome.
    
    ACKs for top commit:
      theuni:
        ACK 0c55d8b58186ba69fffc147cd02b174450dac578
      fanquake:
        ACK 0c55d8b58186ba69fffc147cd02b174450dac578
    
    Tree-SHA512: 41f653a0f91bc0e0faac49713c0c6dfd8cb605f9c4e34eb75a790dd808ebf3e5c160f1dd40bc8fbc911ee718ea319313b526d63733c98ff62d8dffecb58caa01
    e6e99d4f75
  242. test: Skip flaky p2p_invalid_messages test on macOS c3dfc91032
  243. Merge #16366: init: Use InitError for all errors in bitcoind/qt
    fa6f402bde146f92ed131e0c9c8e15a55e723307 Call node->initError instead of InitError from GUI code (Russell Yanofsky)
    fad2502240a1c440ef03ac3f880475702e418275 init: Use InitError for all errors in bitcoind/qt (MarcoFalke)
    
    Pull request description:
    
      Using the same InitError for startup error in the daemon and the gui makes it possible to run the tests with the gui again:
    
      ```sh
      BITCOIND=bitcoin-qt ./test/functional/test_runner.py feature_includeconf feature_config_args
    
    ACKs for top commit:
      hebasto:
        ACK fa6f402bde146f92ed131e0c9c8e15a55e723307
      ryanofsky:
        utACK fa6f402bde146f92ed131e0c9c8e15a55e723307. Only changes since last review are removing more includes and adding Node::initError method to avoid accessing node `InitError` function and global variables from GUI code.
    
    Tree-SHA512: bd19e08dcea4019dfe40356bc5c63cb583cefed54b6c9dcfb82f1b5b00308d8e2b363549afcaea5e93bf83864dbe0917400c3b70f43a8a5bdff45c9cd34cc294
    67923d6b3c
  244. Merge #16445: test: Skip flaky p2p_invalid_messages test on macOS
    c3dfc9103260935261eaf6cfbacf0623003f116d test: Skip flaky p2p_invalid_messages test on macOS (Fabian Jahr)
    
    Pull request description:
    
      This mitigates https://github.com/bitcoin/bitcoin/issues/15400
    
      I had a look into the issue today and this seems to be the best we can do given that the root causes some unexpected custom error code from the macOS kernel that python/asyncio doesn't know how to handle properly yet.
    
    Top commit has no ACKs.
    
    Tree-SHA512: 20a0551d45c405b6eb0ae58190b701c7026c52eff6c434bc678f723a4dabf0074e5b52a8bb3d51ee7132dc29419d1e67a24696761c444c62cd4d429ec768e67d
    0626b8cbdf
  245. Refactor out translation.h
    This is a prerequisite for introducing bilingual error messages.
    Note: #includes are arranged by clang-format-diff.py script.
    0b86e517ad
  246. Add bilingual message type 7c45e14f2f
  247. scripted-diff: Make translation bilingual
    -BEGIN VERIFY SCRIPT-
    sed -i 's/inline std::string _(const char\* psz)/inline bilingual_str _(const char\* psz)/' src/util/translation.h
    sed -i 's/return G_TRANSLATION_FUN ? (G_TRANSLATION_FUN)(psz) : psz;/return bilingual_str{psz, G_TRANSLATION_FUN ? (G_TRANSLATION_FUN)(psz) : psz};/' src/util/translation.h
    sed -i 's/\b_("\([^"]\|\\"\)*")/&.translated/g' $(git grep --files-with-matches '\b_("' src)
    echo Hard cases - multiline strings.
    sed -i 's/"Visit %s for further information about the software.")/&.translated/g' src/init.cpp
    sed -i "s/\"Only rebuild the block database if you are sure that your computer's date and time are correct\")/&.translated/g" src/init.cpp
    sed -i 's/" restore from a backup.")/&.translated/g' src/wallet/db.cpp
    sed -i 's/" or address book entries might be missing or incorrect.")/&.translated/g' src/wallet/wallet.cpp
    echo Special case.
    sed -i 's/_(COPYRIGHT_HOLDERS)/&.translated/' src/util/system.cpp test/lint/lint-format-strings.py
    -END VERIFY SCRIPT-
    753f7cccce
  248. Merge #16362: Add bilingual_str type
    753f7cccce83084f4b18cf4bdf3225183179508c scripted-diff: Make translation bilingual (Hennadii Stepanov)
    7c45e14f2f682eddcc853c0f6051c7c8c6387289 Add bilingual message type (Hennadii Stepanov)
    0b86e517ad733c8740c519332aa4c0e9035dbaab Refactor out translation.h (Hennadii Stepanov)
    
    Pull request description:
    
      This PR adds the `bilingual_str` struct and a `strprintf` overload:
      https://github.com/bitcoin/bitcoin/blob/0626b8cbdf0aa971500eb5613c7ab4096c496966/src/tinyformat.h#L1066-L1067
    
      Both new features allow bitcoin code to easily send dual translated and non-translated messages to the GUI and the logging framework.
    
      This PR is only a refactoring (has been split off the #16224 (see: https://github.com/bitcoin/bitcoin/pull/16224/#issuecomment-509718579)) and does not change behavior.
    
    ACKs for top commit:
      MarcoFalke:
        ACK 753f7cccce
      ryanofsky:
        utACK 753f7cccce83084f4b18cf4bdf3225183179508c. Only change since last review is fixing lint error (double includes)
    
    Tree-SHA512: 52b0654421d558e4775c0484d78be26319fe3db5118af9b0a9bdfbdaad53a3704f527a5d5aba1013a64560b9b6a0c3c4cf0a6782e49aa731e18d99de95220385
    d960d5ca99
  249. doc: Remove downgrading warning in release notes, per 0.18 branch 77773edf21
  250. Merge #15305: [validation] Crash if disconnecting a block fails
    a47df13471e3168e2e02023fb20cdf2414141b36 [qa] Test disconnect block failure -> shutdown (Suhas Daftuar)
    4433ed0f730cfd60eeba3694ff3c283ce2c0c8ee [validation] Crash if disconnecting a block fails (Suhas Daftuar)
    
    Pull request description:
    
      If we're unable to disconnect a block during normal operation, then that is a
      failure of our local system (such as disk failure) or the chain that we are on
      (eg CVE-2018-17144), but cannot be due to failure of the (more work) chain that
      we're trying to validate.
    
      We should abort rather than stay on a less work chain.
    
      Fixes #14341.
    
    ACKs for top commit:
      practicalswift:
        utACK a47df13471e3168e2e02023fb20cdf2414141b36
      TheBlueMatt:
        utACK a47df13471e3168e2e02023fb20cdf2414141b36. Didn't bother to review the test in detail, it looked fine. Debated whether invalidateblock should ever crash the node, but *not* crashing in the case of hitting a pruned block (which is the only change here) is clearly better, even if there are other cases I'd argue we should crash in.
      ryanofsky:
        utACK a47df13471e3168e2e02023fb20cdf2414141b36. Only change since last review is new comment.
      promag:
        ACK a47df1347, it takes awhile to quit (RPC connection timeouts) but that's unrelated - hope to fix that soon.
      fanquake:
        ACK a47df13471e3168e2e02023fb20cdf2414141b36
    
    Tree-SHA512: 4dec8cef6e7dbbe513c138fc5821a7ceab855e603ece3c16185b51a3830ab7ebbc844a28827bf64e75326f45325991dcb672f13bd7baede53304f27289c4af8d
    d5a54ce8f0
  251. Merge #16455: doc: Remove downgrading warning in release notes, per 0.18 branch
    77773edf2116fb0fe22bbec39391d3be55f14513 doc: Remove downgrading warning in release notes, per 0.18 branch (MarcoFalke)
    
    Pull request description:
    
      Same as b702e3757e1d4158eb80edd2924af46e86be6a83 (on the 0.18 branch)
    
    ACKs for top commit:
      jonatack:
        ACK 77773edf2116fb0fe22bbec39391d3be55f14513
      fanquake:
        ACK 77773edf2116fb0fe22bbec39391d3be55f14513
    
    Tree-SHA512: 4d7e598dd739f930f1a712f8647dfc7514e9fdef501f91bc0ee86642aa260360dc560335cd0f16b38b88b2a6b9cfc2df10b6418a371cf02137285d893e1cea30
    fe001925f8
  252. fanquake closed this on Jul 25, 2019

  253. fanquake locked this on Jul 25, 2019
Contributors

github-metadata-mirror

This is a metadata mirror of the GitHub repository bitcoin/bitcoin. This site is not affiliated with GitHub. Content is generated from a GitHub metadata backup.
generated: 2026-04-29 03:15 UTC

This site is hosted by @0xB10C
More mirrored repositories can be found on mirror.b10c.me