Commit graph

33910 commits

Author SHA1 Message Date
MarcoFalke
fae679065e
Add CSerializedNetMsg::Copy() helper
This makes code that uses the helper less verbose.

Moreover, this makes net_processing C++20 compliant. Otherwise, it would
lead to a compile error (see below). C++20 disables aggregate
initialization when any constructor is declared. See
http://open-std.org/JTC1/SC22/WG21/docs/papers/2018/p1008r1.pdf

net_processing.cpp:1627:42: error: no matching constructor for initialization of 'CSerializedNetMsg'
            m_connman.PushMessage(pnode, CSerializedNetMsg{ser_cmpctblock.data, ser_cmpctblock.m_type});
                                         ^                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2022-03-24 11:37:34 +01:00
MarcoFalke
fabb7c4ba6 Make fs.h C++20 compliant
Without the changes, the file will fail to compile under C++20 because
char8_t can not be converted to char implicitly.
2022-03-24 11:36:37 +01:00
MarcoFalke
fae2220f4e
scheduler: Capture ‘this’ explicitly in lambda
Without the changes, g++ will warn to compile under C++20:

scheduler.cpp:114:21: warning: implicit capture of ‘this’ via ‘[=]’ is deprecated in C++20 [-Wdeprecated]
  114 |     scheduleFromNow([=] { Repeat(*this, f, delta); }, delta);
      |                     ^
scheduler.cpp:114:21: note: add explicit ‘this’ or ‘*this’ capture
2022-03-24 11:36:37 +01:00
josibake
bc90b8d869
[move only] remove is_wallet_compiled checks 2022-03-24 11:00:22 +01:00
josibake
0bfbf7fb24
test: use MiniWallet in interfaces_zmq
make interfaces_zmg run deterministically.
this test is for the zmg notifications,
so it doesn't need the wallet compiled to run
2022-03-24 10:57:38 +01:00
MarcoFalke
fac5a51c47
Move mempool RPCs to rpc/mempool
Can be reviewed with
--color-moved=dimmed-zebra --color-moved-ws=ignore-all-space
2022-03-24 08:55:13 +01:00
MarcoFalke
fa0f666dd7
style: Add static keyword where possible in rpc/mempool 2022-03-24 08:21:32 +01:00
MarcoFalke
98e9d8e8e2
Merge bitcoin/bitcoin#23732: refactor: Remove gArgs from bdb.h and sqlite.h
39b1763730 Replace use of `ArgsManager` with `DatabaseOptions` (Kiminuo)

Pull request description:

  Contributes to #21005.

  The goal of this PR is to remove `gArgs` from database classes (i.e. `bdb.h` and `sqlite.h`) so that they can be tested without relying on `gArgs` in tests.

  Notes:

  * My goal is to enable unit-testing without relying on `gArgs` as much as possible. Global variables are hard to reason about which in turn makes it slightly harder to contribute to this codebase. When the compiler does the heavy lifting for us and allows us only to construct an object (or call a method) with valid parameters, we may also save some time in code reviews. The cost for this is passing an argument which is not for free but the cost is very miniscule compared to benefits, I think.
      * GUI code is an exception because it seems fine to have `gArgs` there so I don't plan to make changes in `src/qt` folder, for example.
  * My approach to removal of `gArgs` uses is moving from lower levels to upper ones and pass `ArgsManager` as an argument as needed. The approach is very similar to what #20158.

ACKs for top commit:
  achow101:
    ACK 39b1763730
  ryanofsky:
    Code review ACK 39b1763730. Just the two small ReadDatabaseArgs and Berkeley open changes that were discussed since the last review

Tree-SHA512: aa066b314db593e46c18698fe8cdd500f558b405dc04e4a9a3ff57b52b5b3a81a6cb090e0e661785d1d02c1bf18958c1f4cd715ff233aab63381e3f80960622d
2022-03-24 07:40:42 +01:00
pasta
3ae7791bca refactor: use Span in random.* 2022-03-23 17:36:33 -05:00
fanquake
cea230eec4
Merge bitcoin/bitcoin#24562: Remove unused feebumper code
fae5d06eed Remove unused feebumper code (MarcoFalke)

