Commit Graph

44200 Commits

Author SHA1 Message Date
093c757d7c Merge bitcoin/bitcoin#32000: Update minisketch subtree to d1e6bb8bbf8ef104b9dd002cab14a71b91061177
f5d8b66a8c Squashed 'src/minisketch/' changes from eb37a9b8e7..d1e6bb8bbf (fanquake)

Pull request description:

  Includes:
  * https://github.com/bitcoin-core/minisketch/pull/92

ACKs for top commit:
  hebasto:
    ACK 4fde88bc46, I've updated the subtree locally and got zero diff with this PR.

Tree-SHA512: 0ddaa6b64ca14da244d455594bc122a059fd1d199d28a7a78f266e352811568bd0f30d3b1e5e5d859f92753d3979831c095e3f6078f0ba2c909b1566a0e74a0c
2025-03-07 12:37:56 +00:00
a3c3f37e71 ci: Do not try to install for fuzz builds 2025-03-07 11:09:57 +00:00
d79dab0fa9 doc: warn against having qt6 installed on macOS 2025-03-07 05:01:46 -05:00
f0b659716b seeds: update .gitignore with signet and testnet4 2025-03-06 15:39:58 -06:00
48f07ac9da chainparams: remove hardcoded signet seeds 2025-03-06 15:39:58 -06:00
d4ab1150c4 chainparams: add signet fixed seeds if default network 2025-03-06 15:39:58 -06:00
49f155efbf seeds: update fixed dns seeds 2025-03-06 15:39:58 -06:00
236687083f makeseeds: regex improvements 2025-03-06 14:50:39 -06:00
98f84d6c23 generate-seeds: update and add signet 2025-03-06 14:50:39 -06:00
c4ed23e539 seeds: add testnet4 seeds 2025-03-06 14:50:39 -06:00
60f17dd816 seeds: add signet seeds 2025-03-06 14:50:39 -06:00
2bcccaa410 makeseeds: align I2P column header 2025-03-06 14:50:39 -06:00
94e21aa5fc makeseeds: update MIN_BLOCKS, add reminder to README 2025-03-06 14:50:39 -06:00
6ae7a3bc4e makeseeds: update user agent regex 2025-03-06 14:50:39 -06:00
9b0d2e5094 makeseeds: fix incorrect regex
We shouldn't have | at the end of the last clause, as this will make it match
the empty string too (so effectively everything starting with Satoshi: matches).

While doing this, put the | at the beginning of every line of regex rather than
the end, to make it easier to update in the future without accidentally running
into this problem again.
2025-03-06 14:50:39 -06:00
a9a2b669f3 Merge bitcoin/bitcoin#32003: doc: remove note about macOS self-signing
c873ab6f23 doc: remove note about macOS self-signing (fanquake)

Pull request description:

  Followup to #31407.

ACKs for top commit:
  Sjors:
    ACK c873ab6f23
  achow101:
    ACK c873ab6f23

Tree-SHA512: f51aacf11606fb3c0a5811a0bb2ed8dbddfcf36c9e4ece1ef0f742195d0a9f3b26dd60299c165c90caca8e2ce264922bdb990632f991d1fef53f2274ec3dcb6a
2025-03-06 10:00:20 -08:00
c7d216ac94 Merge bitcoin/bitcoin#31993: ci: use LLVM 20.1.0 for MSAN
d76647eb8f ci: use LLVM 20.1.0 for MSAN (fanquake)

Pull request description:

  Now that the release is out, stop using rc1.

ACKs for top commit:
  l0rinc:
    utACK d76647eb8f
  Sjors:
    ACK d76647eb8f

