Commit graph

41681 commits

Author SHA1 Message Date
Sjors Provoost
a74b0f93ef
Have testBlockValidity hold cs_main instead of caller
The goal of interfaces is to eventually run in their own process,
so we can't use EXCLUSIVE_LOCKS_REQUIRED in their declaration.

However TestBlockValidaty will crash (in its call to ConnectBlock)
if the tip changes from under the proposed block.

Have the testBlockValidity implementation  hold the lock instead,
and non-fatally check for this condition.
2024-06-27 08:58:25 +02:00
Sjors Provoost
f6dc6db44d
refactor: use CHECK_NONFATAL to avoid single-use symbol 2024-06-27 08:58:24 +02:00
Sjors Provoost
5fb2b70489
Drop unneeded lock from createNewBlock
This was added in 4bf2e361da, but
BlockAssembler::CreateNewBlock already locks cs_main internally.
2024-06-27 08:56:20 +02:00
Cory Fields
f1478c0545 mempool: move LoadMempool/DumpMempool to node 2024-06-26 22:47:09 +00:00
Ava Chow
517e204bac Change MigrateLegacyToDescriptor to reopen wallet as BERKELEY_RO
When we reopen the wallet to do the migration, instead of opening using
BDB, open it using the BerkeleyRO implementation.
2024-06-26 16:38:56 -04:00
Ava Chow
b27afb7fb7
Merge bitcoin/bitcoin#29833: i2p: fix and improve logs
7d3662fbe3 i2p: fix log when an interruption happens during `Accept` (brunoerg)
3d3a83fab2 i2p: log errors properly according to their severity (brunoerg)

Pull request description:

  This PR improves and fixes i2p logs (joint work with vasild).

  - It replaces `LogPrint` to `LogPrintLevel` so we can log according to the severity.
  - Fix log when interruption happens during `Accept`. Before this PR, when an interruption happens, it just logs "Error accepting:", no reason is logged as it does for other situations. This PR changes it to log "Accept interrupted".
  - Log errors according to the severity. Stuff like creating SAM session, destroying SAM session, etc... are logged as 'debug'.

ACKs for top commit:
  achow101:
    ACK 7d3662fbe3
  marcofleon:
    ACK 7d3662fbe3.
  vasild:
    ACK 7d3662fbe3

Tree-SHA512: 1c3d92108dbc22833f37a78e18b4efd723433d10f28166d17c74eab884cd97e908b4e0a0908fd16288df895eb2eb480f781de37b2ec6a6d414abfb71e0c86fe2
2024-06-26 15:28:26 -04:00
Cory Fields
6d242ff1e9 kernel: remove mempool_persist.cpp
DumpMempool/LoadMempool are not necessary for the kernel
2024-06-26 18:58:54 +00:00
MarcoFalke
fa8f53273c
refactor: Remove no longer needed clang-15 workaround for std::span 2024-06-26 18:50:20 +02:00
MarcoFalke
9999dbc1bd
fuzz: Clarify Apple-Clang-16 workaround 2024-06-26 18:48:27 +02:00
MarcoFalke
fa7462c67a
build: Bump clang minimum supported version to 16 2024-06-26 18:48:05 +02:00
Ava Chow
9ac4f69ec2
Merge bitcoin/bitcoin#30334: Update libsecp256k1 subtree to latest master
1408944d2e Squashed 'src/secp256k1/' changes from 06bff6dec8..4af241b320 (fanquake)

Pull request description:

  Updates the libsecp256k1 subtree to f473c959f0. This includes a number of CMake related changes, including one that prevents CMake from segfaulting when we were configuring the subtree. A number of these changes have come from the review/discussion in https://github.com/hebasto/bitcoin/pull/192:

  * https://github.com/bitcoin-core/secp256k1/pull/1529
  * https://github.com/bitcoin-core/secp256k1/pull/1532
  * https://github.com/bitcoin-core/secp256k1/pull/1535
  * https://github.com/bitcoin-core/secp256k1/pull/1543
  * https://github.com/bitcoin-core/secp256k1/pull/1545
  * https://github.com/bitcoin-core/secp256k1/pull/1546

  Also includes:

  * https://github.com/bitcoin-core/secp256k1/pull/1488
  * https://github.com/bitcoin-core/secp256k1/pull/1517
  * https://github.com/bitcoin-core/secp256k1/pull/1533
  * https://github.com/bitcoin-core/secp256k1/pull/1548
  * https://github.com/bitcoin-core/secp256k1/pull/1550

ACKs for top commit:
  achow101:
    ACK cc58e958f3
  TheCharlatan:
    ACK cc58e958f3
  hebasto:
    re-ACK cc58e958f3.
  real-or-random:
    utACK cc58e958f3

Tree-SHA512: 41409bc7f65bd17a9feb5c0455e2de2d291a25e4ce14e4a01fe25fcf9d45c64ddf55f274c17d1c86a63ab6b4870997ab79c65ec2795e5b3b49502823770c500f
2024-06-26 12:37:28 -04:00
Ava Chow
1d00601b9b
Merge bitcoin/bitcoin#30309: wallet: notify when preset + automatic inputs exceed max weight
72b226882f wallet: notify when preset + automatic inputs exceed max weight (furszy)