Pull request description:

  This was accidentally added in commit 0ea47ba7b3. Presumably due to a copy-paste error, as `CreateTransaction` already takes care of the rbf-signal.

ACKs for top commit:
  achow101:
    ACK fae5d06eed
  promag:
    Code review ACK fae5d06eed

Tree-SHA512: 81aaf9c6bd9a4e2ad1789880bd8f2191f0ae9ba0a02794aa5db523236ea7df1c0dca078563219d293c694373c0a63c5bf168a85443e86556453ae5439791a618
2022-03-23 20:12:04 +00:00
fanquake
ce05f838f1
Merge bitcoin/bitcoin#24635: test: Run non-wallet tests only once
fa7a576391 test: Run non-wallet tests only once (MarcoFalke)

Pull request description:

  I don't see why non-wallet tests should run for two wallet configs, even though they never use a wallet.

ACKs for top commit:
  achow101:
    ACK fa7a576391

Tree-SHA512: 2a135acf3c3c83a2704ae11f40c72882b23a676828647be1a066653c4d00e4523704f377eb8745c6386829601cc5d643abdce376831c1db91a07e999e1d5e01f
2022-03-23 20:02:23 +00:00
fanquake
30041261a3
Merge bitcoin/bitcoin#24582: Move txoutproof RPCs to txoutproof.cpp
fa2d176016 Move txoutproof RPCs to txoutproof.cpp (MarcoFalke)

Pull request description:

  The txoutproof RPCs don't really fit into `rawtransaction.cpp`, as they deal with txids, not with raw transactions. As they are placed in the `blockchain` RPC category, they could be moved there. However, `blockchain.cpp` already takes about 20 seconds to compile (and `rawtransaction.cpp` even longer), so move them to a separate file.

  Can be reviewed with `--color-moved=dimmed-zebra --color-moved-ws=ignore-all-space`.

ACKs for top commit:
  achow101:
    ACK fa2d176016
  theStack:
    Concept and code-review ACK fa2d176016

Tree-SHA512: 6250e5f87b6237f604d69643f9a809b238702d73f041792c537aeadeafdb60ab8e0dca1d83347d0d6c85900ce179df14365ae303ca3930ed33a528a862f85aa3
2022-03-23 20:01:02 +00:00
Andrew Chow
049003fe68 coinselection: Remove COutput operators == and !=
These operators are used only by the tests in std::mismatch. As
std::mismatch can take a binary predicate, we can use a lambda that
achieves the same instead.
2022-03-23 15:01:39 -04:00
Andrew Chow
f6c39c6adb coinselection: Remove CInputCoin
It is no longer needed as everything it was doing is now done by COutput
2022-03-23 15:01:39 -04:00
Andrew Chow
70f31f1a81 coinselection: Use COutput instead of CInputCoin
Also rename setPresetCoins to preset_coins
2022-03-23 15:01:39 -04:00
Andrew Chow
14fbb57b79 coinselection: Add effective value and fees to COutput 2022-03-23 15:01:38 -04:00
Andrew Chow
f0821230b8 moveonly: move COutput to coinselection.h 2022-03-23 14:32:07 -04:00
Andrew Chow
42e974e15c wallet: Remove CWallet and CWalletTx from COutput's constructor 2022-03-23 14:32:07 -04:00
Andrew Chow
14d04d5ad1 wallet: Replace CWalletTx in COutput with COutPoint and CTxOut
Instead of having a pointer to the CWalletTx in COutput, we can just
store the COutPoint and the CTxOut as those are the only things we need
from the CWalletTx. Other things CWalletTx used to provide were time and
fIsFromMe but these are also being stored by COutput.
2022-03-23 14:32:07 -04:00
Andrew Chow
0ba4d1916e wallet: Provide input bytes to COutput 2022-03-23 14:32:05 -04:00
Andrew Chow
3ab96f2945
Merge bitcoin/bitcoin#24560: wallet: Use single FastRandomContext when creating a wallet tx
fa7deaa046 wallet: Pass FastRandomContext& to coin selection (MarcoFalke)
77773b061c wallet: Pass FastRandomContext& to DiscourageFeeSniping (MarcoFalke)

