Commit Graph

21487 Commits

Author SHA1 Message Date
PastaPastaPasta
7c330ab5e9 fix(qt): fix crash when first enabling governance tab due to null-ptr deref (#4795)
Decided to also apply the same logic to the other items so that we don't do nullptr dereferences

replication
```
./src/qt/dash-qt --regtest --resetguisettings
Enable governance
shutdown
```
2022-04-25 14:26:59 -05:00
UdjinM6
c0240da890
Merge pull request #4791 from UdjinM6/bp4790
[v18.x] backport 4790
2022-04-21 05:03:03 +03:00
UdjinM6
bf3319cb26
instantsend: create islock/isdlock based on the quorum rotation activation status (#4790) 2022-04-21 05:00:06 +03:00
UdjinM6
3ebbefd380
Merge pull request #4783 from PastaPastaPasta/v18.x-bc-pr1
[v18.x] Misc Backports
2022-04-20 23:24:28 +03:00
PastaPastaPasta
ed12b8d29d fix(instantsend): avoid an iterator invalidation in pendingInstantSendLocks handling (#4787)
* fix(instantsend): avoid an iterator invalidation in pendingInstantSendLocks handling

this also removes the following, as it doesn't take into account deterministic / not deterministic
```
if (pendingInstantSendLocks.size() <= maxCount) {
    pend = std::move(pendingInstantSendLocks);
}
```

Also uses structured bindings

* suggestions

Co-authored-by: UdjinM6 <UdjinM6@users.noreply.github.com>
2022-04-20 14:35:36 -05:00
PastaPastaPasta
e83673f282 fix: adjust nWindowSize and nThresholdStart and nThresholdMin (#4786) 2022-04-20 14:35:26 -05:00
thephez
f9aba3efa5
docs: update bips.md (#4780)
* docs: update bips.md

* docs: switch to reference Dash version

* Update doc/bips.md

Co-authored-by: UdjinM6 <UdjinM6@users.noreply.github.com>

Co-authored-by: UdjinM6 <UdjinM6@users.noreply.github.com>
2022-04-19 11:55:09 -05:00
UdjinM6
79107df6bf
tests: fix wait_for_* methods, force mnsync on non-mns too (#4782)
* tests: fix `wait_for_*` methods

should not override `all_ok` once it's `False`

* tests: force non-mns to switch to "fully synced" mnsync status in `setup_network`

like we do this for the controller node and all mns already
2022-04-19 19:42:52 +03:00
thephez
5d72da6f18
fix: add missing includes (#4781) 2022-04-19 09:25:20 +03:00
PastaPastaPasta
63bd2cbdb0
refactor: only do LogPrintfFinalCommitment if LogAccept LLMQ (#4779) 2022-04-19 09:22:30 +03:00
PastaPastaPasta
9b8c2dc7c6
fix(rpc): display proper governance fee in getgovernanceinfo (#4778) 2022-04-19 09:22:03 +03:00
ktechmidas
712f60dd21
Fix: Use github workspace for building image (#4775)
* Fix: Use github workspace for building image

* Fix: Ensure correct dir for docker-entrypoint.sh
2022-04-19 09:11:04 +03:00
UdjinM6
1df7f90fce
llmq: fix off-by-1 in CollectSigSharesToSendConcentrated (#4773) 2022-04-19 09:09:55 +03:00
UdjinM6
89f606a927
trivial: add some missing dashifications (#4772) 2022-04-19 09:09:42 +03:00
UdjinM6
26d774bd6f
llmq: Clean old DKG contributions up (#4763)
* llmq: Clean old DKG contributions up

* apply review suggestions and a bit more

* use scheduler
2022-04-19 09:08:57 +03:00
Vijay
c66a2ec6fd
scripted-diff: Merge #18533 Replace strCommand with msg_type (#4761)
-BEGIN VERIFY SCRIPT-
sed -i 's/\<strCommand\>/msg_type/g' src/coinjoin/client.cpp
sed -i 's/\<strCommand\>/msg_type/g' src/coinjoin/client.h
sed -i 's/\<strCommand\>/msg_type/g'  src/coinjoin/server.cpp
sed -i 's/\<strCommand\>/msg_type/g'  src/coinjoin/server.h
sed -i 's/\<strCommand\>/msg_type/g'  src/evo/mnauth.cpp
sed -i 's/\<strCommand\>/msg_type/g'  src/evo/mnauth.h
sed -i 's/\<strCommand\>/msg_type/g'  src/governance/governance.cpp
sed -i 's/\<strCommand\>/msg_type/g'  src/governance/governance.h
sed -i 's/\<strCommand\>/msg_type/g'  src/llmq/blockprocessor.cpp
sed -i 's/\<strCommand\>/msg_type/g'  src/llmq/blockprocessor.h
sed -i 's/\<strCommand\>/msg_type/g'  src/llmq/chainlocks.cpp
sed -i 's/\<strCommand\>/msg_type/g'  src/llmq/chainlocks.h
sed -i 's/\<strCommand\>/msg_type/g'  src/llmq/dkgsessionhandler.cpp
sed -i 's/\<strCommand\>/msg_type/g'  src/llmq/dkgsessionhandler.h
sed -i 's/\<strCommand\>/msg_type/g'  src/llmq/dkgsessionmgr.cpp
sed -i 's/\<strCommand\>/msg_type/g'  src/llmq/dkgsessionmgr.h
sed -i 's/\<strCommand\>/msg_type/g'  src/llmq/instantsend.cpp
sed -i 's/\<strCommand\>/msg_type/g'  src/llmq/instantsend.h
sed -i 's/\<strCommand\>/msg_type/g'  src/llmq/quorums.cpp
sed -i 's/\<strCommand\>/msg_type/g'  src/llmq/quorums.h
sed -i 's/\<strCommand\>/msg_type/g'  src/llmq/signing.cpp
sed -i 's/\<strCommand\>/msg_type/g'  src/llmq/signing.h
sed -i 's/\<strCommand\>/msg_type/g'  src/llmq/signing_shares.cpp
sed -i 's/\<strCommand\>/msg_type/g'  src/llmq/signing_shares.h
sed -i 's/\<strCommand\>/msg_type/g'  src/masternode/sync.cpp
sed -i 's/\<strCommand\>/msg_type/g'  src/masternode/sync.h
sed -i 's/\<strCommand\>/msg_type/g'  src/net_processing.cpp
sed -i 's/\<strCommand\>/msg_type/g'  src/spork.cpp
sed -i 's/\<strCommand\>/msg_type/g'  src/spork.h
-END VERIFY SCRIPT-
2022-04-18 11:47:26 -05:00
PastaPastaPasta
be44aa455d
fix: add missing include (#4770) 2022-04-16 22:33:44 +03:00
UdjinM6
d1592dae2d
Merge pull request #4769 from PastaPastaPasta/develop-trivial-2022-04-16
trivial backports 2022 04 16
2022-04-16 22:31:30 +03:00
UdjinM6
e5120ab01c
trivial: add missing whitespaces (#4771) 2022-04-16 22:30:39 +03:00
MarcoFalke
a34237c54b Merge bitcoin/bitcoin#21996: p2p: pass strings to NetPermissions::TryParse functions by const ref
39393479c514f271c42750ffcd0adc6bc1db2e2f p2p: pass strings to NetPermissions::TryParse functions by const ref (Jon Atack)

Pull request description:

  instead of by value, as these are "in" params that are not cheap to copy.

  Reference: https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#f16-for-in-parameters-pass-cheaply-copied-types-by-value-and-others-by-reference-to-const

ACKs for top commit:
  MarcoFalke:
    cr ACK 39393479c514f271c42750ffcd0adc6bc1db2e2f

Tree-SHA512: 294fe0f2d900293b4447d4e1f0ccc60c1ed27b3bdbd0f5d71d3dbf71de86879638b1b813fadfb44c58b4acff4e7d75b7ed6a4f9cc5fcf627108224e6a21b524c
2022-04-16 10:47:42 -06:00
Wladimir J. van der Laan
661eaec773 Merge #19256: gui: change combiner for signals to optional_last_value
f1a0314c537791f202dfb7c1209f0e04ba7988c3 gui: change combiner for signals to optional_last_value (Cory Fields)

Pull request description:

  [`optional_last_value`](https://www.boost.org/doc/libs/1_73_0/doc/html/boost/signals2/optional_last_value.html), which does not throw, has replaced `last_value` as
  Boosts default combiner. Besides being better supported, it also doesn't
  trigger gcc's `-Wmaybe-unitialized` warning, presumably because exceptions no
  longer bubble-up out of signals:

  ```bash
  In file included from ui_interface.cpp:9:
  /bitcoin/depends/x86_64-pc-linux-gnu/share/../include/boost/signals2/last_value.hpp: In member function 'boost::signals2::detail::signal_impl<R(Args ...), Combiner, Group, GroupCompare, SlotFunction, ExtendedSlotFunction, Mutex>::result_type boost::signals2::detail::signal_impl<R(Args ...), Combiner, Group, GroupCompare, SlotFunction, ExtendedSlotFunction, Mutex>::operator()(Args ...) [with Combiner = boost::signals2::last_value<bool>; Group = int; GroupCompare = std::less<int>; SlotFunction = boost::function<bool(const bilingual_str&, const std::__cxx11::basic_string<char>&, unsigned int)>; ExtendedSlotFunction = boost::function<bool(const boost::signals2::connection&, const bilingual_str&, const std::__cxx11::basic_string<char>&, unsigned int)>; Mutex = boost::signals2::mutex; R = bool; Args = {const bilingual_str&, const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, unsigned int}]':
  /bitcoin/depends/x86_64-pc-linux-gnu/share/../include/boost/signals2/last_value.hpp:54:36: warning: '*((void*)& value +1)' may be used uninitialized in this function [-Wmaybe-uninitialized]
           if(value) return value.get();
                                      ^
  /bitcoin/depends/x86_64-pc-linux-gnu/share/../include/boost/signals2/last_value.hpp:43:21: note: '*((void*)& value +1)' was declared here
           optional<T> value;
                       ^~~~~
  /bitcoin/depends/x86_64-pc-linux-gnu/share/../include/boost/signals2/last_value.hpp: In member function 'boost::signals2::detail::signal_impl<R(Args ...), Combiner, Group, GroupCompare, SlotFunction, ExtendedSlotFunction, Mutex>::result_type boost::signals2::detail::signal_impl<R(Args ...), Combiner, Group, GroupCompare, SlotFunction, ExtendedSlotFunction, Mutex>::operator()(Args ...) [with Combiner = boost::signals2::last_value<bool>; Group = int; GroupCompare = std::less<int>; SlotFunction = boost::function<bool(const bilingual_str&, const std::__cxx11::basic_string<char>&, const std::__cxx11::basic_string<char>&, unsigned int)>; ExtendedSlotFunction = boost::function<bool(const boost::signals2::connection&, const bilingual_str&, const std::__cxx11::basic_string<char>&, const std::__cxx11::basic_string<char>&, unsigned int)>; Mutex = boost::signals2::mutex; R = bool; Args = {const bilingual_str&, const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, unsigned int}]':
  /bitcoin/depends/x86_64-pc-linux-gnu/share/../include/boost/signals2/last_value.hpp:54:36: warning: '*((void*)& value +1)' may be used uninitialized in this function [-Wmaybe-uninitialized]
           if(value) return value.get();
                                      ^
  /bitcoin/depends/x86_64-pc-linux-gnu/share/../include/boost/signals2/last_value.hpp:43:21: note: '*((void*)& value +1)' was declared here
           optional<T> value;
                       ^~~~~
  ```

  The change in default happened in [Boost 1.39.0](https://www.boost.org/users/history/version_1_39_0.html) (along with the introduction of the Signals2 library.

  More information is also available here https://www.boost.org/doc/libs/1_73_0/doc/html/signals2/rationale.html#id-1.3.36.9.4:
  > The default combiner for Boost.Signals2 has changed from the last_value combiner used by default in the original Boost.Signals library.
  > This is because last_value requires that at least 1 slot be connected to the signal when it is invoked (except for the last_value<void> specialization).
  >  In a multi-threaded environment where signal invocations and slot connections and disconnections may be happening concurrently, it is difficult to fulfill this requirement. When using optional_last_value, there is no requirement for slots to be connected when a signal is invoked, since in that case the combiner may simply return an empty boost::optional.

ACKs for top commit:
  laanwj:
    ACK f1a0314c537791f202dfb7c1209f0e04ba7988c3

Tree-SHA512: 3600f85019a3591b141dc9207f8a7e66d16d9996cf97fdf08f5133a212d55c591955ab835ffbdca20b5d62711578bc305d5525c75546fa957f180192e2a80c1e
2022-04-16 10:47:00 -06:00
MarcoFalke
eff89074c4 Merge #19309: refactor: Fix link error with --enable-debug
b83cc0fc94df99f0334430e63e8c9fa6ae3790e1 Fix link error with --enable-debug (Hennadii Stepanov)

Pull request description:

  Fixes a link error on master (39bd9ddb8783807b9cde6288233e86ad7c85d61f):
  ```
  $ ./configure --enable-debug
  $ make
  ...
  bitcoin_wallet-bitcoin-wallet.o:(.data.rel.ro+0x0): undefined reference to `InitError(bilingual_str const&)'
  libbitcoin_wallet_tool.a(libbitcoin_wallet_tool_a-wallettool.o):(.data.rel.ro+0x8): undefined reference to `InitError(bilingual_str const&)'
  libbitcoin_wallet.a(libbitcoin_wallet_a-salvage.o):(.data.rel.ro+0x8): undefined reference to `InitError(bilingual_str const&)'
  libbitcoin_wallet.a(libbitcoin_wallet_a-wallet.o):(.data.rel.ro+0x8): undefined reference to `InitError(bilingual_str const&)'
  libbitcoin_wallet.a(libbitcoin_wallet_a-walletdb.o):(.data.rel.ro+0x8): undefined reference to `InitError(bilingual_str const&)'
  libbitcoin_wallet.a(libbitcoin_wallet_a-wallet.o):(.data.rel.ro+0x8): more undefined references to `InitError(bilingual_str const&)' follow
  collect2: error: ld returned 1 exit status
  ```

  See:
  - https://github.com/bitcoin/bitcoin/pull/19295#issuecomment-645471771
  - https://github.com/bitcoin/bitcoin/pull/19295#issuecomment-645487182

ACKs for top commit:
  achow101:
    Re-ACK b83cc0fc94df99f0334430e63e8c9fa6ae3790e1

Tree-SHA512: f563d978b6725284049449bb0b3a184d356f32e9b63bcadb0ba71352d3d521af3dbb4a7b4fc0a5a620ed99c357e59f62249c10d0defc0cbe7775f2c06791dabe
2022-04-16 10:46:58 -06:00
UdjinM6
9735286db3
Merge pull request #4768 from PastaPastaPasta/chore/bump-version-18-rc1
chore: bump version in configure.ac to v18.0.0.0-rc1
2022-04-16 17:46:59 +03:00
Odysseas Gabrielides
83ef1c6c66
feat: implement quorum rotation and updated LLMQ parameters (#4752)
* Added GET_SNAPSHOT_INFO message handling

* Quorum members by rotation

* Quorum utils functions

* Handle GET_QUORUM_ROTATION_INFO with baseBlockHash from client

* Storing QuorumSnaphots in evoDB when requesting them

* Added DIP Enforcement param

* quorumIndex cache

* Quorum Rotation deployment control

* Usage of Bitsets for storing CQuorumSnapshots

* Correct handling of early quorum quarters

* More asserts

* Corrections

* Handling of quorumIndex

* Refactoring of truncate mechanism

* Various fixes

* Interface correction

* Added template type for indexed cache

* Added quorumIndex into commitmenHash

* Various changes

* Needs to update maqQuorumsCache along with indexedQuorumsCache

* Added CFinalCommitment version 2

* Renamed variables

* Fixes

* Refactoring & correct caching of quorumMembers by rotation

* Added assertions

* Refactoring

* Interface change

* Handling of previous DKG session failure

* Applied refactoring

* Build quarter members improvments

* Merge Quorum Rotation and Decreased fee into one deployment (DIP24)

* Added new LLMQ Type

* Added functional tests + refactoring

* Refactoring

* Spreaded Quorum creation and Quorum Index adaptation

* quorumIndex adaptations

* Added quorumIndex in CFinalCommitment

* Latest work

* Final refactoring

* Batch of refactoring

* Fixes for tests

* Fix for CFinalCommitment

* Fix for Quorums

* Fix

* Small changes

* Thread sync fic

* Safety changes

* Reuse mns when needed

* Refactoring

* More refactoring

* Fixes for rotationinfo handling

* Fix for rotation of members

* Correct order of MNs lists in Quorum Snapshots

* Adding extra logs

* Sync rotation quorums + qrinfo changes

* Fix + extra logs

* Removed redundant field

* Fix for null final commitment + refactoring

* Added timers in tests

* Fix for qrinfo message: quorumdiff and merkleRootQuorums

* Small changes for rotation test

* Remove reading from scanQuorumCache

* Added quorum list output

* Crash fix

* Experimental commit

* apply changes to specialtxman.cpp from specialtx.cpp

* all the changes

* substancially speed up feature_llmq_rotation.py

* reenable asserts, add check for reorgs

* Refactoring

* Added extra logs

* format

* trivial

* drop extra boost includes

* drop ContainsMN

* fix ScanQuorums

* check quorum hash and index in CFinalCommitment::Verify

* fix/tweak tests

* IsQuorumRotationEnabled should be aware of the context

* Calculating members based on earlier block.

* Fix for Quorum Members Cache

* Removed duplicate size of baseBlockHashes

* Adaptations of qrinfo to -8 mn lists

* Introduction of llmqTypeDIP24InstantSend

* Adaptation for llmqTypeDIP24InstantSend

* Adaptations for IS

* bump protocol version

* Added feature_llmq_is_migration test

* Various cleanups

* use unordered_lru_cache for quorumSnapshotCache

* trivial refactor ComputeQuorumMembersByQuarterRotation

* Reduced CFinalCommitment::quorumIndex from 32 to 16 bits

* Keep verified LLMQ relay connections

* Experimental Relay connection fix

* Fix for EnsureQuorumConnections rotation

* Using only valid Mns for checking

* Override of nPowTargetSpacing (devnet only)

* Show penalty score in masternode rpc

* fixups

* Rotation refactoring

* Update src/chainparams.cpp

* Replaced LogPrintf with LogPrint

* IS locking fix once DIP24 activation

* Various cleanup

* Updated MIN_MASTERNODE_PROTO_VERSION

* Introduce LLMQ_TEST_INSTANTSEND reg-test only quorum and actually test switching to dip0024 quorums

* Renamed field lastQuorumHashPerIndex

* Renamed to DIP0024

* chore: update nStartTime and nTimeout for mainnet / testnet for DEPLOYMENT_DIP0024

Co-authored-by: Kittywhiskers Van Gogh <63189531+kittywhiskers@users.noreply.github.com>
Co-authored-by: pasta <pasta@dashboost.org>
Co-authored-by: UdjinM6 <UdjinM6@users.noreply.github.com>
2022-04-16 17:46:04 +03:00
pasta
728699d2cc chore: bump version in gitian-descriptors and README.md 2022-04-16 07:59:23 -06:00
pasta
b1f84e5db6 chore: bump version in configure.ac to v18.0.0.0-rc1 2022-04-15 13:01:08 -06:00
UdjinM6
856811e1a1
Merge pull request #4759 from PastaPastaPasta/develop-trivial-2022-04-07
trivial backports 2022 04 07
2022-04-13 15:04:16 +03:00
PastaPastaPasta
6b9f7c3a6b
chore: bump MIN_PEER_PROTO_VERSION to 70215 (#4764)
* chore: bump MIN_PEER_PROTO_VERSION to 70215

simplifies logic, removes branches

This protocol version is from v14 in May of 2019, should be more than safe to bump this

* drop MIN_COINJOIN_PEER_PROTO_VERSION

Co-authored-by: UdjinM6 <UdjinM6@users.noreply.github.com>
2022-04-12 21:03:12 +03:00
UdjinM6
0ea2d5aaf5
refactor: Drop args that were deprecated long time ago (#4762)
Trying to use them results in "Error parsing command line arguments: Invalid parameter" error. Should either add them to hidden_args or drop them. The latter seems like a better option since no one should be using them by now anyway.
2022-04-12 20:56:45 +03:00
fanquake
55bd901c7f Merge bitcoin/bitcoin#24112: build: pass win32-dll to LT_INIT()
80e78b6a0479094cae642726f74a17d09b708ddc build: pass win32-dll to LT_INIT() (fanquake)

Pull request description:

  This is the recommended way to support building PE DLLs with modern mingw
  toolchains and libtool. I made a similar change upstream in the secp256k1
  repo: https://github.com/bitcoin-core/secp256k1/pull/1022. Note that we already
  pass `-no-undefined` to our libtool LDFLAGS.

  > This option should be used if the package has been ported to build clean
  > dlls on win32 platforms.
  > If this macro is not used, libtool will assume that the package libraries
  > are not dll clean and will build only static libraries on win32 hosts.

  See:
  https://www.gnu.org/software/libtool/manual/libtool.html#LT_005fINIT
  https://www.gnu.org/software/gnulib/manual/html_node/Libtool-and-Windows.html
  https://autotools.io/libtool/windows.html
  https://github.com/bitcoin-core/secp256k1/issues/923

  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
  a504bac1c81818e2fa7e14d4b1e2ddf665b9b79683fff4390ec1d76335157012  guix-build-80e78b6a0479/output/aarch64-linux-gnu/SHA256SUMS.part
  ef9193402c261adb993f6644de3f49858acb6d120002505e0def4827b8772294  guix-build-80e78b6a0479/output/aarch64-linux-gnu/bitcoin-80e78b6a0479-aarch64-linux-gnu-debug.tar.gz
  030961da6966a14d3dd7322dc7559dfdc0bdeb9f39d042f379c41bab98303d28  guix-build-80e78b6a0479/output/aarch64-linux-gnu/bitcoin-80e78b6a0479-aarch64-linux-gnu.tar.gz
  c485e456d325cdd64111eefe36b007e7bcb9e5eb61b1ab752e601023f5853e55  guix-build-80e78b6a0479/output/arm-linux-gnueabihf/SHA256SUMS.part
  ff0481c57a3ab15c9651ead7b77990c37af9360bfbc1f5285ad5f7d0c66f5acc  guix-build-80e78b6a0479/output/arm-linux-gnueabihf/bitcoin-80e78b6a0479-arm-linux-gnueabihf-debug.tar.gz
  5f582e30bbdba9df175bf4c5d4aae64e2a1cf572086390ae6962d3ee9f0325a9  guix-build-80e78b6a0479/output/arm-linux-gnueabihf/bitcoin-80e78b6a0479-arm-linux-gnueabihf.tar.gz
  e96c601af96e851a0351c6f8975feb47623a2dd5e3dd2c15bcdfe8435f845538  guix-build-80e78b6a0479/output/arm64-apple-darwin/SHA256SUMS.part
  a50db7a8a9b6415842807644760110f2e01665b922b2762634d94e2b497cbd4a  guix-build-80e78b6a0479/output/arm64-apple-darwin/bitcoin-80e78b6a0479-arm64-apple-darwin.tar.gz
  0f3707a2423483f84be5edff91f8e657cf71ab097d2550f4369760ac8c6a1644  guix-build-80e78b6a0479/output/arm64-apple-darwin/bitcoin-80e78b6a0479-osx-unsigned.dmg
  33252a9895c013cfbea06444d6372a23cc555831e4675705b4d7d6b065f06cff  guix-build-80e78b6a0479/output/arm64-apple-darwin/bitcoin-80e78b6a0479-osx-unsigned.tar.gz
  2ab70177c80c36e98018d07e2aece084c7d3d604e7dc12d2df2e1a077e06b983  guix-build-80e78b6a0479/output/dist-archive/bitcoin-80e78b6a0479.tar.gz
  cc0237b05948472efa61f7d5a666d8e97b5abeb7f498f3f72d46ff69be38bcf4  guix-build-80e78b6a0479/output/powerpc64-linux-gnu/SHA256SUMS.part
  b3778fd81bf4e432ad1590792673c91d09c8f8f43daef4cbe0852bca49e1ed57  guix-build-80e78b6a0479/output/powerpc64-linux-gnu/bitcoin-80e78b6a0479-powerpc64-linux-gnu-debug.tar.gz
  bebe78f0e6a062d943c99470f12bfc520381acec40e0409915cc8d5dccbe5999  guix-build-80e78b6a0479/output/powerpc64-linux-gnu/bitcoin-80e78b6a0479-powerpc64-linux-gnu.tar.gz
  350f7b22562d8b6642f37afb3e192d36dbcb360a361c8b834d0f7d50401667b8  guix-build-80e78b6a0479/output/powerpc64le-linux-gnu/SHA256SUMS.part
  9a488fbd71c53092feda8dfccecc4ae7d10aa2efe48f99f150cb2322bb28c5e6  guix-build-80e78b6a0479/output/powerpc64le-linux-gnu/bitcoin-80e78b6a0479-powerpc64le-linux-gnu-debug.tar.gz
  06d3c472171124d6ca92f95f7d5cb7fc4a523c25396dbbb9522cab920867d3db  guix-build-80e78b6a0479/output/powerpc64le-linux-gnu/bitcoin-80e78b6a0479-powerpc64le-linux-gnu.tar.gz
  67d591d5f15933d56046d0b8208970dc812ddd240c14a4c3b635cdc256ae5205  guix-build-80e78b6a0479/output/riscv64-linux-gnu/SHA256SUMS.part
  f9a853d703ac153748f3d9f60d4a74a72c75966dc1d3711b688ebd003ff9389c  guix-build-80e78b6a0479/output/riscv64-linux-gnu/bitcoin-80e78b6a0479-riscv64-linux-gnu-debug.tar.gz
  07554223c5ab3b940f53f9483054023e639d4e9902810b3d5c1875fd390064ea  guix-build-80e78b6a0479/output/riscv64-linux-gnu/bitcoin-80e78b6a0479-riscv64-linux-gnu.tar.gz
  294dc1274391b17fb750eac7c76e59c18e972ed3fbf8bccd53ba514843fbc59f  guix-build-80e78b6a0479/output/x86_64-apple-darwin/SHA256SUMS.part
  cc5c1256ca57f80d5ecb93fe2ac477f90945206430545b0463813f7099804f47  guix-build-80e78b6a0479/output/x86_64-apple-darwin/bitcoin-80e78b6a0479-osx-unsigned.dmg
  c5ff5cf7a8119981f8a1aa2306ff9e84c60e5c9845836eb2562941801495c7de  guix-build-80e78b6a0479/output/x86_64-apple-darwin/bitcoin-80e78b6a0479-osx-unsigned.tar.gz
  5951712d82391ba0471f253a7f87701b464dad1a90bb1d91866b0c7c51164a8f  guix-build-80e78b6a0479/output/x86_64-apple-darwin/bitcoin-80e78b6a0479-osx64.tar.gz
  28f84ed57769a642b1679acf90fdaad7ac489d59598d4a8a859021d39a32d878  guix-build-80e78b6a0479/output/x86_64-linux-gnu/SHA256SUMS.part
  f7c37c47ffaec6fbca36c3c4897b2df2fa7dd5327cb860501eec9d9e987ea5c7  guix-build-80e78b6a0479/output/x86_64-linux-gnu/bitcoin-80e78b6a0479-x86_64-linux-gnu-debug.tar.gz
  c7c6db897a604e5a85f37938b763538751a133bbab90e80904d4b7198b227d95  guix-build-80e78b6a0479/output/x86_64-linux-gnu/bitcoin-80e78b6a0479-x86_64-linux-gnu.tar.gz
  80b1e0e249cefe8941ca0e1a563f479c5e4408da6f0aa02c127182a09310dd8c  guix-build-80e78b6a0479/output/x86_64-w64-mingw32/SHA256SUMS.part
  e7f8b2cd0f0f465e80d96338dcc398306b321a9c99556ca1d39f094752702a21  guix-build-80e78b6a0479/output/x86_64-w64-mingw32/bitcoin-80e78b6a0479-win-unsigned.tar.gz
  5191f309c758135fd597df6bc9ef9e2c2746947abb74b38c32e5b6e073fa0995  guix-build-80e78b6a0479/output/x86_64-w64-mingw32/bitcoin-80e78b6a0479-win64-debug.zip
  1569de943ca054841141c700f1d4fca2658228b85eee1f44d201b0c881218ef0  guix-build-80e78b6a0479/output/x86_64-w64-mingw32/bitcoin-80e78b6a0479-win64-setup-unsigned.exe
  c8d78aeedeeaf7af4d325d38fb5e2307965b0080ce08a8cde802afaaa73f157d  guix-build-80e78b6a0479/output/x86_64-w64-mingw32/bitcoin-80e78b6a0479-win64.zip
  ```

ACKs for top commit:
  hebasto:
    ACK 80e78b6a0479094cae642726f74a17d09b708ddc

Tree-SHA512: fb4a6a443288723776491a9795429273b4a454cfd8230e75570d44fcd71037dc784a2061f6a979322ebc8f9b4131dfbb0494146ab3863f94829e72922be4ec07
2022-04-11 09:46:40 -07:00
fanquake
7e598dd632 Merge bitcoin/bitcoin#24372: bench: Avoid deprecated use of volatile +=
9999f891d1c9093e552492cf8ccc3168370c7a39 bench: Avoid deprecated use of volatile += (MarcoFalke)

Pull request description:

  Deprecated in C++20 according to https://eel.is/c++draft/expr.ass#6 .

  ```
  bench/examples.cpp:16:13: warning: compound assignment with ‘volatile’-qualified left operand is deprecated [-Wvolatile]
     16 |         sum += sin(d);
        |         ~~~~^~~~~~~~~
  ```

  While C++20 is currently unsupported, I don't see any downside to a minor fixup to an example benchmark. This will also make a hypothetical C++20 patch smaller.

ACKs for top commit:
  fanquake:
    ACK 9999f891d1c9093e552492cf8ccc3168370c7a39

Tree-SHA512: ca7d660fa8eba347a4648408a8b97a0ecb8263a825da7abd59129d783058102581e05b273667989f95480436a66d5384bd1e92d9ae79408f5b30e2178935cc38
2022-04-11 09:46:40 -07:00
MarcoFalke
dd6945e10b Merge bitcoin/bitcoin#24342: test: remove import socket in test_ipv6_local
460fa8e0d9c1d08b5b5bca3fa02ba2763337aaf1 test: remove `import socket` in test_ipv6_local (brunoerg)

Pull request description:

  Since this module (`socket`) is imported at the top of file, there is no need to import it again within the function.

ACKs for top commit:
  MarcoFalke:
    cr ACK 460fa8e0d9c1d08b5b5bca3fa02ba2763337aaf1

Tree-SHA512: 031c17a776dedaa21b3ec6458ca822304e76a5a3f4494406e6b7b04f08cc2abefcfe742c462b60c9b3e2fee3cd110a69ed5ad413357886dc7b823abc916ea40e
2022-04-11 09:46:40 -07:00
fanquake
9fb3edaae7 Merge bitcoin/bitcoin#24326: build: minor cleanups to native_clang package
4255b46693591ab930cc3c7f992ccfb6f250db8c build: remove -f from clang cp invocation (fanquake)
dbcaba835d04043528874c999e7c729f5c513ee9 build: remove unused include dir from clang package (fanquake)

Pull request description:

  Pulled out of #21778.

  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
  b7fc20b23d2270f0bf39859fc2d9b75c687a0cceaf287b3871d872e8e7aaaeb6  guix-build-4255b4669359/output/arm64-apple-darwin/SHA256SUMS.part
  bd31487de1f49fd84b1eb37c744ea55b1268d729ec4715e7cb50a768b147628e  guix-build-4255b4669359/output/arm64-apple-darwin/bitcoin-4255b4669359-arm64-apple-darwin.tar.gz
  6eca741ecd7e35e5d917442326e8f64e2f745cb0cf8573e616fb1fc388d3376f  guix-build-4255b4669359/output/arm64-apple-darwin/bitcoin-4255b4669359-osx-unsigned.dmg
  b54797d350e00a597478dadb3c7372d15306c095f63cc3e5257a3b1851856614  guix-build-4255b4669359/output/arm64-apple-darwin/bitcoin-4255b4669359-osx-unsigned.tar.gz
  af212f87138950a398e2cd1c3ebc69bbe90126ac916a735d5a24a91864e0a164  guix-build-4255b4669359/output/dist-archive/bitcoin-4255b4669359.tar.gz
  d25ab8698524f283958e32cbdfaa14d344d905f972c66987ff27286cb2abcdfa  guix-build-4255b4669359/output/x86_64-apple-darwin/SHA256SUMS.part
  39f069317efff319aea55d6f929ee4cd5e4c04cfb5cf84ea1e6500b18e368be3  guix-build-4255b4669359/output/x86_64-apple-darwin/bitcoin-4255b4669359-osx-unsigned.dmg
  dc755eff3cb4e628637f68c3e31a28ae41bbece1339067a2c0042f39899a275c  guix-build-4255b4669359/output/x86_64-apple-darwin/bitcoin-4255b4669359-osx-unsigned.tar.gz
  d084f798f08cb175272ae420a68df3fa69c3b2be2fbe972c929dd4d4214039f7  guix-build-4255b4669359/output/x86_64-apple-darwin/bitcoin-4255b4669359-osx64.tar.gz
  ```

ACKs for top commit:
  hebasto:
    ACK 4255b46693591ab930cc3c7f992ccfb6f250db8c

Tree-SHA512: a8b08a74dca8d6e82c32b23e031ff1b7484d7436d8d8b169c267462766f3ee270ea22342ab81b00daeaed9b93705d51931ff9a327da07337b242e7e0e4d0521c
2022-04-11 09:46:40 -07:00
fanquake
3c041d4137 Merge bitcoin/bitcoin#24277: build: Fix make deploy for Windows when building out of source tree
a5f67b4ca809666661b9dfc773806523e487ea66 build: Fix `make deploy` for Windows when building out of source tree (Hennadii Stepanov)

Pull request description:

  On master (1e7564eca8a688f39c75540877ec3bdfdde766b1):
  ```
  $ make distclean
  $ mkdir ../build
  $ cd ../build
  $ CONFIG_SITE=$PWD/../bitcoin/depends/x86_64-w64-mingw32/share/config.site ../bitcoin/configure
  $ make
  $ make deploy
  ...
  File: "/home/hebasto/GitHub/build/../bitcoin/release/bitcoin-qt.exe" -> no files found.
  Usage: File [/nonfatal] [/a] ([/r] [/x filespec [...]] filespec [...] |
     /oname=outfile one_file_only)
  Error in script "<stdin>" on line 75 -- aborting creation process
  error: could not build bitcoin-22.99.0-win64-setup.exe
  built bitcoin-22.99.0-win64-setup.exe
  ```

  This PR fixes this bug.

ACKs for top commit:
  laanwj:
    Code review ACK a5f67b4ca809666661b9dfc773806523e487ea66

Tree-SHA512: 7ac2f15cdc433fe509f2392d08a3c611b190a11ff92f718902cf9e25cfb9515f3840f4ddf2b1bfb8a1090e85773e671405c838cbe2b970205a12c20ebaf645bd
2022-04-11 09:46:40 -07:00
fanquake
849ead7d6e Merge bitcoin/bitcoin#24288: build, refactor: Drop redundant $(package)_download_file assignments
d644c45e39c45118df86692f9365d25dbba49461 build, refactor: Drop redundant `$(package)_download_file` assignments (Hennadii Stepanov)

Pull request description:

  No need to specify `$(package)_download_file` when it is equal to `$(package)_file_name`.

  Historically, before bitcoin/bitcoin#19817, distinct `$(package)_download_file` and `$(package)_file_name` were used for better portability (I guess) by removing `+` characters from a file name.

  The only package which still use file renaming is `native_capnp`: eca694a4e7/depends/packages/native_capnp.mk (L3-L5)

ACKs for top commit:
  shaavan:
    ACK d644c45e39c45118df86692f9365d25dbba49461
  fanquake:
    ACK d644c45e39c45118df86692f9365d25dbba49461

Tree-SHA512: 488dd0f55cea077174e78a75d8385bacb1a5463883cadeb5fd7c9426865ea5f3a8bad0bd6e8e9d530bce6f0c1715349b3fbabb4e22634348cdd68f5fc8a3c53b
2022-04-11 09:46:40 -07:00
MarcoFalke
ef93418b9a Merge bitcoin/bitcoin#24227: Fix unsigned integer overflow in LoadMempool
fadcd031390dd4588bbb1c07e5020a7131312050 Fix unsigned integer overflow in LoadMempool (MarcoFalke)

Pull request description:

  It doesn't seem ideal to have an integer sanitizer enabled, but then disable it for the whole validation.cpp file.

  This removes one of the two violations.

  This should be a refactor.

ACKs for top commit:
  prayank23:
    Code Review ACK fadcd03139

Tree-SHA512: 9fb2f3d49008a59cd45b7c17be0c88c04e61183197c11c8176865af5532c8d0c940db49a351dd0fc75e1d7fd8678c3b816d34cfca170dc6b9cf8f37fdf1c8cae
2022-04-11 09:46:40 -07:00
MarcoFalke
4e9dc7e046 Merge bitcoin/bitcoin#23543: test: Prevent non-compatible sed binary for scripted-diffs
d8dfc403f74858b79c87f650b5d609aa60a4dc3b script: redirecting stderr to stdout before pipelining into grep (anouar kappitou)
30df5c3dd4d39d9027b0341d01d3233400104893 script: preventing non-compatible sed binary. (anouar kappitou)

Pull request description:

  This Pull request improve scripted diff by checking for non-compatible sed binary. Fixes #19815

ACKs for top commit:
  shaavan:
    reACK d8dfc403f74858b79c87f650b5d609aa60a4dc3b
  theStack:
    Tested ACK d8dfc403f74858b79c87f650b5d609aa60a4dc3b

Tree-SHA512: 4813abb02195e04b8953662e51cba4599789e6185a6d384f56255e2d37c2b16be46c7c8861e44ba1a13d42573a58eb708901472925cb308dba2f602020e9f0f6
2022-04-11 09:46:40 -07:00
fanquake
015034a31d Merge bitcoin/bitcoin#22814: build: Add ability to build qt in depends with -stdlib=libc++
33796a964a8c605ce482959456d1ca78638340d9 build: Add ability to build qt in depends with -stdlib=libc++ (Hennadii Stepanov)

Pull request description:

  This PR makes possible to build the `qt` package in depends against `libc++` for x86_64 platform.

  Fixes #22344.

  Required for #22815.

  Also this PR [fixes](https://github.com/bitcoin/bitcoin/pull/23060#discussion_r716077050) the `[no wallet] [bionic]` task on CI:
  - on master (a8bbd4cc819633ec50ed0f763b6a75330ae055fb), https://api.cirrus-ci.com/v1/task/5558609250615296/logs/ci.log:
  ```
  Options used to compile and link:
    external signer = yes
    multiprocess    = no
    with libs       = yes
    with wallet     = no
    with gui / qt   = no
  ```
  - this PR, https://api.cirrus-ci.com/v1/task/5502605561430016/logs/ci.log:
  ```
  Options used to compile and link:
    external signer = yes
    multiprocess    = no
    with libs       = yes
    with wallet     = no
    with gui / qt   = yes
  ```

ACKs for top commit:
  fanquake:
    ACK 33796a964a8c605ce482959456d1ca78638340d9 - While this sort of string matching is fragile, I think the risk of this causing any actual issues is low.

Tree-SHA512: 586dde2e9864cec7a49aeb4f2b77fb8c4ae96bd10b51f9c6de0cfe8512ad61db15bb7f8d1b0eb6a5a66fd2deee52ac52218f01eb6be107ac12f1a956190de54b
2022-04-11 09:46:40 -07:00
fanquake
4258bfc033 Merge bitcoin/bitcoin#23887: Include patches for Guix
1fa2e801906141e41403a0c8026df29ec0787be3 Include patches for Guix (Rojar Smith)

Pull request description:

  Fix .gitignore exclude the patches at 'contrib/guix/patches/'.

ACKs for top commit:
  hebasto:
    ACK 1fa2e801906141e41403a0c8026df29ec0787be3

Tree-SHA512: 41ca0db2d2ea355341ab5e66516854e6dd91767a9499006c636fff96babf824c7f302c3a6cb9db2374593fcc55b98d06f7c0d5a04f21ebe65fb1239ffdbaad2f
2022-04-11 09:46:40 -07:00
MarcoFalke
b8ae487139 Merge bitcoin/bitcoin#23796: test: check that pruneblockchain RPC fails for future block or timestamp
140a49ce5e547a1b520a7cd063af8308184e7cbf test: check that pruneblockchain RPC fails for future block or timestamp (Sebastian Falbesoner)

Pull request description:

  This PR adds missing test coverage for the `pruneblockchain` RPC for the case that a future block or timestamp is passed:
  8c0bd871fc/src/rpc/blockchain.cpp (L1101)
  8c0bd871fc/src/rpc/blockchain.cpp (L1111)
  Note that the test method `manual_test` gets called twice, once each with `use_timestamp` set to True/False, respectively. Depending on that, the helper function `height` either converts the passed block height to the timestamp of that block, or just returns it without modification.

  The other tests for failures in this RPC are also changed to be more detailled ("Cannot prune blocks because node is not in prune mode", "Negative block height"), as I don't think there is any value in just checking a sub-string. If there is ever an error with the same sub-string is introduced, it's not clear which error is exactly checked with the test, so it makes sense to be as specific as possible.

ACKs for top commit:
  brunoerg:
    tACK 140a49ce5e547a1b520a7cd063af8308184e7cbf

Tree-SHA512: bee3cee9f35c2a63a1839d7ec1f83e354d9d3c0c2ca32d300dca2de8b755d555f769ba2b80ac37d31df6ee7e2b8eaefb8134c4727a7144e47c0f5e34f2cc5822
2022-04-11 09:46:40 -07:00
fanquake
95204d3fa0 Merge bitcoin/bitcoin#23673: build: Include native_X.mk before X.mk
ef77549000ac46eededa3e4a89466024db111524 build: Include native_X.mk before X.mk (Hennadii Stepanov)

Pull request description:

  Unfortunately, our depends build system still lacks 100% reliability.

  On master (57982f419e36d0023c83af2dd0d683ca3160dc2a):
  ```
  $ make --no-print-directory -C depends print-capnp_version MULTIPROCESS=1
  capnp_version=
  ```

  This PR fixes this issue:
  ```
  $ make --no-print-directory -C depends print-capnp_version MULTIPROCESS=1
  capnp_version=0.7.0
  ```

  This PR split off from bitcoin/bitcoin#22552, bitcoin/bitcoin#22555 and bitcoin/bitcoin#22708.

ACKs for top commit:
  Zero-1729:
    tACK ef77549000ac46eededa3e4a89466024db111524
  fanquake:
    ACK ef77549000ac46eededa3e4a89466024db111524

Tree-SHA512: 9818277c82fcef778282a9fe854e48c6b6118cc757fcffa6fd4a2418e3de8b2a2b9d54e31804d22a53b28a28ffa5b8610c983add1969be0c4b3e13e0f2267271
2022-04-11 09:46:40 -07:00
MarcoFalke
039357da7b Merge bitcoin/bitcoin#23728: Use the imperative mood in example subject line
efde11161599deb6d98fb5773c3225d589bb14c2 Use the imperative mood in example subject line (Tobin Harding)

Pull request description:

  The section `Committing Patches` within `CONTIBUTING.md` contains an example commit subject line that violates rule seven of the linked guide to writing commit logs (Chris Beams famous blog post).

  We should practice what we preach, especially in examples :)

  Use the imperative mood in example commit message subject line.

ACKs for top commit:
  jarolrod:
    ACK efde11161599deb6d98fb5773c3225d589bb14c2
  shaavan:
    ACK efde11161599deb6d98fb5773c3225d589bb14c2

Tree-SHA512: f607951020c544a65df2fcb45f40f10d44bc761298d866ef3d3742c63ed21eed4e7a798c361f8449d05781c04133b60f0b78d4402a8235064953a817bb24c7d0
2022-04-11 09:46:40 -07:00
Samuel Dobson
b1d3020568 Merge bitcoin/bitcoin#23254: doc: Fix typo and grammar
ffd11ea87640c8a3d83b6f83ac18e65234fc6002 Fix typo and grammar (Heebs)

Pull request description:

  Fix typo and grammar in the coin selection algorithm's description.

ACKs for top commit:
  meshcollider:
    ACK ffd11ea87640c8a3d83b6f83ac18e65234fc6002

Tree-SHA512: bba07c2efd5140fb3e021618739d70aaa761bbc274afb8158809492b0606773c217e42e58e58b18a2454b9c45ebc883ebece17cdc467ac60e3d3140d7a979db7
2022-04-11 09:41:11 -07:00
MarcoFalke
7125bfaa9c Merge bitcoin/bitcoin#23693: Revert "Fixes Bug in Transaction generation in ComplexMempool benchmark"
faa185bb3abe5fdaeeae14706bad9437acac6a69 Revert "Fixes Bug in Transaction generation in ComplexMempool benchmark" (MarcoFalke)

Pull request description:

  Developers are reporting crashes (potentially OOM) on IRC, but I can't reproduce. Still, revert this for now, since one developer reported the bare metal this was running on crashed.

Top commit has no ACKs.

Tree-SHA512: 080db4fcfc682b68f4cc40dfabd9d3e0e3f6e6297ce4b782d5de2c83bc18f85f60efb1cda64c51e23c4fd2a05222a904e7a11853d9f9c052dcd26a53aa00b235
2022-04-11 09:41:11 -07:00
MarcoFalke
0d1c8f914c Merge bitcoin/bitcoin#22856: test: Fix bug in transaction generation in ComplexMempool benchmark
29e983386b0aecf99cdb7d0e08ba6b450bed313e Fixes Bug in Transaction generation in ComplexMempool benchmark (Shorya)

Pull request description:

  This fixes issues with `ComplexMempool` benchmark introduced in [#17292](https://github.com/bitcoin/bitcoin/pull/17292) , this stress test benchmarks performance of ancestor and descendant tracking of mempool graph algorithms on a complex Mempool.

  This Benchmark first creates 100 base transactions and stores them in `available_coins` vector. `available_coins` is used for selecting ancestor transactions while creating 800 new transactions. For this a random transaction is picked from `available_coins` and some of its outputs are mapped to the inputs of the new transaction being created.

  Now in case we exhaust all the outputs of an entry in `available_coins` then we need to remove it from `available_coins` before the next iteration of choosing a potential ancestor , it is now implemented with this patch.

   As the index of the entry is randomly chosen from `available_coins` , In order to remove it from the vector , if index of the selected entry is not at the end of `available_coins` vector , it is swapped with the entry at the back of the vector , then the entry at the end of `available_coins` is popped out.

  Earlier the code responsible for constructing outputs of the newly created transaction was inside the loop used for assigning ancestors to the transaction , which does some unnecessary work as it creates outputs of the transaction again and again , now it is moved out of the loop so outputs of the transaction are created just once before adding it to the final list of the transactions created. This one is a minor change to save some computation.

   These changes have changed the `ComplexMempool` benchmark results on `bitcoin:master` as follows :

  **Before**

  >
  |               ns/op |                op/s |    err% |     total | benchmark
  |--------------------:|--------------------:|--------:|----------:|:----------
  |      232,881,625.00 |                4.29 |    0.7% |      2.55 | `ComplexMemPool`

  **After**

  >
  |               ns/op |                op/s |    err% |     total | benchmark
  |--------------------:|--------------------:|--------:|----------:|:----------
  |      497,275,135.00 |                2.01 |    0.5% |      5.49 | `ComplexMemPool`

Top commit has no ACKs.

Tree-SHA512: d6946d7e65c55f54c84cc49d7abee52e59ffc8b7668b3c80b4ce15a57690ab00a600c6241cc71a2a075def9c30792a311256fed325ef162f37aeacd2cce93624
2022-04-11 09:41:11 -07:00
MarcoFalke
da28456688 Merge bitcoin/bitcoin#23643: rpc: remove info about mallocinfo needing glibc 2.10+
9a09d307e9bd81ed218dd560d3eac7565f1f7a2f rpc: remove info about mallocinfo needing glibc 2.10+ (fanquake)

Pull request description:

  We require glibc 2.18+.

ACKs for top commit:
  jarolrod:
    ACK 9a09d307e9bd81ed218dd560d3eac7565f1f7a2f
  shaavan:
    ACK 9a09d307e9bd81ed218dd560d3eac7565f1f7a2f

Tree-SHA512: 61312e48fda4cb4c788d44be0f0c626e753b0a18a8f36bca813ce838f8e619e73c00306bb716e9863a077c09b5bcdec7dec134d75c5ace719a5c0a05cf75ed8a
2022-04-11 09:41:11 -07:00
MarcoFalke
22838d1b8c Merge bitcoin/bitcoin#23397: Avoid excessive lock contention in CCheckQueue::Add
459e208276a4d1457d37bf41c977e62caf05456d Exit early for an empty vChecks in CCheckQueue::Add (Hennadii Stepanov)
c43aa623435a277a692dbde784e8a7146f5573e9 Avoid excessive lock contention in CCheckQueue::Add (Hennadii Stepanov)

Pull request description:

  This PR significantly reduces lock contention in the `CCheckQueue` class by releasing a mutex before calling `std::condition_variable::notify_one` and `std::condition_variable::notify_all`.

  From C++ [docs](https://en.cppreference.com/w/cpp/thread/condition_variable/notify_one):
  > The notifying thread does not need to hold the lock on the same mutex as the one held by the waiting thread(s); in fact doing so is a pessimization, since the notified thread would immediately block again, waiting for the notifying thread to release the lock.

  Related to:
  - #23167
  - #23223

ACKs for top commit:
  martinus:
    ACK 459e208, codereview and tested. I first thought this introduced a segfault in `psbt_wallet_tests/psbt_updater_test` because that test failed for me, but thats a different issue fixed in #23403.
  vasild:
    ACK 459e208276a4d1457d37bf41c977e62caf05456d
  theStack:
    Code-review ACK 459e208276a4d1457d37bf41c977e62caf05456d

Tree-SHA512: c197858656392ba3ebcd638d713cf93c9fb48b7b3bad193209490d2828f9c7e3ae4dee6f84674f2f34dceed894139562e29579ee7299e06756c8c990caddc5ed
2022-04-11 09:41:11 -07:00
fanquake
88ba4ecd73 Merge #17695: gui: disable File->CreateWallet during startup
d65fafc2f7d98ab2be0a0961e7a3ebe7850c1dca gui: disable File->CreateWallet during startup (fanquake)

Pull request description:

  Same as #16118. Early calls to Create Wallet will crash bitcoin-qt.

  ```bash
  lldb /Applications/Bitcoin-Qt.app/Contents/MacOS/Bitcoin-Qt -- --regtest -debug

  Process 18143 launched: '/Users/michael/github/bitcoin/src/qt/bitcoin-qt' (x86_64)
  2019-12-07 15:49:37.823867-0500 bitcoin-qt[18143:5696499] MessageTracer: Falling back to default whitelist
  Process 18143 stopped
  * thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x18)
      frame #0: 0x00000001000d2d9d bitcoin-qt`CreateWalletActivity::createWallet() + 381
  bitcoin-qt`CreateWalletActivity::createWallet:
  ->  0x1000d2d9d <+381>: movq   0x18(%rax), %r14
      0x1000d2da1 <+385>: movq   %r15, -0xa8(%rbp)
      0x1000d2da8 <+392>: leaq   -0xa0(%rbp), %r12
      0x1000d2daf <+399>: leaq   -0x80(%rbp), %rsi
  Target 0: (bitcoin-qt) stopped.
  (lldb) bt
  * thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x18)
    * frame #0: 0x00000001000d2d9d bitcoin-qt`CreateWalletActivity::createWallet() + 381
      frame #1: 0x0000000100833e6f bitcoin-qt`QMetaObject::activate(QObject*, int, int, void**) + 1631
      frame #2: 0x0000000100a1fc47 bitcoin-qt`QDialog::done(int) + 247
      frame #3: 0x0000000100833ef5 bitcoin-qt`QMetaObject::activate(QObject*, int, int, void**) + 1765
      frame #4: 0x00000001009e04c2 bitcoin-qt`QDialogButtonBoxPrivate::_q_handleButtonClicked() + 786
  ```

ACKs for top commit:
  jonasschnelli:
    utACK d65fafc2f7d98ab2be0a0961e7a3ebe7850c1dca
  promag:
    ACK d65fafc2f7d98ab2be0a0961e7a3ebe7850c1dca.

Tree-SHA512: 12d7f9e8772508bffbb0163849d9eceec5b1c80068c5d377a4d0973c713dc5f8ad38be8f793fec843d7fb604f0e60a72398b0c95f0a8b775dab39d25b29ac046
2022-04-11 09:41:11 -07:00
fanquake
061e8c57da Merge #16822: gui: Create wallet menu option follow-ups
cad3ab5db835e1d0c44c6a5fc0e4b2d1661dcd5c gui: fix autofocus in CreateWalletActivity::askPassphrase() (Jon Atack)
539d9403af956c76ae0149a58c07c71a6b58ac69 gui: fix passphrase labels/tooltip in createwalletdialog/askpassphrasedialog (Jon Atack)
43aa9b0d790840e30c1cd128e67946ffcbfeb721 gui: rename encrypt(), blank(), and askPasshprase() (Jon Atack)

Pull request description:

  Closes #16820. The wallet [name escaping issue](https://github.com/bitcoin/bitcoin/pull/15450#pullrequestreview-282297760) in that issue predates #15450 and is fixed by #16826.

  - [x]  rename encrypt() to encryptWallet(), and blank() to makeBlankWallet() // EDIT: updated to
          isEncryptWalletChecked()
          isDisablePrivateKeysChecked()
          isMakeBlankWalletChecked()
  - [x]  fix naming of askPasshprase() to askPassphrase()
  - [x]  fix passphrase labels and tooltip in createwalletdialog.ui and askpassphrasedialog.ui
  - [x]  fix grammar of labels in askpassphrase dialog and WalletController::closeWallet
  - [x]  fix autofocus in CreateWalletActivity::askPassphrase()

  Squashed down to three commits.

  Reviewers, to test manually: build, launch the gui wallet, and look at labels/tooltips/focus with the create wallet, encrypt wallet, change password, and close wallet commands.

ACKs for top commit:
  jb55:
    Approach ACK cad3ab5db835e1d0c44c6a5fc0e4b2d1661dcd5c
  instagibbs:
    code review and tACK cad3ab5db835e1d0c44c6a5fc0e4b2d1661dcd5c
  fanquake:
    ACK cad3ab5db835e1d0c44c6a5fc0e4b2d1661dcd5c

Tree-SHA512: b441fbf8f8cd370dd692bac24f0d3c1b32fc7d947b6c3a2c9ba7cf0bc175a72b3460440f2f10f7632c0e8e0f8e65fe15615a30c46e2c7763bf258c504b457dd6
2022-04-11 09:40:27 -07:00
PastaPastaPasta
eec6c13dd0
refactor(spork): use Mutex not CCriticalSection, use distinct mutexes for caches (#4737) 2022-04-11 18:22:05 +03:00