Pull request description:

  Small change. Found it while finishing my review on #29523. This does not interfere with it.

  Basically, we are erroring out early when the automatic coin selection process exceeds the maximum weight, but we are not doing so when the user-preselected inputs combined with the wallet-selected inputs exceed the maximum weight.
  This change avoids signing all inputs before erroring out and introduces test coverage for `fundrawtransaction`.

ACKs for top commit:
  achow101:
    ACK 72b226882f
  tdb3:
    re ACK for 72b226882f
  rkrux:
    tACK [72b2268](72b226882f)
  ismaelsadeeq:
    utACK 72b226882f

Tree-SHA512: d77be19231023383a9c79a5d66b642dcbc6ebfc31a363e0b9f063c44898720a7859ec211cdbc0914ac7a3bfdf15e52fb8fc20d97f171431f70492c0f159dbc36
2024-06-26 12:16:16 -04:00
merge-script
d3d2bbf576
Merge bitcoin/bitcoin#30327: build: Drop redundant sys/sysctl.h header check
c0b5ea5901 build: Drop redundant `sys/sysctl.h` header check (Hennadii Stepanov)

Pull request description:

  The `AC_CHECK_HEADERS` macro defines `HAVE_SYS_SYSCTL_H` if the `sys/sysctl.h` header is found. However, in the source code, this header is guarded by `HAVE_SYSCTL` and `HAVE_SYSCTL_ARND` macros, which have their own checks. Since `HAVE_SYS_SYSCTL_H` is not used, we can skip the `AC_CHECK_HEADERS(... sys/sysctl.h ...)` check.

ACKs for top commit:
  laanwj:
    ACK c0b5ea5901
  fanquake:
    ACK c0b5ea5901 - we could got the other way, and add nested #defs, but that doesn't seem worthwhile.

Tree-SHA512: 73bc4bbfc5c457cd2c38e40f8e57d2a70c06ef661d76d4148d683d262be45b9405b8cda1958ac611c312ca7d9e2f9624cf2cac1b61f1008af0856875c62f0eac
2024-06-26 15:25:46 +01:00
merge-script
0c57a798b5
Merge bitcoin/bitcoin#29987: guix: build with glibc 2.31
b5fc6d46a3 guix: use glibc 2.31 (fanquake)

Pull request description:

  Set minimum required glibc to 2.31.
  The glibc 2.31 branch is still maintained: https://sourceware.org/git/?p=glibc.git;a=shortlog;h=refs/heads/release/2.31/master.

  Remove the stack-protector check from test-security-check, as the test
  no-longer fails, and given the control we have of the end, the actual
  security-check test seems sufficient (this might also be applied to some
  of the other checks).

  Drops runtime support for Ubuntu Bionic 18.04 and RHEL-8 from the release binaries.

ACKs for top commit:
  TheCharlatan:
    ACK b5fc6d46a3

Tree-SHA512: ba7e727240fa0ebebfb8b749024c71cbfdec37c33b39627866d78f9318ccdc687fd5103a63ee0e98cf809d9954dde56b1b305691c33d1de275ed0519f716c921
2024-06-26 15:21:44 +01:00
merge-script
3f0ee7655b
Merge bitcoin/bitcoin#30007: chainparams: Add achow101 DNS seeder
2721d64989 chainparams: Add achow101 DNS seeder (Ava Chow)

