Commit graph

36595 commits

Author SHA1 Message Date
Pieter Wuille
2e16054a66 Add assertions that BatchWrite(erase=true) erases 2023-01-30 13:13:54 -05:00
Pieter Wuille
941feb6ca2 Avoid unclear {it = ++it;} 2023-01-30 13:13:24 -05:00
Pieter Wuille
98db35c2f8 Follow coding style for named arguments 2023-01-30 13:13:20 -05:00
Pieter Wuille
bb00357add Make test/fuzz/coins_view exercise CCoinsViewCache::Sync() 2023-01-30 13:11:53 -05:00
fanquake
7241b936c5
Merge bitcoin/bitcoin#26965: refactor: Remove stray cs_main redundant declaration
faba08b5b4 refactor: Remove stray cs_main redundant declaration (MarcoFalke)
fa02591edf doc: Export threadsafety.h from sync.h (MarcoFalke)

Pull request description:

  Looks like this was forgotten when introducing kernel/cs_main ?

  Also, there is a commit to export threadsafety.h from sync.h.

ACKs for top commit:
  hebasto:
    ACK faba08b5b4

Tree-SHA512: 0aa58e7693b6fcd504f9da7339f8baa463a6407f67b27f68002db705f4642321ac3765f16c3d906c925ee24085591b79160a62fa5f4aaf6f2e5dcc788411800d
2023-01-30 17:27:44 +00:00
fanquake
56a03f1834
depends: ensure we are appending to sqlite cflags
Otherwise we'll just override other flags passed in (i.e msan).
2023-01-30 17:15:01 +00:00
fanquake
82903a7a8d
Merge bitcoin/bitcoin#17487: coins: allow write to disk without cache drop
1d7935b45a test: add test for coins view flush behavior using Sync() (James O'Beirne)
2c3cbd6c00 test: add use of Sync() to coins tests (James O'Beirne)
6d8affca96 test: refactor: clarify the coins simulation (James O'Beirne)
79cedc36af coins: add Sync() method to allow flush without cacheCoins drop (James O'Beirne)

Pull request description:

  This is part of the [assumeutxo project](https://github.com/bitcoin/bitcoin/projects/11):

  Parent PR: #15606
  Issue: #15605
  Specification: https://github.com/jamesob/assumeutxo-docs/tree/master/proposal

  ---

  In certain circumstances, we may want to flush chainstate data to disk without
  emptying `cacheCoins`, which affects performance. UTXO snapshot
  activation is one such case, as we populate `cacheCoins` with the snapshot
  contents and want to persist immediately afterwards but also enter IBD.

  See also #15265, which makes the case that under normal operation a
  flush-without-erase doesn't necessarily add much benefit. I open this PR
  even in light of the previous discussion because (i) flush-without-erase
  almost certainly provides benefit in the case of snapshot activation (especially
  on spinning disk hardware) and (ii) this diff is fairly small and gives us convenient
  options for more granular cache management without changing existing policy.

  See also #15218.

ACKs for top commit:
  sipa:
    ACK 1d7935b45a
  achow101:
    ACK 1d7935b45a
  Sjors:
    tACK 1d7935b45a

Tree-SHA512: 897583963e98661767d2d09c9a22f6019da24125558cd88770bfe2d017d924f23a9075b729e4b1febdec5b0709a38e8fa1ef94d62aa88650556b06cb4826c845
2023-01-30 16:01:16 +00:00
fanquake
0a1d372ad0
Merge bitcoin/bitcoin#26649: refactor: Use AutoFile and HashVerifier (without ser-type and ser-version) where possible
eeee61065f Use AutoFile and HashVerifier where possible (MarcoFalke)
fa961141f7 Add HashVerifier (MarcoFalke)

Pull request description:

  This was done in the context of https://github.com/bitcoin/bitcoin/pull/25284 , but I think it also makes sense standalone.

  The basic idea is that serialization type should not be initialized when it is not needed. Same for the serialization version.

  So do this here for `AutoFile` and `HashVerifier`. `CAutoFile` and `CHashVerifier` remain in places where it is not yet possible.

ACKs for top commit:
  stickies-v:
    ACK eeee61065f

Tree-SHA512: 93786778c309ecfdc1ed43552d24ff9d966954d69a47f66faaa6de24daacd25c651f3f62bde5abbb362700298fb3c04ffbd3207a0dd13d0bd8bff7fd6d07dcf8
2023-01-30 15:57:12 +00:00
fanquake
228edafc66
Merge bitcoin/bitcoin#23619: build: Propagate user-defined flags to host packages
a3a2bd9e8a ci: Drop no longer needed package-specific flags (Hennadii Stepanov)
071eef1e97 build: Propagate user-defined flags to host packages (Hennadii Stepanov)

Pull request description:

  On master (4f8b1f8759) `{CPP,C,CXX,LD}FLAGS` that are specified in the command line are not propagated to packages:
  ```
  $ make --no-print-directory -C depends print-libevent_cxxflags CXXFLAGS=-some-fancy-flag
  libevent_cxxflags=-pipe -O2
  ```

  This PR:
  - propagates `{CPP,C,CXX,LD}FLAGS` to host packages:
  ```
  $ make --no-print-directory -C depends print-libevent_cxxflags CXXFLAGS=-some-fancy-flag
  libevent_cxxflags= -some-fancy-flag
  ```
  - does not propagate `{CPP,C,CXX,LD}FLAGS` to native packages:
  ```
  $ make --no-print-directory -C depends print-native_b2_cxxflags CXXFLAGS=-some-fancy-flag
  native_b2_cxxflags=
  ```
  - actually addresses the https://github.com/bitcoin/bitcoin/pull/23551#issuecomment-973896518

ACKs for top commit:
  TheCharlatan:
    Code review ACK a3a2bd9e8a

Tree-SHA512: 243d6b1b0e9c5de46debc36de62a77b6b4d6f638940fd530040c219956ec624e321b0c25290fed164e3a8c88befa7b97b20f765d7b9a428c269b3720f21da099
2023-01-30 14:32:32 +00:00
MarcoFalke
fa47b28dfc
refactor: Remove unused CDataStream SerializeMany constructor 2023-01-30 13:04:50 +01:00
willcl-ark
47c174d8ce
doc: NetPermissionFlags for tx relay in blocksonly
Detail which permission type enables transaction relay for nodes
connected in blockonly mode
2023-01-30 11:21:49 +00:00
fanquake
79e18ebc81
Merge bitcoin/bitcoin#26896: build: Remove port-forwarding runtime setting options from configure
d51f0fa4b7 doc: add release notes for 26896 (fanquake)
2b248798d9 build: remove --enable-upnp-default from configure (fanquake)
02f5a5e7b5 build: remove --enable-natpmp-default from configure (fanquake)
25a0e8ba0b Remove configure-time setting of DEFAULT_UPNP (fanquake)
06562e5fa7 Remove configure-time setting of DEFAULT_NATPMP (fanquake)

Pull request description:

  This PR removes the `--enable-upnp-default` and `--enable-natpmp-default` options from configure.

  It's odd to me that we maintain configure-time options for setting the default port-forwarding runtime state (but no other similar options), and I'm not sure what use-case it satisfies, that can't be achieved by multiple other means. I also doubt that we'll ever restart using these in release builds, or turning on any of this by default.

  I think the only scenario these options would be used is when you want to compile your own binaries (we don't use them in Guix), with port-forwarding on by default, but otherwise can't or don't want to use a `.conf` file, can't or don't want to pass command line options at runtime, and also don't want to modify the source code?

ACKs for top commit:
  hebasto:
    ACK d51f0fa4b7, rebased and comments have been addressed since my recent [review](https://github.com/bitcoin/bitcoin/pull/26896#pullrequestreview-1273910740).
  TheCharlatan:
    ACK d51f0fa4b7

Tree-SHA512: 481decd8bddd8b03b7319591e3acf189f7b6b96c9a9a8c5bc1a3f8ec00d0b8f9b52d2f5c28a298a2ec947cfe9611cfd184e393ccb2e4e21bfce86ca7d4de60d3
2023-01-30 11:18:07 +00:00
willcl-ark
e325e0fccb
doc: Fix comment syntax error 2023-01-30 10:26:02 +00:00
Vasil Dimov
dfc01ccd73
net: simplify the call to vProcessMsg.splice()
At the time when

```cpp
pnode->vProcessMsg.splice(pnode->vProcessMsg.end(), pnode->vRecvMsg, pnode->vRecvMsg.begin(), it);
```

is called, `it` is certainly `pnode->vRecvMsg.end()` which makes the
call equivalent to:

```cpp
pnode->vProcessMsg.splice(pnode->vProcessMsg.end(), pnode->vRecvMsg, pnode->vRecvMsg.begin(), pnode->vRecvMsg.end());
```

which is equivalent to:

```cpp
pnode->vProcessMsg.splice(pnode->vProcessMsg.end(), pnode->vRecvMsg);
```

Thus, use the latter. Further, maybe irrelevant, but the latter has
constant complexity while the original code is `O(length of vRecvMsg)`.
2023-01-30 11:21:21 +01:00
glozow
b1329b7523
Merge bitcoin/bitcoin#26499: wallet: Abandon descendants of orphaned coinbases
b0fa5989e1 test: Check that orphaned coinbase unconf spend is still abandoned (Andrew Chow)
9addbd7890 wallet: Automatically abandon orphaned coinbases and their children (Andrew Chow)

Pull request description:

  When a block is reorged out of the main chain, any descendants of the coinbase will no longer be valid. Currently they are only marked as inactive, which means that our balance calculations will still include them. In order to be excluded from the balance calculation, they need to either be abandoned or conflicted. This PR goes with the abandoned method.

  Note that even when they are included in balance calculations, coin selection will not select outputs belonging to these transactions because they are not in the mempool.

  Fixes #14148

ACKs for top commit:
  furszy:
    ACK b0fa5989 with a not-blocking nit.
  aureleoules:
    reACK b0fa5989e1
  ishaanam:
    ACK b0fa5989e1

Tree-SHA512: 68f12e7aa8df392d8817dc6ac0becce8dbe83837bfa538f47027e6730e5b2e1b1a090cfcea2dc598398fdb66090e02d321d799f087020d7e1badcf96e598c3ac
2023-01-30 10:09:41 +00:00
MarcoFalke
37fea41bbf
Merge bitcoin/bitcoin#26982: p2p: 25880 fixups (stalling timeout)
b2a1e47744 net_processing: simplify logging statement (Martin Zumsande)
6548ba68e8 test: fix intermittent errors in p2p_ibd_stalling.py (Martin Zumsande)

Pull request description:

  Two small fixups to #25880:

  - Use `is_connected` instead of `num_test_p2p_connections` to avoid intermittent failures where the p2p MiniNode got disconnected but this info hasn't made it to python yet, so it fails a ping. (https://github.com/bitcoin/bitcoin/pull/25880#discussion_r1089217720)

  - Simplify a logging statement (suggested in https://github.com/bitcoin/bitcoin/pull/25880#discussion_r1013738635)

ACKs for top commit:
  MarcoFalke:
    review ACK b2a1e47744 🕧

Tree-SHA512: 337f0883bf1c94cc26301a80dfa649093ed1e211ddda1acad8449a2add5be44e5c12d6073c209df9c7aa1edb9da33ec1cfdcb0deafd76178ed78785843e80bc7
2023-01-30 10:54:11 +01:00
MarcoFalke
1c8b80f440
Merge bitcoin/bitcoin#15294: refactor: Extract RipeMd160
6879be691b refactor: Extract RIPEMD160 (Ben Woosley)

Pull request description:

  To directly return a CRIPEMD160 hash from data.

  Simplifies the call sites.

ACKs for top commit:
  achow101:
    ACK 6879be691b
  theStack:
    re-ACK 6879be691b
  MarcoFalke:
    review ACK 6879be691b  🏔

Tree-SHA512: 6ead85d8060c2ac6afd43ec716ff5a82d6754c4132fe7df3b898541fa19f1dfd8b301b2b66ae7cb7594b1b1a8c7f68bce3790a8c610d4a1164e995d89bc5ae34
2023-01-30 09:49:01 +01:00
Martin Zumsande
b2a1e47744 net_processing: simplify logging statement
Also use count_seconds() instead of count() for type safety.
2023-01-29 17:35:15 -05:00
Sebastian Falbesoner
b530d9605d test: refactor: introduce replace_in_config helper 2023-01-28 23:49:55 +01:00
Hennadii Stepanov
d4c59da8d6
build: Avoid BOOST_NO_CXX98_FUNCTION_BASE macro redefinition 2023-01-28 17:07:52 +00:00
MarcoFalke
fa486de212
ci: Cache package manager install step 2023-01-28 17:59:07 +01:00
fanquake
114c5eca77
Merge bitcoin/bitcoin#25465: build: remove boost library detection
db648e8ccc build: remove unneeded var exporting (fanquake)
14afc71a61 build: remove Boost lib detection from ax_boost_base (fanquake)

Pull request description:

  We no longer link against any Boost libraries, so don't need to detect them, or set any Boost related LDFLAGS. Removing this from the macro also allows cleaning up some code in our configure.

  Guix Build:
  ```bash
  e1ca070d085115767415121f3be8d8fa29547c9df633f9782b168a00753e995a  guix-build-db648e8ccc69/output/aarch64-linux-gnu/SHA256SUMS.part
  fb4d229a71d64aef9de4a0301fad3d9ee5937025807a0e101f4cc0e20cf942b2  guix-build-db648e8ccc69/output/aarch64-linux-gnu/bitcoin-db648e8ccc69-aarch64-linux-gnu-debug.tar.gz
  5241bb543617df5e64584741b402117a3b9e7015a423507fd6c529ad397b13a5  guix-build-db648e8ccc69/output/aarch64-linux-gnu/bitcoin-db648e8ccc69-aarch64-linux-gnu.tar.gz
  eb4ba0914e9a38b3804c062ffd47f4d49dc996ea249c5cdbf64a349f73f59555  guix-build-db648e8ccc69/output/arm-linux-gnueabihf/SHA256SUMS.part
  497d1c0d03d52cc6469acf4c61f224e7567c2601b64df3fe5888374e3416d868  guix-build-db648e8ccc69/output/arm-linux-gnueabihf/bitcoin-db648e8ccc69-arm-linux-gnueabihf-debug.tar.gz
  86daab76f41581b752a5a786c5be1b094c14b25cdc8f4090f323b914118884ff  guix-build-db648e8ccc69/output/arm-linux-gnueabihf/bitcoin-db648e8ccc69-arm-linux-gnueabihf.tar.gz
  e8e2c58948a29b0286d17d7dfb89c81234ab28b98f44c2e1d70034da5ce9b8fc  guix-build-db648e8ccc69/output/arm64-apple-darwin/SHA256SUMS.part
  d8f0e791cce42db0741afbb7ec23e251a40ec30f8e1e7fef0d1afc364ce32e9b  guix-build-db648e8ccc69/output/arm64-apple-darwin/bitcoin-db648e8ccc69-arm64-apple-darwin-unsigned.dmg
  ee85b5b7942dc3361a3b05a395e271d54215f76fb67fc3c30144b089da374cd7  guix-build-db648e8ccc69/output/arm64-apple-darwin/bitcoin-db648e8ccc69-arm64-apple-darwin-unsigned.tar.gz
  72efbe40e3d033165871a8e8b4719c73a085ffc17a3198bf1191e5d22dec8c3a  guix-build-db648e8ccc69/output/arm64-apple-darwin/bitcoin-db648e8ccc69-arm64-apple-darwin.tar.gz
  0d86d3a303669235b91b4edbd6a5248dff65e31af3f3830cc8bdc116a2637e64  guix-build-db648e8ccc69/output/dist-archive/bitcoin-db648e8ccc69.tar.gz
  0f2371e331d97df50c65714ada6918565d8698637a78c7c97ba254dd5b3cc4b3  guix-build-db648e8ccc69/output/powerpc64-linux-gnu/SHA256SUMS.part
  1447777f7adababc6fddad3349ac435744abef35cd30b673c62621718441ca01  guix-build-db648e8ccc69/output/powerpc64-linux-gnu/bitcoin-db648e8ccc69-powerpc64-linux-gnu-debug.tar.gz
  3bf1e90df4d7fab18159ffd039dd1fa7e5251b0bdca020afd851fb7cd189cfd2  guix-build-db648e8ccc69/output/powerpc64-linux-gnu/bitcoin-db648e8ccc69-powerpc64-linux-gnu.tar.gz
  67ebc32843eb83a08468496c24750ab56bfdb259eb9004732be13427da5dbbc1  guix-build-db648e8ccc69/output/powerpc64le-linux-gnu/SHA256SUMS.part
  0da5fad78ab854f62db57a2f44b6ffecbf2b3e9de34b81681c66e28100a209ae  guix-build-db648e8ccc69/output/powerpc64le-linux-gnu/bitcoin-db648e8ccc69-powerpc64le-linux-gnu-debug.tar.gz
  e96a41287040d13da4738dde43dd7283356b8af10b535b15b212da702aa7f0af  guix-build-db648e8ccc69/output/powerpc64le-linux-gnu/bitcoin-db648e8ccc69-powerpc64le-linux-gnu.tar.gz
  b54a48e03e76672008445a174078e92a149dd9e4ce0c896b013162a6221b3abe  guix-build-db648e8ccc69/output/riscv64-linux-gnu/SHA256SUMS.part
  b7fea8fe4c1baecff28c45fa514ec34338a7f0e04a7f58b8cb5493932242c221  guix-build-db648e8ccc69/output/riscv64-linux-gnu/bitcoin-db648e8ccc69-riscv64-linux-gnu-debug.tar.gz
  775d406d4a2b1fa1750ae1924cf2f67de7d89dbf0044dc7ab08d3908812fff2e  guix-build-db648e8ccc69/output/riscv64-linux-gnu/bitcoin-db648e8ccc69-riscv64-linux-gnu.tar.gz
  a1dcd8c95517e8b98d8584eed00b561582b74a68a1b3d06efd86d5322186b21e  guix-build-db648e8ccc69/output/x86_64-apple-darwin/SHA256SUMS.part
  952ea47428b9bcadb809fb02a56347a9f8b29f09eba4edf67a157f7cc4ec9a57  guix-build-db648e8ccc69/output/x86_64-apple-darwin/bitcoin-db648e8ccc69-x86_64-apple-darwin-unsigned.dmg
  adb226a702e24962d263edf2e95100508d6728b4dd93a5d6098c37a5721c2bcc  guix-build-db648e8ccc69/output/x86_64-apple-darwin/bitcoin-db648e8ccc69-x86_64-apple-darwin-unsigned.tar.gz
  fd389c11cce919c53e4aeccb0e5d1ee1d12b1d9f6987a3317c4b254c3ca03387  guix-build-db648e8ccc69/output/x86_64-apple-darwin/bitcoin-db648e8ccc69-x86_64-apple-darwin.tar.gz
  c76314a9194733790533bbfefa7e6a234307aaa252989c2b3fd19191ae286c57  guix-build-db648e8ccc69/output/x86_64-linux-gnu/SHA256SUMS.part
  5e2b023b62b77709f30d545705a61826e96ddcfea4c24cde83fe2b98010262e1  guix-build-db648e8ccc69/output/x86_64-linux-gnu/bitcoin-db648e8ccc69-x86_64-linux-gnu-debug.tar.gz
  a3e9dcb58aa8554cdeb211461976087b724cd81157517a9f1e00b1a73d74ab9b  guix-build-db648e8ccc69/output/x86_64-linux-gnu/bitcoin-db648e8ccc69-x86_64-linux-gnu.tar.gz
  d6733313b8f262b214c28d44d8ee644a2435cb4da90555b30e20dbf3807b6660  guix-build-db648e8ccc69/output/x86_64-w64-mingw32/SHA256SUMS.part
  bc4b269f5b89200537d7175492ae31ab87eb4a1da86c1ade968a7bbdc472c5bf  guix-build-db648e8ccc69/output/x86_64-w64-mingw32/bitcoin-db648e8ccc69-win64-debug.zip
  ccd83eb4c9ab0df288935ab655cd71b00525b57f82c8b9d7a4d1a08325d26aac  guix-build-db648e8ccc69/output/x86_64-w64-mingw32/bitcoin-db648e8ccc69-win64-setup-unsigned.exe
  91ee20dfbaa923066379ea22f3e3a85a52f5b323877b44c19ccec6300d25cd41  guix-build-db648e8ccc69/output/x86_64-w64-mingw32/bitcoin-db648e8ccc69-win64-unsigned.tar.gz
  595baf193e0955436c4f2e5047e6842434bb4273b03c9d74e5c90972dde812f4  guix-build-db648e8ccc69/output/x86_64-w64-mingw32/bitcoin-db648e8ccc69-win64.zip
  ```

ACKs for top commit:
  TheCharlatan:
    ACK db648e8ccc

Tree-SHA512: 940a148cf2db40484084cacf40e8ba4425fcbf5d6856a57be5af6f9f66d8adc0eb601c911513902bee120e7ddf97c7802e2d21b448beb4226f737164e5656b8a
2023-01-28 15:55:23 +00:00
fanquake
69f35d20a6
Merge bitcoin/bitcoin#22811: build: Fix depends build system when working with subtargets
978852aad8 build: Fix depends build system when working with subtargets (Hennadii Stepanov)

Pull request description:

  On master (f3e0ace8ec), the depends build system does _not_ guarantee that dependencies packages are available for `$(package)_built` target because these dependencies being prepared in `$(host_prefix)` at `$(package)_configured` target can be wiped out during building other package.

  Please consider:
  ```
  $ cd depends
  $ make clean
  $ make fontconfig_configured
  $ make
  ...
    CC       fcdir.lo
  In file included from fcftint.h:26,
                   from fcdir.c:26:
  ../fontconfig/fcfreetype.h:27:10: fatal error: ft2build.h: No such file or directory
     27 | #include <ft2build.h>
        |          ^~~~~~~~~~~~
  compilation terminated.
  make[4]: *** [Makefile:642: fcdir.lo] Error 1
  make[4]: *** Waiting for unfinished jobs....
  make[4]: Leaving directory '/home/hebasto/GitHub/bitcoin/depends/work/build/x86_64-pc-linux-gnu/fontconfig/2.12.6-7daa5620c94/src'
  make[3]: *** [Makefile:503: all] Error 2
  make[3]: Leaving directory '/home/hebasto/GitHub/bitcoin/depends/work/build/x86_64-pc-linux-gnu/fontconfig/2.12.6-7daa5620c94/src'
  make[2]: *** [Makefile:581: all-recursive] Error 1
  make[2]: Leaving directory '/home/hebasto/GitHub/bitcoin/depends/work/build/x86_64-pc-linux-gnu/fontconfig/2.12.6-7daa5620c94'
  make[1]: *** [Makefile:465: all] Error 2
  make[1]: Leaving directory '/home/hebasto/GitHub/bitcoin/depends/work/build/x86_64-pc-linux-gnu/fontconfig/2.12.6-7daa5620c94'
  make: *** [funcs.mk:288: /home/hebasto/GitHub/bitcoin/depends/work/build/x86_64-pc-linux-gnu/fontconfig/2.12.6-7daa5620c94/./.stamp_built] Error 2
  ```

  The following commands:
  ```
  $ cd depends
  $ make clean
  $ make qt_configured
  $ make
  ```
  also fail.

  The similar issue was reported earlier: #21381.

  This PR guarantees that dependencies packages are available for `$(package)_built` target.

  Guix builds:
  ```
  accef9ffccfe280fec1114c0440092ed5d792e9c53d95abc7fe65435aa136656  guix-build-978852aad8e2/output/aarch64-linux-gnu/SHA256SUMS.part
  a75f1250975525a21d2e213e23f1f0dab516d2b28d0c7d747de292fe5c906013  guix-build-978852aad8e2/output/aarch64-linux-gnu/bitcoin-978852aad8e2-aarch64-linux-gnu-debug.tar.gz
  d20787af2e7a14a3b7b1d21e0d8784aa6ebad1e916f02aebfa25afe9229ba43c  guix-build-978852aad8e2/output/aarch64-linux-gnu/bitcoin-978852aad8e2-aarch64-linux-gnu.tar.gz
  11c94a39c084763858c6de31b221868e52554f5500c0dc5589def429bb6b54c8  guix-build-978852aad8e2/output/arm-linux-gnueabihf/SHA256SUMS.part
  3935b0e14d78800977dc813a3824215797096b6fb29c84b5996f48338908a65f  guix-build-978852aad8e2/output/arm-linux-gnueabihf/bitcoin-978852aad8e2-arm-linux-gnueabihf-debug.tar.gz
  c828c3f87a453db443a385a266331661f623f8f4684d88eb006290c83bfa8150  guix-build-978852aad8e2/output/arm-linux-gnueabihf/bitcoin-978852aad8e2-arm-linux-gnueabihf.tar.gz
  b6ff14e1cc36e568fc726b50300f77498560322b3582738eb70e7144784f7e63  guix-build-978852aad8e2/output/arm64-apple-darwin/SHA256SUMS.part
  2a3e6ba5843eaf9562e9dcfdb4595024a71738079cea00e391558feca4d5bde1  guix-build-978852aad8e2/output/arm64-apple-darwin/bitcoin-978852aad8e2-arm64-apple-darwin-unsigned.dmg
  ffd2ad39e8b9f95dd714513ba1e1c77666b0f3cc4b67be4ab763ebd431fe9276  guix-build-978852aad8e2/output/arm64-apple-darwin/bitcoin-978852aad8e2-arm64-apple-darwin-unsigned.tar.gz
  5c9f8acd1777effc1e860b64143ba9d06ba5e3d0330e7341529eeae5cc6b3c5e  guix-build-978852aad8e2/output/arm64-apple-darwin/bitcoin-978852aad8e2-arm64-apple-darwin.tar.gz
  e34c693ecef6159c57fdedabff9dc3d69ec20387966083b828532c58e1e6e30b  guix-build-978852aad8e2/output/dist-archive/bitcoin-978852aad8e2.tar.gz
  8de4681114d96425bf9b0ccc47d49f696293ead514faa3fa83ddcccfdca2eeb2  guix-build-978852aad8e2/output/powerpc64-linux-gnu/SHA256SUMS.part
  d780330a105931eb4c66a536c332eb09e4b6d8c288832bb5a74b931c4600c0b3  guix-build-978852aad8e2/output/powerpc64-linux-gnu/bitcoin-978852aad8e2-powerpc64-linux-gnu-debug.tar.gz
  af036a6d714ef362a2facfe4e5c63deaa9dfa391d20542ead9ffb4a43b2b7ca2  guix-build-978852aad8e2/output/powerpc64-linux-gnu/bitcoin-978852aad8e2-powerpc64-linux-gnu.tar.gz
  dc6b4365632e7de386ead512b1cdcdd3c985623f63cff8b62974bd9ed8c05d5d  guix-build-978852aad8e2/output/powerpc64le-linux-gnu/SHA256SUMS.part
  5543a6dec58515186b71139a4a5c603d85638672f205e7c9fabb281c98018461  guix-build-978852aad8e2/output/powerpc64le-linux-gnu/bitcoin-978852aad8e2-powerpc64le-linux-gnu-debug.tar.gz
  dd791be2e61ce6cbd3e14c165ce2f8c2d22881992e0df72bd338423d092cc467  guix-build-978852aad8e2/output/powerpc64le-linux-gnu/bitcoin-978852aad8e2-powerpc64le-linux-gnu.tar.gz
  2b740db8e5b9c435be3e7b186c3b4a40885302243326ec990e24fe4ba4f777da  guix-build-978852aad8e2/output/riscv64-linux-gnu/SHA256SUMS.part
  de899c89874d4f34afeca179a6c7c8f49b0a975983ab2b31afd9f2d365674578  guix-build-978852aad8e2/output/riscv64-linux-gnu/bitcoin-978852aad8e2-riscv64-linux-gnu-debug.tar.gz
  9052b1db22c56692d99a61c3783b36c6f76537d9aec14f17d87a155beac82532  guix-build-978852aad8e2/output/riscv64-linux-gnu/bitcoin-978852aad8e2-riscv64-linux-gnu.tar.gz
  5e79ddf57a94c5978ad819896786107f735d5742bbd042c2c64ae2d0681ce53a  guix-build-978852aad8e2/output/x86_64-apple-darwin/SHA256SUMS.part
  96443ad839f87c723db1c0a96d8ead0afc69e9d96ad45b5814344866da2dae73  guix-build-978852aad8e2/output/x86_64-apple-darwin/bitcoin-978852aad8e2-x86_64-apple-darwin-unsigned.dmg
  14b0a3081772e81a463398a2702aca039d2f276e301dee9f5a0ccffbb09e2749  guix-build-978852aad8e2/output/x86_64-apple-darwin/bitcoin-978852aad8e2-x86_64-apple-darwin-unsigned.tar.gz
  6bfb8252524202028308267f5e96bc30f284052f5feaa58ed3697dde27a3130f  guix-build-978852aad8e2/output/x86_64-apple-darwin/bitcoin-978852aad8e2-x86_64-apple-darwin.tar.gz
  5f8ea6297e246b08ffd806913897cc863feeec6522fcfb4456a59c5f154e0c2d  guix-build-978852aad8e2/output/x86_64-linux-gnu/SHA256SUMS.part
  40d1bcf491660d54fe20b2db24828ebf61be848eefdc38fba09ed43f6bdba4b1  guix-build-978852aad8e2/output/x86_64-linux-gnu/bitcoin-978852aad8e2-x86_64-linux-gnu-debug.tar.gz
  3200e67a4dea115e8e341b4d71d84dc5e8bd2ae35e550cde6aef88d120c65eae  guix-build-978852aad8e2/output/x86_64-linux-gnu/bitcoin-978852aad8e2-x86_64-linux-gnu.tar.gz
  0b0bf7effc493ecc68398f23fc81647f64fdee115e8ccd7ae91e7881804ec328  guix-build-978852aad8e2/output/x86_64-w64-mingw32/SHA256SUMS.part
  e2064c9ddeb4af18468f37ba8cf70004062c31e1387b4cc0fe4b445fae518e8d  guix-build-978852aad8e2/output/x86_64-w64-mingw32/bitcoin-978852aad8e2-win64-debug.zip
  be347a901b896e0a1dc2f0f5a7f84614075805cccf1f2af8ec8df678d086fdbc  guix-build-978852aad8e2/output/x86_64-w64-mingw32/bitcoin-978852aad8e2-win64-setup-unsigned.exe
  bab8700e9e266970e8c7cad494902058ad12d1f2a6462e0039daa637b1a0ce0d  guix-build-978852aad8e2/output/x86_64-w64-mingw32/bitcoin-978852aad8e2-win64-unsigned.tar.gz
  c8e55e64b248fd7c9056fe811a1eba992bbb92e44857204e3024416d9ba6307d  guix-build-978852aad8e2/output/x86_64-w64-mingw32/bitcoin-978852aad8e2-win64.zip
  ```

ACKs for top commit:
  TheCharlatan:
    tACK 978852aad8

Tree-SHA512: c195484274433039e327d44b1949afa296e09e7470a2b138b7a8476c8bf9c1302bc21284cd5436f09aa97824aae9f362b7932ff2937b78f79df0b43e50f3dfaa
2023-01-28 15:45:53 +00:00
fanquake
d51f0fa4b7
doc: add release notes for 26896 2023-01-28 15:27:27 +00:00
fanquake
2b248798d9
build: remove --enable-upnp-default from configure 2023-01-28 15:27:23 +00:00
fanquake
02f5a5e7b5
build: remove --enable-natpmp-default from configure 2023-01-28 15:26:12 +00:00
fanquake
25a0e8ba0b
Remove configure-time setting of DEFAULT_UPNP
Default to false.
2023-01-28 15:24:13 +00:00
fanquake
06562e5fa7
Remove configure-time setting of DEFAULT_NATPMP
Default to false.
2023-01-28 15:24:12 +00:00
Martin Zumsande
6548ba68e8 test: fix intermittent errors in p2p_ibd_stalling.py
Using is_connected instead of num_test_p2p_connections
ensures that python has taken notice that the p2p was
disconnected.
2023-01-27 15:28:21 -05:00
fanquake
4b51290f71
Merge bitcoin/bitcoin#26977: ci: Fetch no git history, unless lint
faa65f12fc ci: Fetch no git history, unless lint (MarcoFalke)

Pull request description:

  Should cut 20s from each build, with no downside?

  This is possible since commit fad7281d78

ACKs for top commit:
  real-or-random:
    ACK faa65f12fc

Tree-SHA512: 1912d6a2c494de0ac2f69ac1dad568b7b2b9eb52e261d98e05f1184852281cd7fa9bc065ffe632b29ef204c3c7208034ef7b3b516aab3f3eba6b7a81db96ddee
2023-01-27 18:46:20 +00:00
Andrew Chow
483a4bb819
Merge bitcoin/bitcoin#26834: contrib: remove install_db4.sh
44f3c7de21 contrib: remove install_db4.sh (fanquake)
14ce84388f doc: add new NO_* options from #26833 (fanquake)

Pull request description:

  Now that we can build a bdb-only depends prefix (#26833), there is no need to
  maintain a bdb-building bash script, that does the same thing as
  depends, except worse, as it's missing patches and workarounds. i.e #26623.

  Someone that wants to compile bdb themselves, but doesn't want to use other depends built libs, can do:
  ```bash
  make -C depends NO_BOOST=1 NO_LIBEVENT=1 NO_QT=1 NO_SQLITE=1 NO_NATPMP=1 NO_UPNP=1 NO_ZMQ=1 NO_USDT=1
  ...
  to: /path/to/bitcoin/depends/x86_64-pc-linux-gnu
  ```

  which gives them a BDB only prefix, and then compile using:
  ```bash
  export BDB_PREFIX="/path/to/bitcoin/depends/x86_64-pc-linux-gnu"
  ./autogen.sh
  ./configure \
      BDB_LIBS="-L${BDB_PREFIX}/lib -ldb_cxx-4.8" \
      BDB_CFLAGS="-I${BDB_PREFIX}/include"
  ```

  Wondering if we should extract the build bdb/legacy wallet docs somewhere, to avoid the repetition?

ACKs for top commit:
  TheCharlatan:
    ACK 44f3c7de21
  achow101:
    ACK 44f3c7de21
  hebasto:
    ACK 44f3c7de21
  jarolrod:
    ACK 44f3c7de21

Tree-SHA512: 50b33ae9df2ab94a1bd114e846cec16f647a61023b72f0d3e547a18db09c01d60bb7b42a04758212f4930314df03016feb6ebc96962dd8a8e26eb8cd4e0d167d
2023-01-27 12:42:16 -05:00
MarcoFalke
9a288430df
Merge bitcoin/bitcoin#26900: refactor: Add BlockManager getters
faf7b4f1fc Add BlockManager::IsPruneMode() (MarcoFalke)
fae71fe27e Add BlockManager::GetPruneTarget() (MarcoFalke)
fa0f0436d8 Add BlockManager::LoadingBlocks() (MarcoFalke)

Pull request description:

  Requested in https://github.com/bitcoin/bitcoin/pull/25781#discussion_r1061323795, but adding getters seems unrelated from removing globals, so I split it out for now.

ACKs for top commit:
  dergoegge:
    Code review ACK faf7b4f1fc
  brunoerg:
    crACK faf7b4f1fc

Tree-SHA512: 204d0e9a0e8b78175482f89b4ce620fba0e65d8e49ad845d187af44d3843f4c733a01bac1ffe5a5319f524d8346123693a456778b69d6c75268c447eb8839642
2023-01-27 17:33:11 +01:00
John Moffett
c497a198db Fix comment about how wallet txs are sorted
The wallet transactions in the node are not sorted
by hash. Also make comment Doxygen compatible.
2023-01-27 10:04:48 -05:00
MarcoFalke
faa65f12fc
ci: Fetch no git history, unless lint 2023-01-27 15:05:29 +01:00
Hennadii Stepanov
7a820cee0e
test, build: Separate read_json function into its own module 2023-01-27 09:26:29 +00:00
Andrew Chow
835212cd1d
Merge bitcoin/bitcoin#25880: p2p: Make stalling timeout adaptive during IBD
39b93649c4 test: add functional test for IBD stalling logic (Martin Zumsande)
0565951f34 p2p: Make block stalling timeout adaptive (Martin Zumsande)

Pull request description:

  During IBD, there is the following stalling mechanism if we can't proceed with assigning blocks from a 1024 lookahead window because all of these blocks are either already downloaded or in-flight: We'll mark the peer from which we expect the current block that would allow us to advance our tip (and thereby move the 1024 window ahead) as a possible staller. We then give this peer 2 more seconds to deliver a block (`BLOCK_STALLING_TIMEOUT`) and if it doesn't, disconnect it and assign the critical block we need to another peer.

  Now the problem is that this second peer is immediately marked as a potential staller using the same mechanism and given 2 seconds as well - if our own connection is so slow that it simply takes us more than 2 seconds to download this block, that peer will also be disconnected (and so on...), leading to repeated disconnections and no progress in IBD. This has been described in #9213, and I have observed this when doing IBD  on slower connections or with Tor - sometimes there would be several minutes without progress, where all we did was disconnect peers and find new ones.

  The `2s` stalling timeout was introduced in #4468, when blocks weren't full and before Segwit increased the maximum possible physical size of blocks - so I think it made a lot of sense back then.
  But it would be good to revisit this timeout now.

  This PR makes the timout adaptive (idea by sipa):
  If we disconnect a peer for stalling, we now double the timeout for the next peer (up to a maximum of 64s). If we connect a block, we half it again up to the old value of 2 seconds. That way, peers that are comparatively slower will still get disconnected, but long phases of disconnecting all peers shouldn't happen anymore.

  Fixes #9213

ACKs for top commit:
  achow101:
    ACK 39b93649c4
  RandyMcMillan:
    Strong Concept ACK 39b93649c4
  vasild:
    ACK 39b93649c4
  naumenkogs:
    ACK 39b93649c4

Tree-SHA512: 85bc57093b2fb1d28d7409ed8df5a91543909405907bc129de7c6285d0810dd79bc05219e4d5aefcb55c85512b0ad5bed43a4114a17e46c35b9a3f9a983d5754
2023-01-27 01:53:21 -05:00
Amiti Uttarwar
80f39c99ef addrman, refactor: combine two size functions
The functionality of the old size() is covered by the new Size()
when no arguments are specified, so this does not change behavior.

Co-authored-by: Martin Zumsande <mzumsande@gmail.com>
2023-01-26 18:11:13 -05:00
Martin Zumsande
4885d6f197 addrman, refactor: move count increment into Create()
Create() is only called in one spot, so this doesn't
change behavior.

Co-authored-by: Amiti Uttarwar <amiti@uttarwar.org>
2023-01-26 18:11:13 -05:00
Martin Zumsande
c77c877a8e net: Load fixed seeds from reachable networks for which we don't have addresses
Previously, we'd only load fixed seeds if we'd not
know any addresses at all. This change makes it possible
to change -onlynet abruptly, e.g. from -onlynet=onion to
-onlynet=i2p and still find peers.
2023-01-26 18:11:13 -05:00
Martin Zumsande
d35595a78a addrman: add function to return size by network and table
For now, the new functionality will be used in the context of
querying fixed seeds. Other possible applications for
future changes is the use in the context of making automatic
connections to specific networks, or making more detailed info
about addrman accessible via rpc.
2023-01-26 18:11:13 -05:00
Ben Woosley
6879be691b
refactor: Extract RIPEMD160
To directly return a CRIPEMD160 hash from data.

Incidentally, decoding this acronym:
* RIPEMD -> RIPE Message Digest
* RIPE -> RACE Integrity Primitives Evaluation
* RACE -> Research and Development in Advanced Communications Technologies in Europe
2023-01-26 15:48:49 -06:00
John Moffett
08209c039f Correctly limit overview transaction list
The way that the main overview page limits the number
of transactions displayed (currently 5) is not
an appropriate use of Qt. If it's run with a DEBUG
build of Qt, it'll result in a segfault in certain
relatively common situations. Instead of artificially
limiting the rowCount() in the subclassed proxy
filter, we hide/unhide the rows in the displaying
QListView upon any changes in the sorted proxy filter.
2023-01-26 14:56:12 -05:00
MarcoFalke
ffc22b7d42
Merge bitcoin/bitcoin#26923: test: refactor: simplify p2p_{tx_download,eviction}.py by using MiniWallet
8609f24be2 test: refactor: simplify p2p_eviction.py by using MiniWallet (Sebastian Falbesoner)
7aa4b32cd4 test: refactor: simplify p2p_tx_download.py by using MiniWallet (Sebastian Falbesoner)

Pull request description:

  Similar to #26892, this PR simplies the functional tests p2p_tx_download.py and p2p_eviction.py by using MiniWallet in order to avoid manual low-level tx creation. For the latter, rather than mining 100 blocks manually, the pre-mined chain of the test framework is used.

  These instances were found via `$ git grep signrawtransactionwithkey ./test/functional`. AFAICT, there are no other instances where MiniWallet could replace tx creation trivially.

ACKs for top commit:
  MarcoFalke:
    review ACK 8609f24be2

Tree-SHA512: dfb0103fe7f0625d125e8e4408baed8bfc1ff579954af17d0ead5277e05f933b2c2d98a0093e8109e947635f1718d5c58d837ab825f26077fac0a40575bd3e6f
2023-01-26 15:54:06 +01:00
fanquake
eee2c28985
Merge bitcoin/bitcoin#26945: depends: systemtap 4.8
df7ae8b7ca depends: systemtap: remove variadic params that trigger compiler warnings (Cory Fields)
a66d82e25f depends: systemtap 4.8 (fanquake)

Pull request description:

  Updates systemtap to 4.8.
  Includes acc2895a66a4b654e9a0a05ed0927f67f48c75b2 from #25972.
  Will half (depends) fix #26916.

  Release notes etc: https://lwn.net/Articles/913908/.

ACKs for top commit:
  0xB10C:
    ACK df7ae8b7ca
  hebasto:
    re-ACK df7ae8b7ca.

Tree-SHA512: 0f64fba87888058380183f38b6ace7b71f4a8b5503eb32b82b283a40c99d92c449c60deecc2386df5084235cfd760af6c1e7f432fa1bd30f97bb42f100f23d62
2023-01-26 13:37:48 +00:00
stickies-v
a24e633339
refactor: rpc: set TxToJSON default verbosity to SHOW_DETAILS
`TxToJSON()` and `TxToUniv()` are only to be called when we want to
decode the transaction (i.e. its details) into JSON. If `TxVerbosity` is
`SHOW_TXID`, the function should not have been (and currently is not)
called in the first place.

There is no behaviour change, current logic simply assumes anything less
than `TxVerbosity::SHOW_DETAILS_AND_PREVOUT` equals
`TxVerbosity::SHOW_DETAILS`. With this change, the assumptions and
intent become more explicit.
2023-01-26 11:51:33 +00:00
fanquake
79e007d1d6
Merge bitcoin/bitcoin#25296: Add DataStream without ser-type and ser-version and use it where possible
fa035fe2d6 Remove unused CDataStream::SetType (MarcoFalke)
fa29e73cda Use DataStream where possible (MarcoFalke)
fa9becfe1c streams: Add DataStream without ser-type and ser-version (MarcoFalke)

Pull request description:

  This was done in the context of https://github.com/bitcoin/bitcoin/pull/25284 , but I think it also makes sense standalone.

  The basic idea is that serialization type should not be initialized when it is not needed. Same for the serialization version.

  So do this here for `DataStream`. `CDataStream` remains in places where it is not yet possible.

ACKs for top commit:
  stickies-v:
    re-ACK [fa035fe](fa035fe2d6)
  aureleoules:
    diff re-ACK fa035fe2d6 fa0e6640ba..fa035fe2d6

Tree-SHA512: cb5e53d0df7c94319ffadc6ea1d887fc38516decaf43f0673396d79cc62d450a1a61173654a91b8c2b52d2cecea53fe4a500b8f6466596f35731471163fb051c
2023-01-26 11:30:34 +00:00
glozow
77a36033b5
Merge bitcoin/bitcoin#26551: p2p: Track orphans by who provided them
c58c249a5b net_processing: indicate more work to do when orphans are ready to reconsider (Anthony Towns)
ecb0a3e425 net_processing: Don't process tx after processing orphans (Anthony Towns)
c583775706 net_processing: only process orphans before messages (Anthony Towns)
be2304676b txorphange: Drop redundant originator arg from GetTxToReconsider (Anthony Towns)
a4fe09973a txorphanage: index workset by originating peer (Anthony Towns)

Pull request description:

  We currently process orphans by assigning them to the peer that provided a missing parent; instead assign them to the peer that provided the orphan in the first place. This prevents a peer from being able to marginally delay another peer's transactions and also simplifies the internal API slightly. Because we're now associating orphan processing with the peer that provided the orphan originally, we no longer process orphans immediately after receiving the parent, but defer until a future call to `ProcessMessage`.

  Based on #26295

ACKs for top commit:
  naumenkogs:
    utACK c58c249a5b
  glozow:
    ACK c58c249a5b
  mzumsande:
    Code Review ACK c58c249a5b

Tree-SHA512: 3186c346f21e60440266a2a80a9d23d7b96071414e14b2b3bfe50457c04c18b1eab109c3d8c2a7726a6b10a2eda1f0512510a52c102da112820a26f5d96f12de
2023-01-26 10:36:18 +00:00
MarcoFalke
fa035fe2d6
Remove unused CDataStream::SetType
The last use was removed in the previous commit.
2023-01-26 10:45:02 +01:00
MarcoFalke
fa29e73cda
Use DataStream where possible 2023-01-26 10:44:05 +01:00
MarcoFalke
d4c180ecc9
Merge bitcoin/bitcoin#26960: refactor: Remove c_str from util/check
fab958290b refactor: Remove c_str from util/check (MarcoFalke)

Pull request description:

  Seems confusing and fragile to require calling code to call `c_str()` when passing a read-only view of a std::string.

  Fix that by using std::string_view, which can be constructed from string literals and std::string.

  Also, remove the now unused `c_str()` from `src/wallet/bdb.cpp`.

ACKs for top commit:
  stickies-v:
    ACK fab958290b
  aureleoules:
    ACK fab958290b
  theStack:
    ACK fab958290b

Tree-SHA512: ae39812c6bb8e2ef095e1b843774af2718f48404cb848c3e43b16d3c22240557d69d54a13a038a4a9c48b3ba0e4523e1f87abdd60f91486092f50fd43c0e8483
2023-01-26 09:02:36 +01:00