Pull request description:

  Passing around a single randomness context shouldn't come with any downsides, but documents better where randomness is used and allows the unit test to be deterministic, if they wish to be so.

ACKs for top commit:
  achow101:
    ACK fa7deaa046
  promag:
    Code review ACK fa7deaa046.
  glozow:
    light code review ACK fa7deaa046

Tree-SHA512: c16287708cc82ce58311710595d0127af42fb156c93fbcaa5bde634ce323d325f4d8c99a74af24423ab22b5ad58163dd771e8b1a0e7d6bff39c9fb2a1cb21bc7
2022-03-23 13:50:57 -04:00
Hennadii Stepanov
f9ed0aec1b
Merge bitcoin-core/gui#568: options: flip listenonion to false if not listening
7f90dc26c8 options: flip listenonion to false if not listening (Vasil Dimov)

Pull request description:

  If the user has unchecked "Allow incoming connections" in
  `Settings->Options...->Network` then `fListen=false` is saved in
  `~/.config/Bitcoin/Bitcoin-Qt.conf`. This flips `-listen` to `false`
  during startup, but leaves `-listenonion` to `true`.

  This flipping of `-listen` is done in `OptionsModel::Init()` after
  `InitParameterInteraction()` has been executed which would have flipped
  `-listenonion`, should it have seen `-listen` being `false`
  (this is a difference between `bitcoind` and `bitcoin-qt`).

  Fixes: https://github.com/bitcoin-core/gui/issues/567

ACKs for top commit:
  mzumsande:
    Tested ACK 7f90dc26c8
  hebasto:
    ACK 7f90dc26c8
  jonatack:
    utACK 7f90dc26c8
  ryanofsky:
    Code review ACK 7f90dc26c8.

Tree-SHA512: ff5095096858eae696293dc58d1cd5bd1bb60ef7c5d07d87308a0cf71c67da88cc00b301b550704625f136c4ba3a29905a934a766535a6422fe85d9662299d32
2022-03-23 17:20:20 +01:00
fanquake
b5ba3b5b2c
doc: mention that BDB is for the legacy wallet in build-freebsd.md
Re-order legacy and descriptor wallet section.
Remove prelude that pointlessly reqpeats the same info.
Cleanup configure examples.
2022-03-23 15:35:29 +00:00
fanquake
061accfddd
build: require libtool 2.4.2
Every system we support has 2.4.6 available, except for OpenBSD, which
currently ships with 2.4.2 (released 2011). For now, set our minimum
required version to that.

After a 7 year hitus, 2.4.7 has also very recently been released:
https://savannah.gnu.org/forum/forum.php?forum_id=10139.

Partially motivated by comments in #24615.

See also: https://repology.org/project/libtool/versions
2022-03-23 13:33:43 +00:00
Vasil Dimov
7f90dc26c8
options: flip listenonion to false if not listening
If the user has unchecked "Allow incoming connections" in
`Settings->Options...->Network` then `fListen=false` is saved in
`~/.config/Bitcoin/Bitcoin-Qt.conf`. This flips `-listen` to `false`
during startup, but leaves `-listenonion` to `true`.

This flipping of `-listen` is done in `OptionsModel::Init()` after
`InitParameterInteraction()` has been executed which would have flipped
`-listenonion`, should it have seen `-listen` being `false`
(this is a difference between `bitcoind` and `bitcoin-qt`).

Fixes: https://github.com/bitcoin-core/gui/issues/567
2022-03-23 11:34:05 +01:00
MarcoFalke
bc562b9ef8
Merge bitcoin/bitcoin#24646: doc: remove unneeded documentation on basic package management on FreeBSD
38a1b0b196 doc: remove unneeded documentation on basic package management on FreeBSD (jessebarton)