Tree-SHA512: 2eefad118dd617c3e9554caee1549965fc4acc437dbef1252c1912faea57ccbfcb39f879911f27f4274931c1d8723b9c7f981aafa6958e70d4371f16c368c627
2025-03-06 17:19:59 +00:00
9f3dcacef7 Merge bitcoin/bitcoin#31978: kernel: pre-29.x chainparams and headerssync update
11a2d3a63e [headerssync] update headerssync config for v29 (glozow)
dd23c53258 [kernel] update chainTxData for v29 (glozow)
80926af8c2 [kernel] update assumevalid and minimumChainWork for v29 (glozow)
0683b8ebf3 [kernel] update assumed blockchain and chainstate sizes for v29 (glozow)

Pull request description:

  Update chainparams and headerssync config for v29.0 (see [release process](https://github.com/bitcoin/bitcoin/blob/master/doc/release-process.md#before-branch-off)).

ACKs for top commit:
  achow101:
    ACK 11a2d3a63e
  Sjors:
    ACK 11a2d3a63e

Tree-SHA512: 726cbb16a3bc8b11419c2888b17552d70217f616f17a715ba4983fdfccb0cfd9705c528601a6bb3e62563a6f43d41543181e13cdbad89d75abba3b7899328031
2025-03-06 10:23:01 +00:00
d5537c18a9 fuzz: make sure DecodeBase58(Check) is called with valid values more often
In Base58 fuzz the two roundtrips are merged now, the new `decode_input` switches between a completely random input and a valid encoded one, to make sure the decoding passes more often.
The `max_ret_len` can also exceed the original length now and is being validated more thoroughly.

Co-authored-by: maflcko <6399679+maflcko@users.noreply.github.com>
Co-authored-by: marcofleon <marleo23@proton.me>
2025-03-05 22:30:28 +01:00
bad1433ef2 fuzz: Always restrict base conversion input lengths
They seem to cause timeouts:
> Issue 397734700: bitcoin-core:base58check_encode_decode: Timeout in base58check_encode_decode

The `encoded_string.empty()` check was corrected here to `decoded.empty()` to make sure the `(0, decoded.size() - 1)` range is always valid.

Co-authored-by: maflcko <6399679+maflcko@users.noreply.github.com>
Co-authored-by: marcofleon <marleo23@proton.me>
Co-authored-by: Martin Zumsande <mzumsande@gmail.com>
2025-03-05 22:28:08 +01:00
c873ab6f23 doc: remove note about macOS self-signing
Followup to #31407.
2025-03-05 17:35:58 +00:00
bd0ee07310 Merge bitcoin/bitcoin#31407: guix: Notarize MacOS app bundle and codesign all MacOS and Windows binaries
e181bda061 guix: Apply all codesignatures to Windows binaries (Ava Chow)
aafbd23fd9 guix: Apply codesignatures to all MacOS binaries (Ava Chow)
3656b828dc contrib: Sign all Windows binaries too (Ava Chow)
31d325464d contrib: Sign and notarize all MacOS binaries (Ava Chow)
710d5b5149 guix: Update signapple (Ava Chow)
e8b3c44da6 build: Include all Windows binaries for codesigning (Ava Chow)
dd4ec840ee build: Include all MacOS binaries for codesigning (Ava Chow)
4e5c9ceb9d guix: Rename Windows unsigned binaries to unsigned.zip (Ava Chow)
d9d49cd533 guix: Rename MacOS binaries to unsigned.tar.gz (Ava Chow)
c214e5268f guix: Rename unsigned.tar.gz to codesigning.tar.gz (Ava Chow)

Pull request description:

  I have updated signapple to notarize MacOS app bundles without adding any additional dependencies. Further, it can also sign and apply detached signatures to standalone binaries.

  As such, we can use signapple to perform the notarization and stapling steps so that MacOS will run the app bundle after it is installed. `detached-sig-create.sh` is updated to have a notarization step and to download the ticket which will be included in the detached signatures. The workflow is largely unchanged for the MacOS codesigners except for the additional requirement of having an App Store Connect API key and Team UUID, instructions for which can be found at https://github.com/achow101/signapple/blob/master/docs/notarization.md. For guix builders, the workflow is unchanged.

  Additionally, the standalone binaries packaged in the MacOS `.tar.gz` and Windows `.zip` will now be codesigned. `detached-sig-create.sh` was updated to handle these, so the workflow for both MacOS and Windows codesigners remains unchanged. For guix builders, the workflow is also unchanged.

  Because those binaries will how have codesigned and unsigned versions, the build command is modified to output `-unsigned.{tar.gz,zip}` archives containing the binaries. Since this happens to conflict with the tarball used for codesigning, the codesigning tarball was renamed to `-codesigning.tar.gz`. Both MacOS and Windows codesigners will need to adjust their workflows to account for the new name.

  Fixes #15774 and #29749

ACKs for top commit:
  Sjors:
    Tested ACK e181bda061
  davidgumberg:
    Tested ACK e181bda061.
  pinheadmz:
    tested ACK e181bda061

Tree-SHA512: ce0e2bf38e1748cdaa0d13be6f61c3289cd09cfb7d071a68b0b13d2802b3936c9112eda6e4c7b29c535c0995d56b14871442589cdcea2e7707e35c1b278b9263
2025-03-05 17:34:26 +00:00
11f8ab140f test: wallet, coverage for crash on dup block disconnection during unclean shutdown
Co-authored-by: furszy <matiasfurszyfer@protonmail.com>
2025-03-05 10:40:04 -05:00
4fde88bc46 Update minisketch subtree to latest master 2025-03-05 15:36:56 +00:00
f5d8b66a8c Squashed 'src/minisketch/' changes from eb37a9b8e7..d1e6bb8bbf
d1e6bb8bbf Merge bitcoin-core/minisketch#92: doc: rename from sipa to bitcoin-core
b7b7dd0ec8 doc: rename from sipa to bitcoin-core

git-subtree-dir: src/minisketch
git-subtree-split: d1e6bb8bbf8ef104b9dd002cab14a71b91061177
2025-03-05 15:36:56 +00:00
0391d7e4c2 Merge bitcoin/bitcoin#31848: test, tracing: don't use problematic bpf_usdt_readarg_p()
a0b66b4bff Revert "test: Disable known broken USDT test for now" (0xb10c)
ec47ba349d contrib: don't use bpf_usdt_readarg_p (0xb10c)
35ae6ff60f test: don't use bpf_usdt_readarg_p (0xb10c)

Pull request description:

  Instead of using the undocumented bcc helper `bpf_usdt_readarg_p()`, use [`bpf_usdt_readarg()`][1] and [`bpf_probe_read_user()`][2]/[`bpf_probe_read_user_str()`][3] as documented in the [bcc USDT reference guide][1].

  Note that the `bpf_probe_read_user()` documentation says the following:
  > For safety, all user address space memory reads must pass through bpf_probe_read_user().

  It's [assumed](https://github.com/bitcoin/bitcoin/issues/27380#issuecomment-2286505348) that using `bpf_usdt_readarg_p()` caused a lifetime issue. With `bpf_usdt_readarg()` and `bpf_probe_read_user()`, this doesn't [seem](https://github.com/bitcoin/bitcoin/issues/27380#issuecomment-2528671656) to be a problem anymore.

  This allows to revert faed533743 and closes #27380.

    [1]: https://github.com/iovisor/bcc/blob/master/docs/reference_guide.md#6-usdt-probes
    [2]: https://github.com/iovisor/bcc/blob/master/docs/reference_guide.md#10-bpf_probe_read_user
    [3]: https://github.com/iovisor/bcc/blob/master/docs/reference_guide.md#11-bpf_probe_read_user_str

ACKs for top commit:
  i-am-yuvi:
    Tested ACK a0b66b4bff
  willcl-ark:
    tACK a0b66b4bff

Tree-SHA512: 002a692ad81ef284d4a610bbc6da477d623bf4dae5134c3692431c56b71692fa597e280fddd411eadd08eae77f01f47e2dcd0f37c0081326abe11a75bb10d6a6
2025-03-05 10:21:10 -05:00
36d4bd7fe3 Merge bitcoin/bitcoin#31997: doc: update location of minisketch repository
972b604dc4 doc: update location of minisketch repository (fanquake)

Pull request description:

  This repository is now at https://github.com/bitcoin-core/minisketch.

ACKs for top commit:
  hebasto:
    ACK 972b604dc4.
  theStack:
    ACK 972b604dc4

Tree-SHA512: a164f97700e73b284429993f9639d1d4eab23cc09ded3104be392d5d259297c2906906a565ffa8848a495e8f35cbbe18ba4155fe1d16cda0406ac3c75f9d9a62
2025-03-05 14:49:52 +00:00
0c0a2717bc Merge bitcoin/bitcoin#31954: doc: update fuzz instructions when on macOS
75486c8ed8 doc: update fuzz instructions when on macOS (Max Edwards)

Pull request description:

  Fixes: #31049

  Updates the instructions for fuzzing on macOS to use `lld` instead of `ld`.

  Tested instructions on M1 Mac running 14.6.1

ACKs for top commit:
  l0rinc:
    ACK 75486c8ed8
  brunoerg:
    ACK 75486c8ed8
  hebasto:
    ACK 75486c8ed8, tested on macOS 15.3.1 (Apple M1) + Clang 19.1.7.

Tree-SHA512: 2c5645d78fce1644964dee55c8ca6a6549bfd4f4a9a5719bbe49264f7216f0267c27999e23402a47eecbc8502985d812b986bf6850a5d63d110bdb98769f23c2
2025-03-05 14:31:13 +00:00
a2ab2faf4a Merge bitcoin/bitcoin#31982: scripted-diff: rename libmultiprocess repository
18749efb07 scripted-diff: rename libmultiprocess repository (fanquake)

Pull request description:

  For when we shift `libmultiprocess` into the `bitcoin-core` organisation.

ACKs for top commit:
  Sjors:
    tACK 18749efb07
  hebasto:
    ACK 18749efb07.

Tree-SHA512: df361e239da072dba2574e90231bbf8c4daf906786a838fe63761d38d5624510dbeeb6308567dc32321bd3bc76f1117606c8eb2c22e299aa164786ec342bd4b3
2025-03-05 14:24:02 +00:00
972b604dc4 doc: update location of minisketch repository 2025-03-05 14:13:53 +00:00
611999e097 doc: link to benchcoin over bitcoinperf 2025-03-05 13:58:21 +00:00
d76647eb8f ci: use LLVM 20.1.0 for MSAN 2025-03-05 10:31:25 +00:00
c2341ebb5b Merge bitcoin/bitcoin#31983: build: don't show ccache summary with MSVC
c718bffc36 build: don't use ccache with MSVC (fanquake)

Pull request description:

  Set `WITH_CCACHE` to `OFF` for MSVC, so it doesn't show as `ON` in the configure summary.

  Fixes #31771.

ACKs for top commit:
  hebasto:
    ACK c718bffc36, I have reviewed the code and it looks OK.

Tree-SHA512: cf20b36a496a446051d0586c55d05a9133dce26a958e6b39b510094c56014275b866806c88be40ffa918b4280970c082b981b4e52e4bfdb8cec1556f666898fc
2025-03-05 09:54:26 +00:00
88debb3e42 Merge bitcoin/bitcoin#31940: Add assumeutxo chainparams to release-process.md
02fae33635 doc: add assumeutxo chainparams to release proc (willcl-ark)

Pull request description:

  This should ideally be bumped every major (and perhaps even minor?) release to avoid falling too far behind, and therefore keeping this feature as useful as it can be.

  Document in release-process.md to avoid forgetting to do this.

ACKs for top commit:
  achow101:
    ACK 02fae33635
  glozow:
    ACK 02fae33635

Tree-SHA512: 1c570b476a2c1369cde20965a762a4bce76fc27e7cf2704032132c9679ac1bc003d5dcc5b2bf39625f1b92b182254bec60743e52858ef89428df2b90ff4fb804
2025-03-04 14:45:05 -05:00
c8dcb61172 Merge bitcoin/bitcoin#31985: doc: Bring reduce-memory.md up to date
fff4f93dff doc: Bring reduce-memory.md up to date (laanwj)

Pull request description:

  Update default number of RPC threads to 16 (#31215) and remove reference to very old version of bitcoin core.

  Let me know if you notice other mismatches with current defaults.

ACKs for top commit:
  achow101:
    ACK fff4f93dff
  brunoerg:
    ACK fff4f93dff
  TheCharlatan:
    ACK fff4f93dff
  vasild:
    ACK fff4f93dff

Tree-SHA512: 14d91da1f86c8b460828a6e4ae9151ec430cbbaefa85d258c574b5e340cbf64244de981d5b3f37a0d97aafe872f3edb100596fc9e2b11c0df7874b1da8054a55
2025-03-04 11:36:16 -08:00
11a2d3a63e [headerssync] update headerssync config for v29 2025-03-04 14:23:18 -05:00
dd23c53258 [kernel] update chainTxData for v29 2025-03-04 14:23:18 -05:00
80926af8c2 [kernel] update assumevalid and minimumChainWork for v29 2025-03-04 14:23:18 -05:00
0683b8ebf3 [kernel] update assumed blockchain and chainstate sizes for v29 2025-03-04 14:23:17 -05:00
e13c18f6ce Merge bitcoin/bitcoin#31969: Add mainnet assumeutxo param at height 880,000
14f1674855 chainparams: add mainnet assumeutxo param at height 880_000 (Sjors Provoost)

Pull request description:

  #31940 suggests adding a snapshot at every major release.

  This snapshot should be suitable for v29. I picked the most recent multiple of 10K blocks.

  You can either download this torrent:

  ```
  magnet:?xt=urn:btih:559bd78170502971e15e97d7572e4c824f033492&dn=utxo-880000.dat&tr=udp%3A%2F%2Ftracker.bitcoin.sprovoost.nl%3A6969
  ```

  Or generate the snapshot yourself:

  ```sh
  bitcoin-cli -rpcclienttimeout=0 -named dumptxoutset utxo-880000.dat rollback=880000
  ```

  The SHA-256 hash should be:

  ```
  shasum -a 256 utxo-880000.dat
  43b3b1ad6e1005ffc0ff49514d0ffcc3e3ce671cc8d02da7fa7bac5405f89de4
  ```

  And then load it on a fresh node during IBD with:

  ```
  bitcoin-cli -rpcclienttimeout=0 loadtxoutset utxo-880000.dat
  ```

  Note that it's more performant to turn off networking while the snapshot is loading, see #29993:

  ```sh
  bitcoin-cli setnetworkactive false
  ```

  Once the snapshot is loaded:

  ```sh
  bitcoin-cli setnetworkactive true
  ```

  And enjoy a speedy ride to the tip.

ACKs for top commit:
  achow101:
    ACK 14f1674855
  fjahr:
    tACK 14f1674855
  hodlinator:
    ACK 14f1674855
  rkrux:
    Concept ACK 14f1674855
  polespinasa:
    ACK 14f1674855

Tree-SHA512: e7ed3e8ce3a247614545ecd3254a91814d7f87b3ca1be46df3b9a4c1e6353b46c82ab97d9fc9c5bed8938f28a6a61e6b70baa7c9649fe5da0f2f390b7932f15e
2025-03-04 14:14:50 -05:00
e5ff4e416e qa: use a clearer and documented amount error in malleated snapshot
In the assumeutxo functional tests, the final test case with alternated UTxO data tests the error
raised when deserializing a snapshot that contains a coin with an amount not in range (<0 or
>MAX_MONEY).

The current malleation uses an undocumented byte string and offset which makes it hard to maintain.
In addition, the undocumented offset is set surprisingly high (39 bytes is well into the
serialization of the amount which starts at offset 36). Similarly the value is surprisingly small,
presumably one was adjusted for the other. But there is no comment explaining how they were chosen,
why not in a clearer manner and what they are supposed to represent.

Instead replace this seemingly magic value with a clear one, MAX_MONEY + 1, serialize the whole
value for the amount field at the correct offset, and document the whole thing for the next person
around.
2025-03-04 12:50:17 -05:00
b34fdb5ade test: introduce output amount (de)compression routines 2025-03-04 12:50:17 -05:00
18e83534ac wallet: Replace "non-0" with "non-zero" in translatable error message
Transifex interprets the "-0" substring as a number in translatable
strings. Since not all translations preserve "-0," this triggers a
corresponding warning. While this warning could be disabled globally, it
is more reasonable to adjust the original string instead.
2025-03-04 16:29:43 +00:00
a7911ed101 test: introduce VARINT (de)serialization routines 2025-03-04 10:08:12 -05:00
c718bffc36 build: don't use ccache with MSVC
Set WITH_CCACHE to OFF for MSVC, so it doesn't show as ON in the
configure summary.

Fixes #31771.
2025-03-04 14:53:06 +00:00
fff4f93dff doc: Bring reduce-memory.md up to date
Update default number of RPC threads to 16 (#31215) and remove reference
to very old version of bitcoin core.
2025-03-04 15:37:59 +01:00
75486c8ed8 doc: update fuzz instructions when on macOS
Default linker on macOS does not work with recent versions of LLVM. Updated the instructions for fuzzing to use lld instead.
2025-03-04 13:18:52 +00:00
18749efb07 scripted-diff: rename libmultiprocess repository
-BEGIN VERIFY SCRIPT-

sed -i -e "s/chaincodelabs\/libmultiprocess/bitcoin-core\/libmultiprocess/g" $(git grep -l "chaincodelabs/libmultiprocess")

-END VERIFY SCRIPT-
2025-03-04 11:16:17 +00:00
02fae33635 doc: add assumeutxo chainparams to release proc
This should be bumped every major release to avoid falling too far
behind, therefore making this feature as useful as it can be.

Document this in release-process.md to avoid forgetting to add a new
hardcoded height during release.
2025-03-04 09:47:01 +00:00
15717f0ef3 Merge bitcoin/bitcoin#31916: init: Handle dropped UPnP support more gracefully
44041ae0ec init: Handle dropped UPnP support more gracefully (laanwj)

Pull request description:

  Closes bitcoin-core/gui#843.

  In that issue it was brought up that users likely don't care what kind of port forwarding is used, and that the setting is opportunistic anyway, so instead of showing an extensive warning, we can simply "upgrade" from UPNP to NAT-PMP+PCP.

  - Change the logic for removed runtime setting `-upnp` to set `-natpmp` instead, and log a message.

  - Also remove any lingering `upnp` from `settings.json` and replace it with `natpmp`, when it makes sense (this is important so that the UI shows the right values in the settings):

  ```json
  {
      "upnp": true
  }
  ```
  becomes
  ```json
  {
      "natpmp": true
  }
  ```

  and

  ```json
  {
      "upnp": false
  }
  ```
  becomes
  ```json
  {
      "natpmp": false
  }
  ```

ACKs for top commit:
  darosior:
    tACK 44041ae0ec
  davidgumberg:
    lightly reviewed code, tested ACK 44041ae0ec
  achow101:
    ACK 44041ae0ec
  ryanofsky:
    Code review ACK 44041ae0ec. Code changes look good. Could potentially add test coverage for this, though I don't think it is too important.
  hodlinator:
    cr-ACK 44041ae0ec

Tree-SHA512: ca822f7160529e59973bab6a7cc31753ffa3caaa806887b5073b42c4ae5c918a5ea2cf93c666e5125ea70d10c6954709a535a264b04c2fd4cf916b3c59ab9964
2025-03-03 16:40:26 -08:00