Pull request description:

  I wrote a [DNS seeder](https://github.com/achow101/dnsseedrs) and have been running it for the past 2 months now. I believe it is ready/good enough to be used as an additional DNS seeder for all of our supported public networks.

ACKs for top commit:
  laanwj:
    ACK 2721d64989
  1440000bytes:
    ~~reACK 2721d64989~~
  mzumsande:
    ACK 2721d64989
  willcl-ark:
    reACK 2721d64989

Tree-SHA512: 857a6cf7dd33962f0008a89db4d6b57d3c6aa622704cdcca6ab710babeead3a2970d9a6fa190949c7bbf7cb7d006e814d6314be3d8c8180eed29013c7c1ac7e1
2024-06-26 11:43:58 +01:00
merge-script
b4b9854394
Merge bitcoin/bitcoin#30321: rest: don't copy data when sending binary response
1556d21599 rest: don't copy data when sending binary response (Roman Zeyde)

Pull request description:

  Also, change `HTTPRequest::WriteReply` to accept `std::span`.

ACKs for top commit:
  laanwj:
    re-ACK 1556d21599
  stickies-v:
    ACK 1556d21599

Tree-SHA512: 3e563d8072f0e1b90b00f85adb140d4e5fef169b6882a837b08d1e8391b64c21bea3c4256c4e2a624ac1fb3d374f12a1cc16dc59b2155ec857728162d1daaceb
2024-06-26 11:42:06 +01:00
Sjors Provoost
75ce7637ad
refactor: testBlockValidity make out argument last 2024-06-26 12:24:48 +02:00
Sjors Provoost
83a9bef0e2
Add missing include for mining interface
Needed for std::unique_ptr
2024-06-26 12:24:47 +02:00
merge-script
2cd7c6bd93
Merge bitcoin/bitcoin#30147: contrib: Fixup verify-binaries OS platform parsing
3ab2520190 contrib: Fixup verify-binaries OS platform parsing (Ben Westgate)

Pull request description:

  Closes #30145.

  This PR solves two major issues in the `parse_version_string` function of verify-binaries:
  1. `-aarch64` binaries cannot be specifically downloaded. The -platform string gets interpreted as a release candidate that doesn't exist due to containing sub-string "rc".
  2. Specifying a platform with a "-" in the name causes the parser to ignore both "-platform" AND "-rcN" and download the potentially wrong (non-rc) version for every platform. This also prevented specifying just one platform binary the user wished to download.

  It also updates the accompanying `test.py` to cover problem two and adds two examples that were formerly broken to `README.md` to show what is now possible. Including the most useful case of downloading only 1 specific platform's binary.

  This improves the Bitcoin verify-binaries tools user experience by not:
  1. Failing to download for inexplicable reasons,
  2. Downloading more files than what the user told it to, or in the worst case
  3. Downloading only the wrong files.

  * A test was added to cover the command `verify-binaries/verify.py pub 22.0-x86_64-linux-gnu.tar.gz` which checks that _bitcoin-22.0-x86_64-linux-gnu.tar.gz_ downloads successfully AND ONLY _bitcoin-22.0-x86_64-linux-gnu.tar.gz_ downloads.
  * The steps to reproduce each bug are in the referenced issue #30145. Explanation of the potential issue as well as reasoning for the way the bug was fixed are in my commit descriptions.
  * This delivers the promised feature of "only download the binaries for a certain platform", by allowing strings with '-' to be accepted, allowing for single file downloads for any specific platform which was not always possible before.
  * Removes 6 lines of code from the offending `parse_version_string` function, while fixing the bugs/errors, and extending the functionality to be practical for users with slow connections.
  * Makes the error message more helpful when no file matches the provided platform string, now prints "Did you mean: `closest-match`" to help correct typos.

  Thanks for reading my PR. I look forward to getting this helpful tool in its best shape yet.

  Log of this branch passing the new test.py:
  ```
  python3 test.py
  ✓ 'Nonexistent version should fail' passed
  ✓ 'Malformed version should fail' passed
  ✓ '--min-good-sigs 20 should fail' passed
  - testing verification (22.0-x86_64-linux-gnu.tar.gz)
  ✓ '22.0-x86_64-linux-gnu.tar.gz should succeed' passed
  - testing verification (22.0)
  ✓ '22.0 should succeed' passed
  ```

  Log of master failing the new test.py:
  ```
  python3 test.py
  ✓ 'Nonexistent version should fail' passed
  ✓ 'Malformed version should fail' passed
  ✓ '--min-good-sigs 20 should fail' passed
  - testing verification (22.0-x86_64-linux-gnu.tar.gz)
  ✓ '22.0-x86_64-linux-gnu.tar.gz should succeed' passed
  Traceback (most recent call last):
    File "/home/ben/Documents/GitHub/bitcoin/contrib/verify-binaries/test.py", line 74, in <module>
      main()
    File "/home/ben/Documents/GitHub/bitcoin/contrib/verify-binaries/test.py", line 27, in main
      assert len(v) == 1
             ^^^^^^^^^^^
  AssertionError
  ```

ACKs for top commit:
  stickies-v:
    re-ACK 3ab2520190
  willcl-ark:
    re-ACK 3ab2520190

Tree-SHA512: 6093228bb876cd0ac84d1cd2630074e17a3f09c4b23325b9419d859a5721a802f928844575233b135df52b882287dd18d6fadf4419d88ec0a2cdf82db315329e
2024-06-26 10:28:44 +01:00
merge-script
be4df59696
Merge bitcoin/bitcoin#30312: contrib: add R(UN)PATH check to ELF symbol-check
4289dd02cc contrib: add R(UN)PATH check to ELF symbol-check (fanquake)

Pull request description:

  Our binaries shouldn't contain any rpaths, or runpaths, so check that at release time.

  Guix build (aarch64):
  ```bash
  14f1b54936f71aaf8fedb987e1c2f5642c34ac35f4856cdbd7bf7b4a9f42507c  guix-build-4289dd02cce6/output/aarch64-linux-gnu/SHA256SUMS.part
  b120503ac4a37c160aa1bdc662348a2a662cb9b3d0477daa177e92afacab6a27  guix-build-4289dd02cce6/output/aarch64-linux-gnu/bitcoin-4289dd02cce6-aarch64-linux-gnu-debug.tar.gz
  6416e3678aa13301ba2327e65dcd83afefd15d21c96c1b574cf616a65466a260  guix-build-4289dd02cce6/output/aarch64-linux-gnu/bitcoin-4289dd02cce6-aarch64-linux-gnu.tar.gz
  b7f11fa4abc034b32c208a9d642a0cafc0de693d49c8f3b28d1cf2d318af6826  guix-build-4289dd02cce6/output/arm-linux-gnueabihf/SHA256SUMS.part
  7cf6269025b10bc5ad65cd98baba68b4b65d3caabcd4d62e7af892bbb16c253f  guix-build-4289dd02cce6/output/arm-linux-gnueabihf/bitcoin-4289dd02cce6-arm-linux-gnueabihf-debug.tar.gz
  c136665417cc1f9254f4541c1161ea6d24d2325e4baa2dd4a306f67a1edf9c20  guix-build-4289dd02cce6/output/arm-linux-gnueabihf/bitcoin-4289dd02cce6-arm-linux-gnueabihf.tar.gz
  37dd0359e073cbb38dcd6e17953d31e414ce27516c31b18ef6aa1bc9530dbed2  guix-build-4289dd02cce6/output/arm64-apple-darwin/SHA256SUMS.part
  3d01f5db06e1b1cbebc5a5a4277ad3da8911afe35e111d4650e2beee6038cfdb  guix-build-4289dd02cce6/output/arm64-apple-darwin/bitcoin-4289dd02cce6-arm64-apple-darwin-unsigned.tar.gz
  9d8ad7cbdc1e154b33c138de21e7a0ffc8a8857b522db9272c70d5c10732460c  guix-build-4289dd02cce6/output/arm64-apple-darwin/bitcoin-4289dd02cce6-arm64-apple-darwin-unsigned.zip
  23f14eeaeac2e881e41543a796dfa65f132e89153281f9fbcb8019d08fff7eb2  guix-build-4289dd02cce6/output/arm64-apple-darwin/bitcoin-4289dd02cce6-arm64-apple-darwin.tar.gz
  b62d9e202e5414ebefe129e733beaee76b4f9b05a7dd20807fbbdbe24f27f692  guix-build-4289dd02cce6/output/dist-archive/bitcoin-4289dd02cce6.tar.gz
  1301b33745b9016bbb7f038ee2004f630244deaa6575b6c75391cda2d8d3455d  guix-build-4289dd02cce6/output/powerpc64-linux-gnu/SHA256SUMS.part
  54e988c3d3fc204d4b232dcf24df8a80733c46e3adf9ea0c81a1637609fc1131  guix-build-4289dd02cce6/output/powerpc64-linux-gnu/bitcoin-4289dd02cce6-powerpc64-linux-gnu-debug.tar.gz
  6acb3348d67d3e96a6f3a6e782ae088532b75d4b38cbfe249e114e07eafefdb6  guix-build-4289dd02cce6/output/powerpc64-linux-gnu/bitcoin-4289dd02cce6-powerpc64-linux-gnu.tar.gz
  cc30cfe72eefa498f347d825c57a19501d0c24330d2b4bcdfa432cf7a17880e8  guix-build-4289dd02cce6/output/riscv64-linux-gnu/SHA256SUMS.part
  a56144f8a816c6b62970c29d6c805fe7d26c4d1171e96379e1e6a53c7cb504f6  guix-build-4289dd02cce6/output/riscv64-linux-gnu/bitcoin-4289dd02cce6-riscv64-linux-gnu-debug.tar.gz
  7d67eac59846d478b5ecefa1396d3214c2f9b394ec4de4c099b2b2304750e13e  guix-build-4289dd02cce6/output/riscv64-linux-gnu/bitcoin-4289dd02cce6-riscv64-linux-gnu.tar.gz
  2d1b1ec32f566ad37b7fb6e2d8b150389c0d02013fc99b12e9e93cb938cfdbc7  guix-build-4289dd02cce6/output/x86_64-apple-darwin/SHA256SUMS.part
  1bb7a360974cc839499f82cf00dc6e59c3584a3094382086217eacb97b6da931  guix-build-4289dd02cce6/output/x86_64-apple-darwin/bitcoin-4289dd02cce6-x86_64-apple-darwin-unsigned.tar.gz
  821a1587e285a8514a9f2ed9bec7d422e91d5f1db3cbb9e4c5ce4467298e692f  guix-build-4289dd02cce6/output/x86_64-apple-darwin/bitcoin-4289dd02cce6-x86_64-apple-darwin-unsigned.zip
  15956787628f5014adc53fe98fc995c56424c8e6c1e698283f65099751a61dbd  guix-build-4289dd02cce6/output/x86_64-apple-darwin/bitcoin-4289dd02cce6-x86_64-apple-darwin.tar.gz
  76e8a8275f27a5d2b4eb29c0440c5dfbecb0d9348362ff7defe989820d5ec80b  guix-build-4289dd02cce6/output/x86_64-linux-gnu/SHA256SUMS.part
  3c8b19f1a130ebb12a1ca4103fa283e71d909f09da5cef8047db1e7e7dfea162  guix-build-4289dd02cce6/output/x86_64-linux-gnu/bitcoin-4289dd02cce6-x86_64-linux-gnu-debug.tar.gz
  87b3735cda595556e8adfd4de5c9cc966e9996cdb76b8f9dfa8c978d37397d40  guix-build-4289dd02cce6/output/x86_64-linux-gnu/bitcoin-4289dd02cce6-x86_64-linux-gnu.tar.gz
  fc535f76e6323fb0feeeee790865d0d2c8ea9d2c85d72a620acfb83546fb7628  guix-build-4289dd02cce6/output/x86_64-w64-mingw32/SHA256SUMS.part
  9fd5d3b4e91fa8c4d137c9f8d2089c81f4c4165bb6ab9a404b163f7b363587fd  guix-build-4289dd02cce6/output/x86_64-w64-mingw32/bitcoin-4289dd02cce6-win64-debug.zip
  b4658cdc94e70cd7b810a44770684b742d96d7d40d720cc54f209784e0ad4ad6  guix-build-4289dd02cce6/output/x86_64-w64-mingw32/bitcoin-4289dd02cce6-win64-setup-unsigned.exe
  e4557d1f8c1b0eb5014ad56d2a17a0a618c3ba7e6d073628e633382e1d4191aa  guix-build-4289dd02cce6/output/x86_64-w64-mingw32/bitcoin-4289dd02cce6-win64-unsigned.tar.gz
  3f9a104633f6962b0b8efb64a7d6be453f56617561e7f5b49a84ae191942ea5d  guix-build-4289dd02cce6/output/x86_64-w64-mingw32/bitcoin-4289dd02cce6-win64.zip
  ```

ACKs for top commit:
  theuni:
    utACK 4289dd02cc
  hebasto:
    ACK 4289dd02cc.

Tree-SHA512: f2e1f6525f699e0d069c70f5e7f1a7e8f8758dcdaff778d49e671bc106a9592f9a7b25c4dbeeaf92b654646fd3b902ad45c8547fd1b28e3287933e8c1497333d
2024-06-26 10:27:44 +01:00
brunoerg
e38eadb2c2 test: change comments to self.log.info for test_addnode_getaddednodeinfo 2024-06-26 06:22:05 -03:00
brunoerg
c838e3b610 test: add coverage for node field of getaddednodeinfo RPC 2024-06-26 06:16:17 -03:00
Roman Zeyde
1556d21599
rest: don't copy data when sending binary response
Also, change `HTTPRequest::WriteReply` to accept `std::span`.
2024-06-26 06:47:30 +03:00
Sjors Provoost
576828e732
ci: test-each-commit merge base optional
The ci "test-each-commit" job fetches the PR branch being tested with a depth of (# of commits in PR + 2), and then tries to run tests on commits after the most recent merge commit.

When a PR is opened against a bitcoin core branch, a merge commit is always guaranteed to exist within the fetch depth, because bitcoin core branches always point at merge commits.

However, in fork repositories, pull requests can be opened based on other branches that don't contain recent merge commits, and this will currently cause git rev-list to fail with fatal: bad revision '^^@'.

Work around this problem by not requiring a recent merge commit, and just testing on all fetched commits if a merge commit can't be found.

Co-authored-by: Ryan Ofsky <ryan@ofsky.org>
2024-06-25 20:03:44 +02:00
Sjors Provoost
e9bfbb5414
ci: forks can opt-out of CI branch push (Cirrus only) 2024-06-25 20:03:44 +02:00
Ben Westgate
3ab2520190 contrib: Fixup verify-binaries OS platform parsing
Parse platform strings with "-" or '.' correctly such as "linux-gnu" or
"x86_64-linux-gnu.tar.gz" to download the matching files or file. String
partition() is used to tolerate more dashes. Update `VERSION_EXAMPLE`
with a new string parsed correctly now. Fix "-aarch64" interpreted as a
release candidate due to sub-string "rc", causing all downloads to fail.
Now "rc" must immediately follow first "-" to indicate an [-rc] string.
Local variables `version_rc`, `version_os` renamed to `rc`, `platform`.
If "-rcN" is specified, `platform` is reassigned to remove the '-rcN'.

Changes are useful to only download one bitcoin core binary on slow
connections. Making `verify.py pub` more intuitive, robust, and
versatile. Closes #30145

When user types a platform string not found in any filename lets help
and say the platform closest to what they typed in a `f"No files
matched the platform specified. Did you mean: {closest_match}"` log.
Improves UX when unaware how we name our files.
Uses the difflib Python built-in which was already imported elsewhere.

Update test.py to test single file verification
verify-binaries/verify.py can accept an entire filename filter for its
"-platform" parameter now so let us test that it succeeds and downloads
and verifies only one file. `verify.py pub 22.0-x86_64-linux-gnu.tar.gz`
should get and verify only the requested binary. It is placed before the
existing <version> wide verification as it is a faster test and possibly
easier to break.

Update doc with examples now possible after bugfix
Add example to show release candidates now work with "-platform" strings
containing "-" and string provided can be from the middle of filename:
`./contrib/verify-binaries/verify.py --json pub 23.0-rc5-linux-gnu`
Change example 5 to not match example 3.
New examples to show platform can now be provided specifically enough to
download only a single binary down to its file extension:
`./contrib/verify-binaries/verify.py pub 25.2-x86_64-linux`
`./contrib/verify-binaries/verify.py pub 24.1-rc1-darwin`
`./contrib/verify-binaries/verify.py pub 27.0-win64-setup.exe`
This is the most common use if not verifying all files so users see it
as the first example for "only download the binaries for a certain
architecture and/or platform". Downloading one file is intuitively what
most will think this meant and this change delivers on that expectation.

Co-authored-by: stickies-v
2024-06-25 11:32:56 -05:00
fanquake
f170fe04ca
depends: update doc in Qt pwd patch
Now that upstream has gotten around to fixing this. We don't need any
more of the patch, and it likely wont apply to our version of Qt in any
case. See:
3388de698b.
2024-06-25 16:58:00 +01:00
Cory Fields
f59e9057e2
depends: switch libevent to CMake 2024-06-25 16:05:40 +01:00
fanquake
cc58e958f3
Update secp256k1 subtree to latest master 2024-06-25 15:01:00 +01:00
fanquake
1408944d2e Squashed 'src/secp256k1/' changes from 06bff6dec8..4af241b320
4af241b320 Merge bitcoin-core/secp256k1#1535: build: Replace hardcoded "auto" value with default one
f473c959f0 Merge bitcoin-core/secp256k1#1543: cmake: Do not modify build types when integrating by downstream project
d403eea484 Merge bitcoin-core/secp256k1#1546: cmake: Rename `SECP256K1_LATE_CFLAGS` and switch to Bitcoin Core's approach
d7ae25ce6f Merge bitcoin-core/secp256k1#1550: fix: typos in secp256k1.c
0e2fadb20c fix: typos in secp256k1.c
69b2192ad4 Merge bitcoin-core/secp256k1#1545: cmake: Do not set `CTEST_TEST_TARGET_ALIAS`
5dd637f3cf Merge bitcoin-core/secp256k1#1548: README: mention ellswift module
7454a53736 README: mention ellswift module
4706be2cd0 cmake: Reimplement `SECP256K1_APPEND_CFLAGS` using Bitcoin Core approach
c2764dbb99 cmake: Rename `SECP256K1_LATE_CFLAGS` to `SECP256K1_APPEND_CFLAGS`
f87a3589f4 cmake: Do not set `CTEST_TEST_TARGET_ALIAS`
158f9e5eae cmake: Do not modify build types when integrating by downstream project
35c0fdc86b Merge bitcoin-core/secp256k1#1529: cmake: Fix cache issue when integrating by downstream project
4392f0f717 Merge bitcoin-core/secp256k1#1533: tests: refactor: tidy up util functions (#1491)
bedffd53d8 Merge bitcoin-core/secp256k1#1488: ci: Add native macOS arm64 job
4b8d5eeacf Merge bitcoin-core/secp256k1#1532: cmake: Disable eager MSan in ctime_tests
f55703ba49 autotools: Delete unneeded compiler test
396e885886 autotools: Align MSan checking code with CMake's implementation
abde59f52d cmake: Report more compiler details in summary
7abf979a43 cmake: Disable `ctime_tests` if build with `-fsanitize=memory`
4d9645bee0 cmake: Remove "AUTO" value of `SECP256K1_ECMULT_GEN_KB` option
a06805ee74 cmake: Remove "AUTO" value of `SECP256K1_ECMULT_WINDOW_SIZE` option
1791f6fce4 Merge bitcoin-core/secp256k1#1517: autotools: Disable eager MSan in ctime_tests
26b94ee92a autotools: Remove "auto" value of `--with-ecmult-gen-kb` option
122dbaeb37 autotools: Remove "auto" value of `--with-ecmult-window` option
e73f6f8fd9 tests: refactor: drop `secp256k1_` prefix from testrand.h functions
0ee7453a99 tests: refactor: add `testutil_` prefix to testutil.h functions
0c6bc76dcd tests: refactor: move `random_` helpers from tests.c to testutil.h
0fef8479be tests: refactor: rename `random_field_element_magnitude` -> `random_fe_magnitude`
59db007f0f tests: refactor: rename `random_group_element_...` -> `random_ge_...`
ebfb82ee2f ci: Add job with -fsanitize-memory-param-retval
e1bef0961c configure: Move "experimental" warning to bottom
55e5d975db autotools: Disable eager MSan in ctime_tests
ec4c002faa cmake: Simplify `PROJECT_IS_TOP_LEVEL` emulation
cae9a7ad14 cmake: Do not set emulated PROJECT_IS_TOP_LEVEL as cache variable
218f0cc93b ci: Add native macOS arm64 job

git-subtree-dir: src/secp256k1
git-subtree-split: 4af241b32099067464e015fa66daac5096206dea
2024-06-25 15:01:00 +01:00
Ryan Ofsky
323b0acfcb
Merge bitcoin/bitcoin#30200: Introduce Mining interface
a9716c53f0 rpc: call IsInitialBlockDownload via miner interface (Sjors Provoost)
dda0b0834f rpc: minize getTipHash() calls in gbt (Sjors Provoost)
7b4d3249ce rpc: call processNewBlock via miner interface (Sjors Provoost)
9e228351e7 rpc: getTransactionsUpdated via miner interface (Sjors Provoost)
64ebb0f971 Always pass options to BlockAssembler constructor (Sjors Provoost)
4bf2e361da rpc: call CreateNewBlock via miner interface (Sjors Provoost)
404b01c436 rpc: getblocktemplate getTipHash() via Miner interface (Sjors Provoost)
d8a3496b5a rpc: call TestBlockValidity via miner interface (Sjors Provoost)
8ecb681678 Introduce Mining interface (Sjors Provoost)

Pull request description:

  Introduce a `Mining` interface for the `getblocktemplate`, `generateblock` and other mining RPCs to use now, and for Stratum v2 to use later.

  Suggested here: https://github.com/bitcoin/bitcoin/pull/29346#issuecomment-2108528652

  The selection of methods added to the interface is mostly based on what the Template Provider in #29432 uses. It could be expanded further so that `rpc/mining.cpp` no longer needs `EnsureMemPool` and `EnsureChainman`.

  This PR should be a pure refactor.

ACKs for top commit:
  tdb3:
    re ACK a9716c53f0
  itornaza:
    Code review and std-tests ACK a9716c53f0
  ryanofsky:
    Code review ACK a9716c53f0 with one minor suggestion in case you update. Only changes since last review were other small changes to the interface.

Tree-SHA512: cf97f87d6e9ed89da3835a0730da3b24a7b14c8605ea221149103a5915e79598cf082a95f2bc88e33f1c450e3d4aad88aed1163a29195acca88bcace055af724
2024-06-24 19:29:48 -04:00
merge-script
a57da5e014
Merge bitcoin/bitcoin#30308: QA: Expect PACKAGE_NAME rather than constant "Bitcoin Core"
197b5404b0 QA: Expect PACKAGE_NAME rather than constant "Bitcoin Core" (Luke Dashjr)

Pull request description:

  Followup to #29144

ACKs for top commit:
  kevkevinpal:
    ACK [197b540](197b5404b0)
  tdb3:
    ACK 197b5404b0

Tree-SHA512: 6a2c7f7da56effa7e3eba1d103b1b4442d74a21f2ba588564cddd6d61a46c3721bf0942d4ac947ecbbbfe476501ab7b03a8414d7d0840ce9106b056811583010
2024-06-24 15:17:27 +01:00
merge-script
aef5ac7f2c
Merge bitcoin/bitcoin#29876: build: add -Wundef
e3dc64f499 build: add -Wundef (fanquake)
82b43955f7 refactor: use #ifdef HAVE_SOCKADDR_UN (fanquake)
40cd7585a0 randomenv: use ifdef over if (fanquake)
7839503b30 zmq: use #ifdef ENABLE_ZMQ (fanquake)
79e197b175 build: Suppress warnings from boost and capnproto in multiprocess code (Ryan Ofsky)

Pull request description:

  Turn on `-Wundef`.

  [> Warn if an undefined identifier is evaluated in an #if directive. Such identifiers are replaced with zero.](https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wundef).

  Note that this is still beneficial with CMake, and may even be nice to have enabled prior, to catch any change in behaviour.

  If we end up with this enabled, it should probably be enough to fix #16419.

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

Tree-SHA512: 73436ead07f3a09ba0d30f7105df50d9b2ec8452f11e866bc1c7ebc10c005772ee77fedaa125f444175663c04dfc472f98c2699c63711da356089b66a8cc3e0a
2024-06-24 15:15:34 +01:00
Hennadii Stepanov
c0b5ea5901
build: Drop redundant sys/sysctl.h header check
The `AC_CHECK_HEADERS` macro defines `HAVE_SYS_SYSCTL_H` if the
`sys/sysctl.h` header is found. However, in the source code, this header
is guarded by `HAVE_SYSCTL` and `HAVE_SYSCTL_ARND` macros, which have
their own checks. Since `HAVE_SYS_SYSCTL_H` is not used, we can skip the
`AC_CHECK_HEADERS(... sys/sysctl.h ...)` check.
2024-06-24 14:28:23 +01:00
merge-script
cf44adfd9f
Merge bitcoin/bitcoin#30310: ci: add option for running tests without volume
da205dda14 ci: increase available ccache size to 300MB (Max Edwards)
4ecbbd9b7f ci: add option for running tests without volume (Max Edwards)

Pull request description:

  Fixes: https://github.com/bitcoin/bitcoin/pull/30193#discussion_r1645950272

  Cache wasn't being saved when run on GHA because the default behaviour of the CI script was to store cache items in a docker volume. This works on Cirrus CI as the volumes are shared but it does not work on Github Actions in which each run is ephemeral.

  Kept the default behaviour the same so hopefully this continues to work for the Cirrus CI jobs.

ACKs for top commit:
  maflcko:
    utACK da205dda14
  hebasto:
    ACK da205dda14.

Tree-SHA512: 3b35482c0628adb60574a1462181ecfcb06cb237ed48beb6fe9aa51110be82f863dc9147e7f8d82960450aa6ecc3a24a70e3c8283fd24cdad075dbfb8fc93095
2024-06-24 14:12:34 +01:00
Fabian Jahr
8789dc8f31
doc: Add note to getblockfrompeer on missing undo data 2024-06-23 00:15:28 +02:00
Fabian Jahr
4a1975008b
rpc: Make pruneheight also reflect undo data presence 2024-06-23 00:15:24 +02:00
furszy
72b226882f
wallet: notify when preset + automatic inputs exceed max weight
This also avoids signing all inputs prior to erroring out.
2024-06-21 18:13:22 -03:00
Max Edwards
da205dda14 ci: increase available ccache size to 300MB 2024-06-21 16:33:01 +01:00
stratospher
c9dacd958d test: Check that non empty version packet is ignored and no disconnection happens
This test type is represented using SEND_NON_EMPTY_VERSION_PACKET.
2024-06-21 19:41:00 +05:30
stratospher
997cc00b95 test: Check that disconnection happens when AAD isn't filled
This test type is represented using SEND_NO_AAD. If AAD of the first encrypted packet
sent after the garbage terminator (optional decoy packet/version packet) hasn't been
filled, disconnection happens.
2024-06-21 19:40:58 +05:30
stratospher
b5e6238fdb test: Check that disconnection happens when garbage sent/received are different
This test type is represented using WRONG_GARBAGE.
Here, garbage bytes sent to TestNode are assumed to be tampered with and
do not correspond to the garbage bytes which P2PInterface calculated and
uses.
2024-06-21 19:39:52 +05:30
stratospher
ad1482d5a2 test: Check that disconnection happens when wrong garbage terminator is sent
This test type is represented using WRONG_GARBAGE_TERMINATOR.
since the wrong garbage terminator is sent to TestNode, TestNode
will interpret all of the gabage bytes, wrong garbage terminator,
decoy messages and version packet it receives as garbage bytes.

If the length of all these is more than 4095 + 16, it will result
in a missing garbage terminator error. otherwise, it will result
in a V2 handshake timeout error.

Send only MAX_GARBAGE_LEN//2 bytes of garbage data to TestNode
so that the total length received by the TestNode is at max
= (MAX_GARBAGE_LEN//2) + 16 + 10*120 + 20 = 3283 bytes
(which is less than 4095 + 16 bytes) and we get a consistent
V2 handshake timeout error message.

If we do not limit the garbage length sent, we will intermittently
get both missing garbage terminator error and V2 handshake
timeout error based on the garbage length and decoy packets length
which are chosen at random.
2024-06-21 19:38:51 +05:30
stratospher
e351576862 test: Check that disconnection happens when >4095 garbage bytes is sent
This test type is represented using EXCESS_GARBAGE.
2024-06-21 19:37:13 +05:30
Fabian Jahr
96b4facc91
refactor, blockstorage: Generalize GetFirstStoredBlock
GetFirstStoredBlock is generalized to check for any data status with a
status mask that needs to be passed as a parameter. To reflect this the
function is also renamed to GetFirstBlock.

Co-authored-by: stickies-v <stickies-v@protonmail.com>
2024-06-21 15:00:16 +02:00
merge-script
538363738e
Merge bitcoin/bitcoin#30314: doc: clarify Cirrus self-hosted workers setup
c67f215ea5 ci: clarify Cirrus self-hosted workers setup (Sjors Provoost)

Pull request description:

  Taken from #29274 (except for two paragraphs that require the other commits in that PR).

ACKs for top commit:
  maflcko:
    ACK c67f215ea5
  tdb3:
    ACK c67f215ea5

Tree-SHA512: 321cc327bfbf0b8e55eb84cb259cf55a66d480c99abe6824248f8b5fdb9a31a079f7ce2c5a6c27afa809aa343d1efb0744a19dd379c17162b21fdf24b6b8836b
2024-06-21 13:54:53 +01:00
merge-script
a19563ac86
Merge bitcoin/bitcoin#30316: refactor: remove extraneous lock annotations from function definitions
5729dbbb74 refactor: remove extraneous lock annotations from function definitions (Cory Fields)

Pull request description:

  These annotations belong in the declarations rather than the definitions. While harmless now, future versions of clang may warn about these.

  Discovered these using the upstream WIP: https://github.com/llvm/llvm-project/pull/67520

ACKs for top commit:
  instagibbs:
    ACK 5729dbbb74
  maflcko:
    ACK 5729dbbb74 🦋

Tree-SHA512: c82c6b269dd353b140cbb36b5519ab2637e54034f159d6ad3eb78c6f4019aa053a5973c626395f0ed3366b9f4117ecc4fe7926b83e9714b1e21c97d5e4bed8d7
2024-06-21 11:20:46 +01:00
fanquake
e3dc64f499
build: add -Wundef
"Warn if an undefined identifier is evaluated in an #if directive. Such
identifiers are replaced with zero."
2024-06-21 09:43:48 +01:00
fanquake
82b43955f7
refactor: use #ifdef HAVE_SOCKADDR_UN
```bash
init.cpp:526:5: error: "HAVE_SOCKADDR_UN" is not defined, evaluates to 0 [-Werror=undef]
  526 | #if HAVE_SOCKADDR_UN
      |     ^~~~~~~~~~~~~~~~
init.cpp:541:5: error: "HAVE_SOCKADDR_UN" is not defined, evaluates to 0 [-Werror=undef]
  541 | #if HAVE_SOCKADDR_UN
      |     ^~~~~~~~~~~~~~~~
init.cpp:1318:5: error: "HAVE_SOCKADDR_UN" is not defined, evaluates to 0 [-Werror=undef]
 1318 | #if HAVE_SOCKADDR_UN
```
```
netbase.cpp:26:5: error: "HAVE_SOCKADDR_UN" is not defined, evaluates to 0 [-Werror=undef]
   26 | #if HAVE_SOCKADDR_UN
      |     ^~~~~~~~~~~~~~~~
netbase.cpp:221:5: error: "HAVE_SOCKADDR_UN" is not defined, evaluates to 0 [-Werror=undef]
  221 | #if HAVE_SOCKADDR_UN
      |     ^~~~~~~~~~~~~~~~
netbase.cpp:496:5: error: "HAVE_SOCKADDR_UN" is not defined, evaluates to 0 [-Werror=undef]
  496 | #if HAVE_SOCKADDR_UN
      |     ^~~~~~~~~~~~~~~~
netbase.cpp:531:5: error: "HAVE_SOCKADDR_UN" is not defined, evaluates to 0 [-Werror=undef]
  531 | #if HAVE_SOCKADDR_UN
      |     ^~~~~~~~~~~~~~~~
netbase.cpp:639:5: error: "HAVE_SOCKADDR_UN" is not defined, evaluates to 0 [-Werror=undef]
  639 | #if HAVE_SOCKADDR_UN
```
2024-06-21 09:43:46 +01:00
fanquake
40cd7585a0
randomenv: use ifdef over if
randomenv.cpp:48:5: warning: 'HAVE_VM_VM_PARAM_H' is not defined, evaluates to 0 [-Wundef]

randomenv.cpp:51:5: warning: 'HAVE_SYS_RESOURCES_H' is not defined, evaluates to 0 [-Wundef]

randomenv.cpp:424:5: error: 'HAVE_SYSCTL' is not defined, evaluates to 0 [-Werror,-Wundef]
2024-06-21 09:42:32 +01:00