Pull request description:

  In reference to #24618

ACKs for top commit:
  fanquake:
    ACK 38a1b0b196 - Thanks. In future, please re-use existing PRs, so that discussion and changes are kept together.

Tree-SHA512: ece5b85bca7f11e11d47c0674a6b96a72c3bb65dd02ab25553db511a001a9fc682c0ff8276e39d979fdd1f57a64137f586cfa548aab5c08cd9341455217b9181
2022-03-23 11:22:54 +01:00
MarcoFalke
faf37c217a
rpc: Exclude descriptor when address is excluded 2022-03-23 11:09:34 +01:00
MarcoFalke
d6f225f5c9
Merge bitcoin/bitcoin#24462: For descriptor pubkey parse errors, include context information
9b52672700 For descriptor pubkey parse errors, include context information (Ben Woosley)

Pull request description:

  This adds readily-available context information to the error string, for further disambiguation.

  This is a revival of #16123 which was largely addressed in #16542.

  Note 'Multi:' is used rather than 'multi():' as it also encompasses 'sortedmulti():'

ACKs for top commit:
  achow101:
    ACK 9b52672700
  theStack:
    ACK 9b52672700

Tree-SHA512: 96533ea8c3ac7010f9b62e75b4bd20b65aff843030eb91c7a88312975acecaaf17909b7d1841f45edc86dbf7fa402d208adb85f0673bd79b857dbebacb8c9395
2022-03-23 09:38:54 +01:00
jessebarton
38a1b0b196 doc: remove unneeded documentation on basic package management on FreeBSD
This is in reference to #24618
2022-03-22 19:33:02 -05:00
brunoerg
89bb25d22a test: check localaddresses in getnetworkinfo for nodes with proxy 2022-03-22 16:07:01 -03:00
Sebastian Falbesoner
2b6dd4e75b test: use MiniWallet for mempool_package_onemore.py
This test can now be run even with the Bitcoin Core wallet disabled.
2022-03-22 18:44:27 +01:00
Sebastian Falbesoner
eb3c5c4ef2 test: MiniWallet: add helper methods {send,create}_self_transfer_multi 2022-03-22 18:43:51 +01:00
Luke Dashjr
5a157eb370 Bugfix: configure: Only avoid -isystem for exact /usr/include path 2022-03-22 14:13:13 +00:00
Luke Dashjr
06822f8654 Bugfix: RPC/blockchain: Correct description of getblockchaininfo's pruneheight result
It is possible that lower blocks are complete due to being stored in the same file as blocks not yet eligible for pruning.
2022-03-22 13:41:04 +00:00
Hennadii Stepanov
97af652788
guix: Drop code for the unsupported i686-linux-gnu host
Now GUIX build for the `i686-linux-gnu` host is broken, and there are no
plans to re-add it.
2022-03-22 14:20:01 +01:00
MarcoFalke
f05cf59d91
Merge bitcoin/bitcoin#24624: qt: Avoid potential -Wdeprecated-enum-enum-conversion warnings
acd98adaf1 qt: Avoid potential -Wdeprecated-enum-enum-conversion warning (Hennadii Stepanov)
d8641f04e4 qt: Use human-readable strings in preference to hard-coded integers (Hennadii Stepanov)

Pull request description:

  This PR is related to bitcoin/bitcoin#24169. It adjusts code in order to avoid `-Wdeprecated-enum-enum-conversion` warnings instead of disabling them.

  Could be tested with gcc 11.2.

ACKs for top commit:
  MarcoFalke:
    Approach ACK acd98adaf1
  fanquake:
    untested ACK acd98adaf1 - thanks.
  promag:
    Code review ACK acd98adaf1.

