aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2021-11-25refactor: Use underlying type of isminetype for isminefilterMarcoFalke
2021-11-25Merge bitcoin/bitcoin#22829: refactor: various RecursiveMutex replacements ↵MarcoFalke
in CConnman 3726a4595837b66d37f151faf1cec2796d6b74d7 refactor: replace RecursiveMutex m_added_nodes_mutex with Mutex (Sebastian Falbesoner) 7d52ff5c389643cde613d86fee33d7087f47b8b4 refactor: replace RecursiveMutex m_addr_fetches_mutex with Mutex (Sebastian Falbesoner) d51d2a3bb5b0011efa1b4f1e2c9512a16ce9b347 scripted-diff: rename node vector/mutex members in CConnman (Sebastian Falbesoner) 574cc4271ab09a4c8f8d076cb1a3a2d5b3924b73 refactor: remove RecursiveMutex cs_totalBytesRecv, use std::atomic instead (Sebastian Falbesoner) Pull request description: This PR is related to #19303 and gets rid of the following RecursiveMutex members in class `CConnman`: * for `cs_totalBytesRecv`, protecting `nTotalBytesRecv`, `std::atomic` is used instead (the member is only increment at one and read at another place, so this is sufficient) * for `m_addr_fetches_mutex`, protecting `m_addr_fetches`, a regular `Mutex` is used instead (there is no chance that within one critical section, another one is called) * for `cs_vAddedNodes`, protecting `vAddedNodes`, a regular `Mutex` is used instead (there is no chance that within one critical section, another one is called) Additionally, the PR takes the chance to rename all node vector members (vNodes, vAddedNodes) and its corresponding mutexes (cs_vNodes, cs_vAddedNodes) to match the coding guidelines via a scripted-diff. ACKs for top commit: vasild: ACK 3726a4595837b66d37f151faf1cec2796d6b74d7 promag: Code review ACK 3726a4595837b66d37f151faf1cec2796d6b74d7. hebasto: re-ACK 3726a4595837b66d37f151faf1cec2796d6b74d7 Tree-SHA512: 4f5ad41ba2eca397795080988c1739c6abb44c1204dddaa75cc38a396fa821fbe1010694ba7bead1b606beaa677661e66da2a5dca233b2937214f63a54848348
2021-11-25Merge bitcoin/bitcoin#23538: Remove strtol in torcontrolW. J. van der Laan
fa186eb7f45a9d420503f96ff3a5f753afb75dec Remove strtol in torcontrol (MarcoFalke) Pull request description: The sequence of octal chars is fully validated before calling `strtol`, so it can be replaced by a simple loop. This removes the last "locale depended" `strtol` call. Also, removes some unused includes. ACKs for top commit: laanwj: Code review and tested ACK fa186eb7f45a9d420503f96ff3a5f753afb75dec Tree-SHA512: aafa4c68046e5ec48824c4f2c18e4920e5fe1d1fa03a8a297b2f40d0a1967cd0dad3554352519073a1620714e958ed5133cbc6b70bedcc508a423551d829f80e
2021-11-25Merge bitcoin-core/gui#477: Monospaced output in Console on macOSHennadii Stepanov
b9f0aff6b4a64c75d8f937fb9a3546c96d6f5a01 qt: monospaced output in Console on macOS (randymcmillan) Pull request description: This PR addresses issue https://github.com/bitcoin-core/gui/issues/273 A monospace font is used on Linux and Windows for the console output - but not on MacOS. This change forces the MacOS GUI to use the embedded RobotoMono-Bold.ttf font, which is defined as the GUIUtil::fixedPitchFont() ACKs for top commit: hebasto: ACK b9f0aff6b4a64c75d8f937fb9a3546c96d6f5a01, Tested on macOS Big Sur 11.6.1 (20G224) + Homebrew's Qt 5.15.2: shaavan: reACK b9f0aff6b4a64c75d8f937fb9a3546c96d6f5a01 jarolrod: tACK b9f0aff6b4a64c75d8f937fb9a3546c96d6f5a01 Tree-SHA512: 53e6635a0189e133681c85d442c6c9c4a10438151e4bf7da5bbd62abca7ab55685caf2c9a75ff200aadea771c1602902e6ab14afdc4f411e1b3013dd49625dbc
2021-11-25Merge bitcoin/bitcoin#23580: build: patch qt to explicitly define previously ↵fanquake
implicit header include 8196b0a2bc63c35769eca213cba4a5844a737b90 build: patch qt to explicitly define previously implicit header include (Kittywhiskers Van Gogh) Pull request description: ### Description macOS Monterey has refactored some includes such that implicitly defined headers were no longer exposed and that in turns breaks building Qt on macOS 12. First observed when building on an M1 Pro. See "Additional Reading" for more information. ### Additional Reading * https://github.com/microsoft/vcpkg/issues/21055 (resolved by https://github.com/microsoft/vcpkg/commit/c32ccbb34caacea28ba2d2b3df232ee36359c9f6) * ["Add missing macOS header file that was indirectly included before"](https://code.qt.io/cgit/qt/qtbase.git/commit/src/plugins/platforms/cocoa?id=dece6f5840463ae2ddf927d65eb1b3680e34a547) on https://code.qt.io/ ACKs for top commit: hebasto: ACK 8196b0a2bc63c35769eca213cba4a5844a737b90, verified that the patch is applied cleanly: fanquake: ACK 8196b0a2bc63c35769eca213cba4a5844a737b90 Tree-SHA512: efe6d93edd2e2f68f33a1c353d353c8e7b5aa680733561caa6eb092fd0f68153f8ed1649a61048ef873f6be8041b9ca8e6919d80b947181b6fe4152464e2d383
2021-11-25Merge bitcoin/bitcoin#23512: policy: Treat taproot as always activeMarcoFalke
fa3e0da06b491b8c0fa2dbae37682a9112c9deb8 policy: Treat taproot as always active (MarcoFalke) Pull request description: Now that taproot is active, it can be treated as if it was always active for policy for the next major release. This simplifies the code and changes two things: * Importing `tr` descriptors can be done before the chain is fully synced. This is fine, because the wallet will already generate `tr` descriptors by default (regardless of the taproot status) after commit 47fe7445e7f54aee10ec6dbc53f1db1adbeb43de. * Valid taproot spends won't be rejected from the mempool before taproot is active. This is strictly speaking a bugfix after commit 47fe7445e7f54aee10ec6dbc53f1db1adbeb43de, since the wallet may generate taproot spends before the chain is fully synced. For example, a slow node or a purposefully offline node. Currently, the wallet needs the mempool to account for change. See https://github.com/bitcoin/bitcoin/issues/11887. A similar change was done for segwit v0 in https://github.com/bitcoin/bitcoin/pull/13120 . This effectively reverts commit c5ec0367d718544caa3a1578d6c730fc92ee4e94. ACKs for top commit: mjdietzx: Code Review ACK fa3e0da06b491b8c0fa2dbae37682a9112c9deb8 achow101: ACK fa3e0da06b491b8c0fa2dbae37682a9112c9deb8 sipa: utACK fa3e0da06b491b8c0fa2dbae37682a9112c9deb8 gruve-p: ACK https://github.com/bitcoin/bitcoin/pull/23512/commits/fa3e0da06b491b8c0fa2dbae37682a9112c9deb8 gunar: Code Review + tACK fa3e0da06 rajarshimaitra: code review + tACK https://github.com/bitcoin/bitcoin/pull/23512/commits/fa3e0da06b491b8c0fa2dbae37682a9112c9deb8 Tree-SHA512: c6dc7a4e6c345bdec33f256847dc63906ab1696aa683ab9b32a79e715613950884ac3a1a7a44e95f31bb28e58dd64679a616175f7e152b21f5550f3337c8e622
2021-11-24refactor: replace RecursiveMutex m_added_nodes_mutex with MutexSebastian Falbesoner
The RecursiveMutex m_added_nodes_mutex is used at three places: - CConnman::GetAddedNodeInfo() - CConnman::AddNode() - CConnman::ThreadOpenConnections() In each of the critical sections, only the the m_added_nodes member is accessed (and in the last case, also m_addr_fetches), without any chance that within one section another one is called. Hence, we can use an ordinary Mutex instead of RecursiveMutex.
2021-11-24refactor: replace RecursiveMutex m_addr_fetches_mutex with MutexSebastian Falbesoner
The RecursiveMutex m_addr_fetches_mutex is used at three places: - CConnman::AddAddrFetch() - CConnman::ProcessAddrFetch() - CConnman::ThreadOpenConnections() In each of the critical sections, only the the m_addr_fetches is accessed (and in the last case, also vAddedNodes), without any chance that within one section another one is called. Hence, we can use an ordinary Mutex instead of RecursiveMutex.
2021-11-24scripted-diff: rename node vector/mutex members in CConnmanSebastian Falbesoner
-BEGIN VERIFY SCRIPT- ren() { sed -i "s/$1/$2/g" $3 $4 $5; } ren cs_vAddedNodes m_added_nodes_mutex src/net.h src/net.cpp ren vAddedNodes m_added_nodes src/net.h src/net.cpp ren cs_vNodes m_nodes_mutex src/net.h src/net.cpp src/test/util/net.h ren vNodesDisconnectedCopy nodes_disconnected_copy src/net.cpp ren vNodesDisconnected m_nodes_disconnected src/net.h src/net.cpp ren vNodesCopy nodes_copy src/net.cpp ren vNodesSize nodes_size src/net.cpp ren vNodes m_nodes src/net.h src/net.cpp src/test/util/net.h -END VERIFY SCRIPT-
2021-11-24refactor: remove RecursiveMutex cs_totalBytesRecv, use std::atomic insteadSebastian Falbesoner
The RecursiveMutex cs_totalBytesRecv is only used at two places: in CConnman::RecordBytesRecv() to increment the nTotalBytesRecv member, and in CConnman::GetTotalBytesRecv() to read it. For this simple use-case, we can make the member std::atomic instead to achieve the same result.
2021-11-24Merge bitcoin/bitcoin#21943: Dedup and RAII-fy the creation of a copy of ↵W. J. van der Laan
CConnman::vNodes f52b6b2d9f482353821da0ef4c485c402a396c8d net: split CConnman::SocketHandler() (Vasil Dimov) c7eb19ec8302e6a5abd89c0566540c2c862e9121 style: remove unnecessary braces (Vasil Dimov) 664ac22c5379db65757fc3aab91fff8765683e7f net: keep reference to each node during socket wait (Vasil Dimov) 75e8bf55f5a014faada7712a9640dc35e8c86f15 net: dedup and RAII-fy the creation of a copy of CConnman::vNodes (Vasil Dimov) Pull request description: _This is a piece of https://github.com/bitcoin/bitcoin/pull/21878, chopped off to ease review._ The following pattern was duplicated in CConnman: ```cpp lock create a copy of vNodes, add a reference to each one unlock ... use the copy ... lock release each node from the copy unlock ``` Put that code in a RAII helper that reduces it to: ```cpp create snapshot "snap" ... use the copy ... // release happens when "snap" goes out of scope ACKs for top commit: jonatack: ACK f52b6b2d9f482353821da0ef4c485c402a396c8d changes since last review are reordered commits, removing an unneeded local variable, and code formatting and documentation improvements LarryRuane: code review ACK f52b6b2d9f482353821da0ef4c485c402a396c8d promag: Code review ACK f52b6b2d9f482353821da0ef4c485c402a396c8d, only format changes and comment tweaks since last review. Tree-SHA512: 5ead7b4c641ebe5b215e7baeb7bc0cdab2a588b2871d9a343a1d518535c55c0353d4e46de663f41513cdcc79262938ccea3232f6d5166570fc2230286c985f68
2021-11-24Merge bitcoin/bitcoin#23451: span: Add std::byte helpersMarcoFalke
faa3ec2304051be7cfbe301cfbfbda3faf7514fc span: Add std::byte helpers (MarcoFalke) fa18038f519db76befb9a7bd0b1540143bfeb12b refactor: Use ignore helper when unserializing an invalid pubkey (MarcoFalke) fabe18d0b39b4b918bf60e3a313eaa36fb4067f2 Use value_type in CDataStream where possible (MarcoFalke) Pull request description: This adds (currently unused) span std::byte helpers, so that they can be used in new code. The refactors are also required for https://github.com/bitcoin/bitcoin/pull/23438, but they are split up because the other pull doesn't compile with msvc right now. The third commit is not needed for the other pull, but still nice. ACKs for top commit: klementtan: reACK faa3ec2. Verified that all the new `std::byte` helper functions are tested. laanwj: Code review ACK faa3ec2304051be7cfbe301cfbfbda3faf7514fc Tree-SHA512: b1f6af39f03ea4dfebf20d4a8538fa993a6104e7fc92ddf0c4606a7efc3ca9a8c1a4741d98a1418569c11bb9ce9258bf0c0c06d93d85ed7e208902a2db04e407
2021-11-24Merge bitcoin/bitcoin#23249: util: ParseByteUnits - Parse a string with ↵MarcoFalke
suffix unit 21b58f430fa05fdb7c5db79b545302417a5dbceb util: ParseByteUnits - Parse a string with suffix unit [k|K|m|M|g|G|t|T] (Douglas Chimento) Pull request description: A convenience utility for parsing human readable strings sizes e.g. `500G` is `500 * 1 << 30` The argument/setting `maxuploadtarget` now accept human readable byte units `[k|K|m|M|g|G||t|T]` This change backward compatible, defaults to `M` if no unit specified. ACKs for top commit: vasild: ACK 21b58f430fa05fdb7c5db79b545302417a5dbceb ryanofsky: Code review ACK 21b58f430fa05fdb7c5db79b545302417a5dbceb. Only changes since last review are dropping optional has_value call, fixing comment punctuation, squashing commits. Tree-SHA512: c9b85acc0f77c847a0290b27ac5dc586ecc078110cf133063140576a04c11aa9c553159b9b4993488edcf6e60db6837de7c83b2964639bc21e8ffa4d455a5eb7
2021-11-24build: patch qt to explicitly define previously implicit header includeKittywhiskers Van Gogh
macOS Monterey has refactored some includes such that implicitly defined headers were no longer exposed and that in turns breaks building Qt on macOS 12. Additional Resources: - https://bugreports.qt.io/browse/QTBUG-97855 - https://codereview.qt-project.org/c/qt/qtbase/+/378706 - https://code.qt.io/cgit/qt/qtbase.git/commit/src/plugins/platforms/cocoa?id=dece6f5840463ae2ddf927d65eb1b3680e34a547
2021-11-23Merge bitcoin/bitcoin#23573: refactor: cast bool operands to int to silence ↵fanquake
compiler warning ab22a71429f0f47b3c3582a303c07940aa59cd3e refactor: cast bool to int to silence compiler warning (Jon Atack) Pull request description: This fixes a compiler warning: ``` node/interfaces.cpp:544:16: warning: use of bitwise '&' with boolean operands [-Wbitwise-instead-of-logical] return FillBlock(ancestor, ancestor_out, lock, active) & FillBlock(block1, block1_out, lock, active) & FillBlock(block2, block2_out, lock, active); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ && node/interfaces.cpp:544:16: note: cast one or both operands to int to silence this warning node/interfaces.cpp:544:16: warning: use of bitwise '&' with boolean operands [-Wbitwise-instead-of-logical] return FillBlock(ancestor, ancestor_out, lock, active) & FillBlock(block1, block1_out, lock, active) & FillBlock(block2, block2_out, lock, active); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ && node/interfaces.cpp:544:16: note: cast one or both operands to int to silence this warning 2 warnings generated. ``` ACKs for top commit: sipa: utACK ab22a71429f0f47b3c3582a303c07940aa59cd3e theStack: Concept and code-review ACK ab22a71429f0f47b3c3582a303c07940aa59cd3e shaavan: ACK ab22a71429f0f47b3c3582a303c07940aa59cd3e Tree-SHA512: 84e5aeabc1514a7586ac7c78a8eff1d15a5967dced7b2485b266b6fd79a530e1b22d99ded0a5df39f7806d3c5fd6d9752f08a722cc3be17850a6242c4022ab03
2021-11-22refactor: cast bool to int to silence compiler warningJon Atack
This fixes -Wbitwise-instead-of-logical compiler warnings: node/interfaces.cpp:544:16: warning: use of bitwise '&' with boolean operands [-Wbitwise-instead-of-logical] return FillBlock(ancestor, ancestor_out, lock, active) & FillBlock(block1, block1_out, lock, active) & FillBlock(block2, block2_out, lock, active); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ && node/interfaces.cpp:544:16: note: cast one or both operands to int to silence this warning node/interfaces.cpp:544:16: warning: use of bitwise '&' with boolean operands [-Wbitwise-instead-of-logical] return FillBlock(ancestor, ancestor_out, lock, active) & FillBlock(block1, block1_out, lock, active) & FillBlock(block2, block2_out, lock, active); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ && node/interfaces.cpp:544:16: note: cast one or both operands to int to silence this warning 2 warnings generated. A similar change was recently made to libsecp in commit 16d13221 for the same reason.
2021-11-22Merge bitcoin/bitcoin#16807: Let validateaddress locate error in Bech32 addressW. J. van der Laan
88cc4810926e4f5af6757ee1b0eed61abda3d746 Modify copyright header on Bech32 code (Samuel Dobson) 5599813b80e53a1539c66625b4320ab1b4fb4848 Add lots of comments to Bech32 (Samuel Dobson) 2eb5792ec7bbeaf7138420b6c85c5cd0a0404946 Add release notes for validateaddress Bech32 error detection (MeshCollider) 42d6a029e57a32f2d1d829ff7718b6d40d58b9d1 Refactor and add more tests for validateaddress (Samuel Dobson) c4979f77c1264f0099d1dfa278b1d9c18340b5f9 Add boost tests for bech32 error detection (MeshCollider) 02a7bdee429ae307a5e57832727fed789e2e04fb Add error_locations to validateaddress RPC (Samuel Dobson) b62b67e06cc406fdad68da4c091168fb5f11c1d4 Add Bech32 error location function (Samuel Dobson) 0b06e720c0182dee8b560d2e8d3891b036f63ea7 More detailed error checking for base58 addresses (Samuel Dobson) Pull request description: Addresses (partially) #16779 - no GUI change in this PR Adds a LocateError function the bech32 library, which is then called by `validateaddress` RPC, (and then eventually from a GUI tool too, future work). I think modifying validateaddress is nicer than adding a separate RPC for this. Includes tests. Based on https://github.com/sipa/bech32/blob/master/ecc/javascript/bech32_ecc.js Credit to sipa for that code ACKs for top commit: laanwj: Code review and manually tested ACK 88cc4810926e4f5af6757ee1b0eed61abda3d746 ryanofsky: Code review ACK 88cc4810926e4f5af6757ee1b0eed61abda3d746 with caveat that I only checked the new `LocateErrors` code to try to verify it didn't have unsafe or unexpected operations or loop forever or crash. Did not try to verify behavior corresponds to the spec. In the worst case bugs here should just affect error messages not actual decoding of addresses so this seemed ok. w0xlt: tACK 88cc481 Tree-SHA512: 9c7fe9745bc7527f80a30bd4c1e3034e16b96a02cc7f6c268f91bfad08a6965a8064fe44230aa3f87e4fa3c938f662ff4446bc682c83cb48c1a3f95cf4186688
2021-11-22qt: monospaced output in Console on macOSrandymcmillan
2021-11-22Merge bitcoin/bitcoin#23557: configure.ac: remove BashismMarcoFalke
cf7292597e18ffca06b0fbf8bcd545aec387e380 configure.ac: remove Bashism (Matt Whitlock) Pull request description: Configure scripts are supposed to adhere to the POSIX shell language. The POSIX `test` builtin does not implement an `==` operator. Bash does, but not all systems have Bash installed as `/bin/sh`. In particular, many systems use the lighter-weight Dash as the default POSIX shell. Dash emits the following error when running `configure`: ``` ./configure: 39065: test: xno: unexpected operator ``` This PR removes the Bashism and restores correct operation with POSIX-compliant shells like Dash. ACKs for top commit: katesalazar: ACK cf7292597e18ffca06b0fbf8bcd545aec387e380. laanwj: Code review ACK cf7292597e18ffca06b0fbf8bcd545aec387e380 Tree-SHA512: 578c873fba52e0472baed9e024bddcf58a0e088600bd5854f3011f1f8d135773ad923bb16baefc960d17ecedee9cc980b36aaa70fb32eb9bc7de93f7fe60541d
2021-11-22Merge bitcoin/bitcoin#23521: test: refactor: dedup code by taking use of ↵MarcoFalke
`create_block` parameters e57c0eb865b4ce155b5a4a2e56e46791a47e85af test: refactor: replace OP_1/OP_TRUE magic numbers by constants (Sebastian Falbesoner) df5d783aef3e5af2d1294fc8ff9470a5dc878325 test: refactor: take use of `create_block` txlist parameter (Sebastian Falbesoner) ae9df4ef937ef77405f6edd7c13615df7b63446f test: refactor: take use of `create_block` version parameter (or use default) (Sebastian Falbesoner) Pull request description: The helper `create_block` offers two parameters `version` and `txlist` which set the `nVersion` field / extend the `vtx` array of the block, respectively. By taking use of those, we can remove a lot of code, including the recalculation of the merkle root. Both passing txs in string and `CTransaction` format is supported, i.e. we also save potential calls to `tx_from_hex`. The PR also contains another commit which replaces magic numbers for OP_TRUE/OP_1 (0x51) with the proper constant from the `script` module. Instances setting the block version of 4 explicitely after calling `create_block` are removed, as this is the default since #16333 got merged (see https://github.com/bitcoin/bitcoin/pull/23521#discussion_r751173671). ACKs for top commit: stratospher: tested ACK e57c0eb. Tree-SHA512: a56965168d36b40b84e7f334b00472b82c31e8482c9e2651c97a791abd7fee3b40ca15e943a7acafa3acf172066fdace38bb13240084b789fd6ff4f6e510e23a
2021-11-22Merge bitcoin/bitcoin#22364: wallet: Make a tr() descriptor by defaultMarcoFalke
4868c9f1b39f03adee0009cd41d96598b43e8b78 Extract Taproot internal keyid with GetKeyFromDestination (Andrew Chow) d8abbe119c71f917e0fd2e80536c1e5d979b4dc6 Mention bech32m in -addresstype and -changetype help (Andrew Chow) 8fb57845ee3844c9ba854471065109d2e409300f Create a tr() descriptor bech32m DescriptorScriptPubKeyMan by default (Andrew Chow) 54b3699862de687f782c7c52500d6a2372478355 Store pubkeys in TRDescriptor::MakeScripts (Andrew Chow) Pull request description: Make a `tr()` descriptor by default in descriptor wallets so that users will be able to make and use segwit v1 bech32m addresses. ACKs for top commit: MarcoFalke: Concept ACK 4868c9f1b39f03adee0009cd41d96598b43e8b78 Sjors: re-utACK 4868c9f1b39f03adee0009cd41d96598b43e8b78 gruve-p: ACK https://github.com/bitcoin/bitcoin/pull/22364/commits/4868c9f1b39f03adee0009cd41d96598b43e8b78 meshcollider: Concept + code review ACK 4868c9f1b39f03adee0009cd41d96598b43e8b78 Tree-SHA512: e5896e665b8d559f1d759b6582d1bb24f70d4698a57307684339d9fdcdac28ae9bc17bc946a7efec9cb35c130a95ffc36e3961a335124ec4535d77b8d00e9631
2021-11-22Merge bitcoin/bitcoin#23564: build: don't use deprecated brew package namesfanquake
4d83038714e4f099529e4372ef04f8f947c3a421 build: don't check for deprecated qt5 package (fanquake) d0fe9c2180de4ea1549e5a22d6898d688de7f4dc build: don't check for deprecated berkeley-db4 package (fanquake) Pull request description: Fixes: ```bash checking for brew... brew Warning: Use berkeley-db@4 instead of deprecated berkeley-db4 ``` on macOS. ACKs for top commit: mjdietzx: Tested ACK 4d83038714e4f099529e4372ef04f8f947c3a421 on macOS Big Sur hebasto: ACK 4d83038714e4f099529e4372ef04f8f947c3a421, I have reviewed the code and it looks OK, I agree it can be merged. Tree-SHA512: 0eeac9e1add652bd101472880c7a6e7688a6429ce98faf920cb7f572a6471ac9af755de7f34047b17ea1d26bfc4517bd0e9f403b966de0ff361bf2942eae6a41
2021-11-22Merge bitcoin/bitcoin#23348: rpc, wallet: Do not return "keypoololdest" for ↵Samuel Dobson
blank descriptor wallets ee03c782ba61993d9e95fa499546cd14cee35445 wallet: Make GetOldestKeyPoolTime return nullopt for blank wallets (Hennadii Stepanov) 3e4f069d23cd2ea5de8fa3c4b1a761ab097ad56f wallet, refactor: Make GetOldestKeyPoolTime return type std::optional (Hennadii Stepanov) Pull request description: The "keypoololdest" field in the `getwalletinfo` RPC response should be used for legacy wallets only. Th current implementation (04437ee721e66a7b76bef5ec2f88dd1efcd03b84) assumes that `CWallet::GetOldestKeyPoolTime()` always return `0` for descriptor wallets. This assumption is wrong for _blank_ descriptor wallets, when `m_spk_managers` is empty. As a result: ``` $ src/bitcoin-cli -signet -rpcwallet=211024-d-DPK getwalletinfo { "walletname": "211024-d-DPK", "walletversion": 169900, "format": "sqlite", "balance": 0.00000000, "unconfirmed_balance": 0.00000000, "immature_balance": 0.00000000, "txcount": 0, "keypoololdest": 9223372036854775807, "keypoolsize": 0, "keypoolsize_hd_internal": 0, "paytxfee": 0.00000000, "private_keys_enabled": false, "avoid_reuse": false, "scanning": false, "descriptors": true } ``` This PR fixes this issue with direct checking of the `WALLET_FLAG_DESCRIPTORS` flag. ACKs for top commit: lsilva01: re-ACK ee03c78 stratospher: ACK ee03c78. meshcollider: Code review ACK ee03c782ba61993d9e95fa499546cd14cee35445 Tree-SHA512: 9852f9f8ed5c08c07507274d7714f039bbfda66da6df65cf98f67bf11a600167d0f7f872680c95775399477f4df9ba9fce80ec0cbe0adb7f2bb33c3bd65b15df
2021-11-21Merge bitcoin-core/gui#319: Paste button in Open URI dialogHennadii Stepanov
dbde0558ce73db4c901dbaa2eddc634701fa1d0d gui: Paste button in Open URI dialog (Kristaps Kaupe) Pull request description: Picking up https://github.com/bitcoin/bitcoin/pull/17955, with some review comments addressed. ACKs for top commit: shaavan: tACK dbde055 jarolrod: ACK dbde055 promag: Tested ACK dbde0558ce73db4c901dbaa2eddc634701fa1d0d. Tree-SHA512: db47f19673aff6becd6d1f938cd2aa5dc2291d6e80150d2b99f435674330a5eae678b20e42ef327ea9b05c44925a941fc251e622c73b3585018fc7c1d245edb5
2021-11-21Merge bitcoin-core/gui#449: Restore "S" accelerator for "Start on system ↵Hennadii Stepanov
login" option 25a581419d10b3c7d99789da18afd51f2984fbc8 GUI/Options: Restore "S" accelerator for "Start on system login" option (Luke Dashjr) Pull request description: bitcoin-core/gui#416 changed the option assigned to accelerator key "S", but there's no rationale given. Best to leave it alone, and give the new option a new accelerator key. Since "R" is already taken for Reset, this shifts the new RPC server option to use "P" instead ACKs for top commit: jarolrod: ACK 25a581419d10b3c7d99789da18afd51f2984fbc8 hebasto: ACK 25a581419d10b3c7d99789da18afd51f2984fbc8, tested on Linux Mint 20.2 (Qt 5.12.8). Tree-SHA512: 2212aa32572cbcbcce78304ffcb1dcfc65f9d7e2ffd6c6a4b65e4a3ca2a8a7cc7505c28314ad46e0bc13b4e3bb3fc61e7e196356d26354f3689fad71fb688b27
2021-11-21Merge bitcoin/bitcoin#23535: PE: check for control flow instrumentationfanquake
f31d4bd21401228799d78aab70de881ea39f99f2 scripts: test for PE control flow instrumentation (fanquake) 0445e1a1a5064ed954b1d2fbae626bfcd7b5c928 build: use -fcf-protection=full when building Windows Boost in depends (fanquake) Pull request description: Addresses the Windows portion of #21888. Now that we require GCC 8+ we can unconditionally use `-fcf-protection=full` when building Boost in depends. Building Boost with this option is required so that the `main` provided to `test_bitcoin.exe` has instrumentation. Note that the presence of instrumentation does not mean it will be used, as that is determined at runtime by the CPU. From the Intel control flow enforcement documentation: > The ENDBR32 and ENDBR64 instructions will have the same effect as the NOP instruction on Intel 64 processors that do not support CET. On processors supporting CET, these instructions do not change register or flag state. This allows CET instrumented programs to execute on processors that do not support CET. Even when CET is supported and enabled, these NOP–like instructions do not affect the execution state of the program, do not cause any additional register pressure, and are minimally intrusive from power and performance perspectives. Guix Build: ```bash bash-5.1# find guix-build-$(git rev-parse --short=12 HEAD)/output/ -type f -print0 | env LC_ALL=C sort -z | xargs -r0 sha256sum 5d41d43c44945810f92193504e8b4c1ac8eb9dfc3b19d0ab8d53bff0c8443a2a guix-build-f31d4bd21401/output/aarch64-linux-gnu/SHA256SUMS.part 8edb0e01b7bc2d646b62e4e35b1867ee940acca18a02ee609c52c4f7680de5ae guix-build-f31d4bd21401/output/aarch64-linux-gnu/bitcoin-f31d4bd21401-aarch64-linux-gnu-debug.tar.gz 1a06306f365e8329cea0eba7436085d30fe59c244a888ecb6407faf5110c57ab guix-build-f31d4bd21401/output/aarch64-linux-gnu/bitcoin-f31d4bd21401-aarch64-linux-gnu.tar.gz b5b74926ff9ff597d66b92d33926df34c3e1c6f92b863850a6fb1beea019fd6e guix-build-f31d4bd21401/output/arm-linux-gnueabihf/SHA256SUMS.part 743b5c5cec7881b032520a309ae2399ec8dadb82eb9da424aefd646f9252ff1d guix-build-f31d4bd21401/output/arm-linux-gnueabihf/bitcoin-f31d4bd21401-arm-linux-gnueabihf-debug.tar.gz 1f218a954b65b352c80922ea6b61276e8e7050ad8bdd9d7610049b87c66069e5 guix-build-f31d4bd21401/output/arm-linux-gnueabihf/bitcoin-f31d4bd21401-arm-linux-gnueabihf.tar.gz c164de32c6cc24ec247b5a8de7f1a5442369d5804a4b2a3e0d9dc4ab4e5ec401 guix-build-f31d4bd21401/output/dist-archive/bitcoin-f31d4bd21401.tar.gz feb0a055eabd6ddd2ce0dac954f5f5886044800a7535b8f78c7dfbd9c243512c guix-build-f31d4bd21401/output/powerpc64-linux-gnu/SHA256SUMS.part 0b6e877b5de7b69a5d474469d666a536cd8f6f6e865230a7763f62426357ae91 guix-build-f31d4bd21401/output/powerpc64-linux-gnu/bitcoin-f31d4bd21401-powerpc64-linux-gnu-debug.tar.gz fb38bcfd319af1e8bace03f240b32592940ac3efe15d23fd39353f36f9ae3838 guix-build-f31d4bd21401/output/powerpc64-linux-gnu/bitcoin-f31d4bd21401-powerpc64-linux-gnu.tar.gz 15fffe69f33297ef30a8b2eb8bdef8564f030920bed6d5ff56d6e7b8bef9c199 guix-build-f31d4bd21401/output/powerpc64le-linux-gnu/SHA256SUMS.part f847b92c7c098bf8a4f6c84714270c173d4323e2d3025dd8f4444ee921a0bdd0 guix-build-f31d4bd21401/output/powerpc64le-linux-gnu/bitcoin-f31d4bd21401-powerpc64le-linux-gnu-debug.tar.gz 9b8b6e12dd8a1a3ba0f5522c2a22f2bd60d5473880fa22d42e91364a08e48396 guix-build-f31d4bd21401/output/powerpc64le-linux-gnu/bitcoin-f31d4bd21401-powerpc64le-linux-gnu.tar.gz 6f0f3b603b35c751a364b77ca94477085cf54a1c5d811dd3407dd1b86b2e3c64 guix-build-f31d4bd21401/output/riscv64-linux-gnu/SHA256SUMS.part 69f1a93a8d698e68d8baf81a6c871f9eab0446ec352f7709971293b0b898f128 guix-build-f31d4bd21401/output/riscv64-linux-gnu/bitcoin-f31d4bd21401-riscv64-linux-gnu-debug.tar.gz b71d415f30a893fada9d6609fab309a3c099716462c795e444bf49bd8631ea53 guix-build-f31d4bd21401/output/riscv64-linux-gnu/bitcoin-f31d4bd21401-riscv64-linux-gnu.tar.gz 6f842bc5483e867b8d1c769d1faa19b9f08bc0fa28d027fe0fac108858a4926e guix-build-f31d4bd21401/output/x86_64-apple-darwin19/SHA256SUMS.part a9a43aa4aade18bf606493009229ad3239af7365594ef60a0c39789d870f159d guix-build-f31d4bd21401/output/x86_64-apple-darwin19/bitcoin-f31d4bd21401-osx-unsigned.dmg 26891e7d258ec8a85344a0a888fd4159378d747a2a77fb8d9e5655f1a3ad4aee guix-build-f31d4bd21401/output/x86_64-apple-darwin19/bitcoin-f31d4bd21401-osx-unsigned.tar.gz a2578799da61a3f1b6cd047aa5641e050de2e810162ec8596931cec12d1cbb56 guix-build-f31d4bd21401/output/x86_64-apple-darwin19/bitcoin-f31d4bd21401-osx64.tar.gz 571803809f358ed5ef1f1ed6b6266b54bd33b0e6308c53ddae967e53af930a46 guix-build-f31d4bd21401/output/x86_64-linux-gnu/SHA256SUMS.part ea45499e8d2a2f0791f29732a5f169fb97525d6d8adcdfa1c160e950944ce8fe guix-build-f31d4bd21401/output/x86_64-linux-gnu/bitcoin-f31d4bd21401-x86_64-linux-gnu-debug.tar.gz ba5b63e64267d7685de77e3063e24659f223d4b4c42d43f42fb15e716afcfe78 guix-build-f31d4bd21401/output/x86_64-linux-gnu/bitcoin-f31d4bd21401-x86_64-linux-gnu.tar.gz b4ba9d8cfd6999c0039890330afab5d5b1faf5ded33dcbebc5e73d8dae308246 guix-build-f31d4bd21401/output/x86_64-w64-mingw32/SHA256SUMS.part 3aa5cf722341b79aca78ea11fe4e65e0c642997b0214d3893a86a2e808afbe87 guix-build-f31d4bd21401/output/x86_64-w64-mingw32/bitcoin-f31d4bd21401-win-unsigned.tar.gz b48402235751f15f09fad64b7bd42f851a64a9744e47ed6888b4e9754fb0d3d9 guix-build-f31d4bd21401/output/x86_64-w64-mingw32/bitcoin-f31d4bd21401-win64-debug.zip e33183aa7316f399621fd7b1c258d850294cdaaebb505364410a399467c0943b guix-build-f31d4bd21401/output/x86_64-w64-mingw32/bitcoin-f31d4bd21401-win64-setup-unsigned.exe 4baba568a8a93d04086055df512d680c8365d42779123c56bccee41e4de33e5e guix-build-f31d4bd21401/output/x86_64-w64-mingw32/bitcoin-f31d4bd21401-win64.zip ``` ACKs for top commit: laanwj: Code review ACK f31d4bd21401228799d78aab70de881ea39f99f2 Tree-SHA512: fbed1fa4e9317677e24ebc6f9d95ef791e2182ad709b3629ed35e373d9f8d26bbf3dee6f78a4bdf3f7ae2c05fe5fd744c0753298ee1387d9b0c719a09717b522
2021-11-21build: don't check for deprecated qt5 packagefanquake
Use qt@5 instead.
2021-11-21build: don't check for deprecated berkeley-db4 packagefanquake
Fixes: ```bash checking for brew... brew Warning: Use berkeley-db@4 instead of deprecated berkeley-db4 ```
2021-11-21Merge bitcoin/bitcoin#23558: test: run rpc-generateblock.py even with wallet ↵MarcoFalke
disabled 1e86ff794108d6ef033ceba918b45c5e78c95c62 test: run rpc-generateblock.py even with wallet disabled (Darius Parvin) Pull request description: Run rpc_generateblock.py test even when the wallet is disabled, as discussed in #20078. This PR picked up from where #20808 left off, started by @ nginocchio. Since then, there have been many improvements to `MiniWallet`, making this PR more straightforward. L23 makes use of `MiniWallet.rescan_utxos()` to add the pre-mined block utxos (when `self.setup_clean_chain` is not set to `True`), rather than generating new blocks during the test. ACKs for top commit: mjdietzx: Tested ACK 1e86ff794108d6ef033ceba918b45c5e78c95c62 Tree-SHA512: 4285f61516dd53a08004eeea26d58f45b4c1c67f5ca4c94ff1bc9fc7e50f486de2e033a8b4aaf67cb4c33d73aa929362e18dc75d5c7951cbf58120b5fb1de555
2021-11-21Merge bitcoin/bitcoin#23555: util: Add missing fstatfs to syscall sandboxfanquake
fade4b3aca5b78b6a8021289433616df9d06a87f util: Add missing fstatfs to syscall sandbox (MarcoFalke) Pull request description: Looks like this is used by boost 1.77 in `./test/functional/wallet_backup.py --descriptors`. Fixes https://github.com/bitcoin/bitcoin/issues/23554 ACKs for top commit: fanquake: ACK fade4b3aca5b78b6a8021289433616df9d06a87f - reproduced the failure on Tumbleweed: Tree-SHA512: cd7381e87c7cb4596da0b9e36c8776a3ef19f5aeb29ee9db1867657c4c1f071485ffea0fba0af950f10a16a8bdb0a0c70ffcc5be802e82d60882e00f7d2009ac
2021-11-20test: run rpc-generateblock.py even with wallet disabledDarius Parvin
2021-11-20Merge bitcoin/bitcoin#23553: test: Remove sanitizer suppression ↵fanquake
implicit-signed-integer-truncation:netaddress.cpp fae5fec0fec851568a72724000193b2747c30414 test: Remove sanitizer suppression implicit-signed-integer-truncation:netaddress.cpp (MarcoFalke) Pull request description: This reverts commit fa865287e5f35e0a376785834e966dd202d2959e. This was fixed in commit efd6f904c78769ad2e93c1f1de43014d284e7561. ACKs for top commit: vasild: ACK fae5fec0fec851568a72724000193b2747c30414 Tree-SHA512: 3bebf1babd5c68cbb2506bcab9b8e9ffed8697213cf66190484748741f05c59b847a103be171360f7fd6ddb57dfd86ed34a123f72860b76e533ed46bb53a4852
2021-11-19configure.ac: remove BashismMatt Whitlock
2021-11-19util: Add missing fstatfs to syscall sandboxMarcoFalke
2021-11-19test: Remove sanitizer suppression ↵MarcoFalke
implicit-signed-integer-truncation:netaddress.cpp This reverts commit fa865287e5f35e0a376785834e966dd202d2959e. This was fixed in commit efd6f904c78769ad2e93c1f1de43014d284e7561.
2021-11-18Remove strtol in torcontrolMarcoFalke
2021-11-18net: split CConnman::SocketHandler()Vasil Dimov
`CConnman::SocketHandler()` does 3 things: 1. Check sockets for readiness 2. Process ready listening sockets 3. Process ready connected sockets Split the processing (2. and 3.) into separate methods to make the code easier to grasp. Also, move the processing of listening sockets after the processing of connected sockets to make it obvious that there is no dependency and also explicitly release the snapshot before dealing with listening sockets - it is only necessary for the connected sockets part.
2021-11-18style: remove unnecessary bracesVasil Dimov
They were needed to define the scope of `LOCK(cs_vNodes)` which was removed in the previous commit. Re-indent in a separate commit to ease review (use `--ignore-space-change`).
2021-11-18net: keep reference to each node during socket waitVasil Dimov
Create the snapshot of `CConnman::vNodes` to operate on earlier in `CConnman::SocketHandler()`, before calling `CConnman::SocketEvents()` and pass the `vNodes` copy from the snapshot to `SocketEvents()`. This will keep the refcount of each node incremented during `SocketEvents()` so that the `CNode` object is not destroyed before `SocketEvents()` has finished. Currently in `SocketEvents()` we only remember file descriptor numbers (when not holding `CConnman::cs_vNodes`) which is safe, but we will change this to remember pointers to `CNode::m_sock`.
2021-11-18net: dedup and RAII-fy the creation of a copy of CConnman::vNodesVasil Dimov
The following pattern was duplicated in CConnman: ```cpp lock create a copy of vNodes, add a reference to each one unlock ... use the copy ... lock release each node from the copy unlock ``` Put that code in a RAII helper that reduces it to: ```cpp create snapshot "snap" ... use the copy ... // release happens when "snap" goes out of scope ```
2021-11-18Merge bitcoin/bitcoin#23540: test: add decodescript RPC test for P2TR output ↵MarcoFalke
script 83f6c0f9ef3a1962be02db479ddf87cb22b8c14b test: add decodescript RPC test for P2TR output type (Sebastian Falbesoner) 099c6957de4246669b1dddba10561e802f5e8a01 test: check for decodescript RPC 'type' results (Sebastian Falbesoner) 0d43525c61b09a283bc38b96f3827a95be976aba test: add logging to rpc_decodescript.py (Sebastian Falbesoner) Pull request description: This PR adds a functional sub-test for calling `decodescript` with a P2TR / segwit v1 output script (`OP_1 <32-bytes push>`), expecting to return "witness_v1_taproot" as `type` result. In the first two commits, the test `rpc_decodescript.py` is also improved by adding logging (plus getting rid of the enumerations) and also adding missing checks `type` result checks for all other output script types. ACKs for top commit: MarcoFalke: ACK 83f6c0f9ef3a1962be02db479ddf87cb22b8c14b Tree-SHA512: 5fbfa693f711f55022edbc26109b076610ba248bef5282822656f5a2289636a5da6e2c1a4d8ab16a599af5701dafb3452e8be653d0e5f09e59ed87b8144d46ef
2021-11-18Merge bitcoin/bitcoin#22981: doc: Fix incorrect C++ named argsfanquake
fac49470ca36ff944a613f4358386bf8e0967427 doc: Fix incorrect C++ named args (MarcoFalke) Pull request description: Incorrect named args are source of bugs, like #22979. Fix that by correcting them and adjust the format, so that clang-tidy can check it. ACKs for top commit: fanquake: ACK fac49470ca36ff944a613f4358386bf8e0967427 - `run-clang-tidy` works for me now. Tree-SHA512: 2694e17a1586394baf30bbc479a913e4bad361221e8470b8739caf30aacea736befc73820f3fe56f6207d9f5d969323278d43a647f58c3497e8e44cad79f8934
2021-11-18test: add decodescript RPC test for P2TR output typeSebastian Falbesoner
2021-11-18test: check for decodescript RPC 'type' resultsSebastian Falbesoner
2021-11-17test: add logging to rpc_decodescript.pySebastian Falbesoner
Also remove the enumerations ("1)", "2)"...) from the test cases as those potentially hinder maintainability; e.g. if a new case in inserted in-between, all the remaining enumerations would need to be adapted.
2021-11-17Merge bitcoin/bitcoin#22881: doc: provide context for ↵W. J. van der Laan
CNetAddr::UnserializeV1Array() and span.h with lifetimebound 33c6a208a9e2512a174c99c224a933a59f091bc2 span, doc: provide span.h context and explain lifetimebound definition (Jon Atack) d14395bc5db55331115fa3c1e71741d1de7f092f net, doc: provide context for UnserializeV1Array() (Jon Atack) Pull request description: Add contextual documentation for developers and future readers of the code regarding - CNetAddr::UnserializeV1Array (see #22140) - Span and why it defines Clang lifetimebound locally rather than using the one in attributes.h ACKs for top commit: laanwj: Documentation review ACK 33c6a208a9e2512a174c99c224a933a59f091bc2 Tree-SHA512: cb8e6a6c23b36c9ef7499257e97c5378ec895bb9122b79b63b572d9721a1ae6ce6c0be7ad61bdf976c255527ae750fc9ff4b3e03c07c6c797d14dbc82ea9fb3a
2021-11-17test: refactor: replace OP_1/OP_TRUE magic numbers by constantsSebastian Falbesoner
2021-11-17test: refactor: take use of `create_block` txlist parameterSebastian Falbesoner
Passing a list of transactions `txlist` to `create_block` appends them to the block, hence we don't need to do that manually anymore. The merkle root calculation can also be removed, since this is done in the end of the helper.
2021-11-17test: refactor: take use of `create_block` version parameter (or use default)Sebastian Falbesoner
2021-11-17util: ParseByteUnits - Parse a string with suffix unit [k|K|m|M|g|G|t|T]Douglas Chimento
A convenience utility for human readable arguments/config e.g. -maxuploadtarget=500g