Tree-SHA512: e8043d997d85f8dba0f37ca02f1c60eb756a1732cf76a75908b01eb2cf7a4c6d4aaf6007271a929c213de37a0c1d96bc25280f0ee9eca488f370904461222ede
2022-03-22 13:39:55 +01:00
Jon Atack
f44efc3e2c
doc: update i2p.md with cjdns, improve local addresses section 2022-03-22 12:54:23 +01:00
Jon Atack
3bf6f0cf2c
doc: update tor.md with cjdns and getnodeaddresses, fix tor grep,
and improve local addresses section
2022-03-22 12:54:21 +01:00
Jon Atack
ed15848475
doc: create initial doc/cjdns.md for cjdns how-to documentation
Adapted in part from the CJDNS description in #23077 by Vasil Dimov
and from CJDNS documentation and feedback by Caleb James DeLisle.

Co-authored-by: Vasil Dimov <vd@FreeBSD.org>
2022-03-22 12:54:19 +01:00
Hennadii Stepanov
acd98adaf1
qt: Avoid potential -Wdeprecated-enum-enum-conversion warning 2022-03-22 12:36:25 +01:00
laanwj
2948d6dea0
Merge bitcoin/bitcoin#15423: torcontrol: Query Tor for correct -onion configuration
b2774fc0be torcontrol: Query Tor for correct -onion configuration (Luke Dashjr)

Pull request description:

  Currently, we just assume any running Tor instance provides localhost port 9050 for SOCKS, and configure `-onion` accordingly when we get a Tor control connection.

  This actually queries the Tor node for its SOCKS listeners, and uses the configured port instead.

  For backward compatibility, it falls back to localhost:9050 if it can't get any better port info. I'm not sure if that's the correct action to take when the Tor daemon explicitly says there are no ports listening...

ACKs for top commit:
  laanwj:
    Tested ACK (FreeBSD) b2774fc0be
  vasild:
    ACK b2774fc0be
  jonatack:
    ACK b2774fc0be review, rebased to master, debug build, ran unit tests, tested happy path only

Tree-SHA512: 2fa93a3cf0cb675801d1b51322ce953ea9b2317f78154a53b603244d74252f434cc1eaa5ae48cb3fe6bdc4ce984a6d976ff95bb046f7933b9740332942378c02
2022-03-22 11:57:14 +01:00
fanquake
44dbf918d3
Merge bitcoin/bitcoin#24627: test: Limit scope of id global which is shared between subtests
fa9086d085 test: Limit scope of id global which is shared between subtests (MarcoFalke)

Pull request description:

  Globals aren't too nice when testing, as leak state between subtests run in the same process. For example, when checking peer ids in the tests, they might pass/fail depending on other tests run in the same process.

  Fix this by making `id` not a global.

ACKs for top commit:
  promag:
    Code review ACK fa9086d085.

Tree-SHA512: 0a53dde428570086f4557b23112e6460d6413bedf6ef487bd56e88f83cd5f4526f44effa8076cdeaf4761ecc062c346948e0bff434808bbf9b558eabd81328e3
2022-03-22 09:02:34 +00:00
Ayush Sharma
2726b60a3a test: use MiniWallet for rpc_createmultisig.py
This test can now be run even with the Bitcoin Core wallet disabled.
2022-03-22 14:17:51 +05:30
MarcoFalke
138d55e6a0
Merge bitcoin/bitcoin#24579: doc: Fix getblockchaininfo/getdeploymentinfo RPC docs
facd5d92e1 doc: Fix getblockchaininfo/getdeploymentinfo RPC docs (MarcoFalke)

Pull request description:

  Also, fix whitespace to be `4` spaces. Can be reviewed with `--ignore-all-space --word-diff-regex=.`.

  Found by https://github.com/bitcoin/bitcoin/pull/23083

ACKs for top commit:
  luke-jr:
    crACK facd5d92e1

Tree-SHA512: 113228a6b140009cecd9068fb634d352148670589f647350e41c02a35e0ca306b4a2d3f2588cd9ef14a2ab7d1f23d0d2f83b5ebb00b60f17a1d16a8d71386fd2
2022-03-22 09:16:24 +01:00
MarcoFalke
b8f498f80d
Merge bitcoin/bitcoin#24535: test: Fix generate calls and comments in feature_segwit
fa8593f898 test: Fix generate calls and comments in feature_segwit (MarcoFalke)

Pull request description:

  There are currently a few incorrect comments: Block `432` is mined "twice" (The second one is actually 433).

  There isn't any need to mine this many blocks anyway, so remove a few calls.

ACKs for top commit:
  theStack:
    Tested ACK fa8593f898

Tree-SHA512: b034077b85e6c978a80aa4de493797b4ae451d686cfb3e4fe40f37a38f41f7cb886f8e00a1c245a284be3502164b17414097fcb0bef66d155a1c1db5cfbe9e8f
2022-03-22 09:10:55 +01:00
Hennadii Stepanov
d8641f04e4
qt: Use human-readable strings in preference to hard-coded integers
This is recommended by Qt docs.
See: https://doc.qt.io/qt-5/qkeysequence.html#details

Also this change avoids -Wdeprecated-enum-enum-conversion warnings.
2022-03-22 08:58:25 +01:00
MarcoFalke
fa7a576391
test: Run non-wallet tests only once 2022-03-22 08:11:46 +01:00
MarcoFalke
e3206c9445
Merge bitcoin/bitcoin#24605: test: Use MiniWallet in feature_coinstatsindex
fa48ea3067 Use MiniWallet in feature_coinstatsindex (MarcoFalke)
fab61437f6 test: Refactor MiniWallet get_utxo helper (MarcoFalke)

Pull request description:

  Allows the test to be run even without a wallet compiled

ACKs for top commit:
  josibake:
    ACK fa48ea3067
  ayush933:
    tACK  fa48ea3 . The test runs successfully with the wallet disabled.
  willcl-ark:
    tACK fa48ea3067 both with and without wallet compiled in.

Tree-SHA512: e04e04ea0f236c062d6be68909ece2770130ce1d5343823893073d95aebc6eedb1ad1dc5bc41e5b0cb0bf2cd9018bb1d668f0e7f5f1101ed4e0b007ed6b00f69
2022-03-22 07:56:29 +01:00
Luke Dashjr
556ee6f2fa Bugfix: configure: Quote SUPPRESS_WARNINGS sufficiently to preserve brackets
The regex includes [/ ] which is supposed to match either a forward slash or a
space, but m4 treats the brackets as special characters and effectively strips
them out, leading to -isystem /usr/include paths except for in the typical
scenario where it is the final parameter in the flag string.
2022-03-21 23:54:50 +00:00
Andrew Chow
e66630cc87
Merge bitcoin/bitcoin#13226: Optimize SelectCoinsBnB by tracking the selection by index rather than by position
9d2005285c doc: Revise comments and whitespace to clarify (Ben Woosley)
def43a4d88 refactor: Rename i to curr_try in SelectCoinsBnB (Ben Woosley)
1dd0923677 refactor: Track BnB selection by index (Ben Woosley)

Pull request description:

  This is prompted by #13167 and presented as a friendly alternative to it.

  IMO you can improve code readability and performance by about 20% by tracking the selected utxos by index, rather than by position. This reduces the storage access complexity from roughly O(utxo_size) to O(selection_size).

  On my machine (median of 5 trials):
  ```
  BnBExhaustion, 5, 650, 2.2564, 0.000672999, 0.000711565, 0.000693112 - master
  BnBExhaustion, 5, 650, 1.76232, 0.000528563, 0.000568806, 0.000539147 - this PR
  ```

ACKs for top commit:
  achow101:
    reACK 9d2005285c
  glozow:
    code review ACK 9d2005285c
  Xekyo:
    reACK 9d2005285c

Tree-SHA512: 453ea11ad58c48928dc76956e3e98916f6924e95510eb02fe89a899ff102fe9cc08a04d557f381ad0218a210275e5383101d971c1ffad38b06b1c57d81144315
2022-03-21 17:44:54 -04:00