42299 Commits

Author SHA1 Message Date
MarcoFalke
a60281526b test: Refactor fill_mempool to extract send_batch helper
This is needed for the next commit

Github-Pull: #30948
Rebased-From: fa48be6f0233cfbd5c1eab7b832c913912062fa5
2025-09-26 10:22:38 -04:00
glozow
08eeb0d342 [miner] lower default -blockmintxfee to 1sat/kvB
Back when we implemented coin age priority as a miner policy, miners
mempools might admit transactions paying very low fees, but then want to
set a higher fee for block inclusion. However, since coin age priority
was removed in v0.15, the block assembly policy is solely based on fees,
so we do not need to apply minimum feerate rules in multiple places. In
fact, the block assembly policy ignoring transactions that are added to
the mempool is likely undesirable as we waste resources accepting and
storing this transaction.

Instead, rely on mempool policy to enforce a minimum entry feerate to
the mempool (minrelaytxfee). Set the minimum block feerate to the
minimum non-zero amount (1sat/kvB) so it collects everything it finds in
mempool into the block.

Github-Pull: #33106
Rebased-From:  5f2df0ef78be7b24798d0983c9b962740608f1f4
2025-09-26 10:22:38 -04:00
Sebastian Falbesoner
b7ba016707 test: add BulkTransaction helper to unit test transaction utils
The padding method used matches the one used in MiniWallet,
`MiniWallet._bulk_tx`.

Github-Pull: #30784
Rebased-From: ed7d2246661ec1789b7db0f21668270f0681ea4a
2025-09-26 10:22:38 -04:00
glozow
27b775586e [doc] assert that default min relay feerate and incremental are the same
Github-Pull: #33106
Rebased-From: d6213d6aa114aeed6804a585491d741386fd2739
2025-09-26 10:22:38 -04:00
glozow
e3273e03b1 [test] explicitly check default -minrelaytxfee and -incrementalrelayfee
Github-Pull: #33106
Rebased-From:  1fbee5d7b61b83e68e4230c8a97ca308de92c4c3
2025-09-26 10:22:38 -04:00
glozow
cf875f1559 [test] RBF rule 4 for various incrementalrelayfee settings
Github-Pull: #33106
Rebased-From: 72dc18467dbfc16cdbda2dd109b087243b397799
2025-09-26 10:22:38 -04:00
glozow
308778b7b6 [test] check bypass of minrelay for various minrelaytxfee settings
Github-Pull: #33106
Rebased-From: 85f498893f54ea7d84f2bdf12aa35d198edf8a72
2025-09-26 10:22:38 -04:00
glozow
e779d59eca [test] check miner doesn't select 0fee transactions
Github-Pull: #33106
Rebased-From: e5f896bb1f052fb8c7811c6024cb49143b427512
2025-09-26 10:22:38 -04:00
Ava Chow
a0b5730f85
Merge bitcoin/bitcoin#33415: [28.x] More backports
a5e4fec4949f61ebbd7d6696f39da26df04515f9 doc: update release notes for 28.x (fanquake)
4598dfcfdebacaf3e080925f99d147270af23b2b doc: Remove wrong and redundant doxygen tag (MarcoFalke)
9e56d8889ae8a30c3a672ba60d1a7c8c861fb6ba net: Do not apply whitelist permission to onion inbounds (Martin Zumsande)
a381de750d74b3e43d3ad0acfe848e25b0fec0ff Fix benchmark CSV output (Hennadii Stepanov)

Pull request description:

  Further backports for `28.x`:
  * #33236
  * #33340
  * #33395

ACKs for top commit:
  achow101:
    ACK a5e4fec4949f61ebbd7d6696f39da26df04515f9
  willcl-ark:
    ACK a5e4fec4949f61ebbd7d6696f39da26df04515f9

Tree-SHA512: eb00b395dea8a3e50e19683e824abd946d0e0ef5188cca3fddbc35a8e2ecc203cfc7a8f480e0fbf09cc48f660b1da324da4d777ec47346c52d230c5b93f536c3
2025-09-25 13:41:04 -07:00
fanquake
a5e4fec494
doc: update release notes for 28.x 2025-09-24 15:26:38 -04:00
MarcoFalke
4598dfcfde
doc: Remove wrong and redundant doxygen tag
Remove it in feerate.

Fix it in the other places.

Github-Pull: #33236
Rebased-From: 966666de9a6211b8748f43d682490c924e132e58
2025-09-24 14:37:05 -04:00
Martin Zumsande
9e56d8889a
net: Do not apply whitelist permission to onion inbounds
Tor inbound connections do not reveal the peer's actual network address.
Therefore do not apply whitelist permissions to them.

Co-authored-by: Vasil Dimov <vd@FreeBSD.org>

Github-Pull: #33395
Rebased-From: f563ce90818d486d2a199439d2f6ba39cd106352
2025-09-24 14:37:05 -04:00
Hennadii Stepanov
a381de750d
Fix benchmark CSV output
The `SHA256AutoDetect` return output is used, among other use cases, to
name benchmarks. Using a comma breaks the CSV output.

This change replaces the comma with a semicolon, which fixes the issue.

Github-Pull: #33340
Rebased-From: 790b440197bde322432a5bab161f1869b667e681
2025-09-24 14:37:04 -04:00
merge-script
f9043af2ee
Merge bitcoin/bitcoin#33406: Backport Cirrus runners to 28.x
ea4e0aa8c4b0e4eed92b81e6e8b84a3b92232939 ci: Checkout latest merged pulls (MarcoFalke)
48761444e24350c2b74396aa6643fa58cdc05493 ci: reduce runner sizes on various jobs (will)
12eada012b56e6d4018b878c5663f57aeae91d89 ci: remove un-needed lint_run*.sh files (willcl-ark)
189bb3992228240468195abaa1040f2528707f89 ci: fix annoying docker warning (will)
e4493b15dfa2267b9d83b67e2e205cc40a742fef ci: add ccache hit-rate warning when < 75% (will)
a0b6e2ae6b5c6fd7ca2be164f020cf6385c7f820 doc: Detail configuration of hosted CI runners (will)
1bfe9f56c3213e7c9c38fa065e04fce841779cdd ci: dynamically match makejobs with cores (will)
abaa128095e68178c0a1fb213a973f966fbf16cb ci: remove .cirrus.yml (will)
8ab684eeb72590090393be5ebbbb79a421603577 ci: port win64-no_gui job (will)
99411458b4be92bb2107b9a1b73c5530d79fe9d6 ci: port lint (will)
4b3468389be4762aadbd37f97a949ba20a9444ff ci: port msan-depends (will)
cf18a500d7742c65f5c45bd5e4504ce03feceb30 ci: port tsan-depends-gui (will)
49ff9d7e6e1395755e8ecd692b6529d7f02e4b1f ci: port tidy (will)
c2c69cd6ec90670e290e5cc58f02d6bc3443011c ci: port 32-bit-centos-dash-gui (will)
fa259b4e72071a41d0682b87aba7f43b313ce854 ci: port previous-releases-depends-debug (will)
96cd28f1461b461e6cf7823c1d64806ef46a40c1 ci: port fuzzer-address-undefined-integer-nodepends (will)
0fc3fd1eb5b8ee1fb07bffc9ac99a3c14187f387 ci: port i686-multiprocess-DEBUG (will)
f61cb6be58d7798ded7441b0076e21bfe887304c ci: port nowallet-libbitcoinkernel (will)
6237cd537d4ed03fbeda5c9702c87a21f6a32c17 ci: port mac-cross-gui-notests (will)
8c9048f4fccb7e48778f5b5134a9e2e18e9e3ba9 ci: force reinstall of kernel headers in asan (will)
61bb5180d512cb1de993ee8bc6b93fb4481b9730 ci: update asan-lsan-ubsan (will)
bb455c95940e4548f418d53e0083a060df2a7b14 ci: port arm job (will)
5538ce4f320894fbffed9dcaec574f8a01b12b3b ci: add job to determine runner type (will)
82cfddbc9ae710a1dc135315049b1da5c8344109 ci: add Cirrus cache host (will)
30efc95aecb1602cd01547b1f9dde2382358d5ca ci: have base install run in right dir (will)
f6ccd895df85ab6642ef2c5dcc336acc5990f4fd ci: use buildx in ci (will)
f8cb31d0647b824190281d1e54c75972272bd025 ci: add configure-docker action (will)
270191c3c0e51cdd75d5b6eaaeeaae0b6e0ed3b9 ci: add REPO_USE_CIRRUS_RUNNERS (will)
8d6d70f5555cd9ac75b499ff031ab8b1410d59f3 ci: add caching actions (will)
d8ad667f943b77b42ef28a2f316dc7831c65ccec ci: add configure environment action (will)

Pull request description:

  Backports https://github.com/bitcoin/bitcoin/pull/32989 to the 28.x branch

ACKs for top commit:
  maflcko:
    lgtm ACK ea4e0aa8c4 🥄

Tree-SHA512: aeb7f3f92f1e18d787a199258c06cff14a7352e3da1d0b546bb39a46ec988e65a4c68083c9ee38fe8a6a60e4ee5a2199c6d255973bff91f0f4aac34fea5fdb28
2025-09-24 13:46:09 -04:00
MarcoFalke
ea4e0aa8c4
ci: Checkout latest merged pulls
Github-Pull: #33303
Rebased-From: fa8f081af31
2025-09-19 08:41:22 +01:00
will
48761444e2
ci: reduce runner sizes on various jobs
Github Pull: #33319
Rebased-From: 5eeb2facbbbbf68a2c30ef9e6747e39c85d7b116

These jobs can use reduced runner size to avoid wasting CPU, as much of
the long-running part of the job is single-threaded.

Suggested in: https://github.com/bitcoin/bitcoin/pull/32989#discussion_r2321775620

Co-authored-by: MarcoFalke <*~=`'#}+{/-|&$^_@721217.xyz>
2025-09-19 08:41:17 +01:00
willcl-ark
12eada012b
ci: remove un-needed lint_run*.sh files
Github-Pull: #32989
Rebased-From: 3c5da69a232

ci/lint_run_all.sh: Only used in .cirrus.yml. Refer to test/lint/README.md on how to run locally.
2025-09-19 08:41:13 +01:00
will
189bb39922
ci: fix annoying docker warning
Github-Pull: #32989
Rebased-From: 2aa288efdda

Docker currently warns that we are missing a default value.

Set this to scratch which will error if an appropriate image tag is not
passed in to silence the warning.
2025-09-19 08:41:09 +01:00
will
e4493b15df
ci: add ccache hit-rate warning when < 75%
Github-Pull: #32989
Rebased-From: dd1c5903e8d

Print the ccache hit-rate for the job using a GitHub annotation if it
was below 75%.
2025-09-19 08:41:06 +01:00
will
a0b6e2ae6b
doc: Detail configuration of hosted CI runners
Github-Pull: #32989
Rebased-From: f4272844833dd660c2b9db587856baa408889302
2025-09-19 08:41:02 +01:00
will
1bfe9f56c3
ci: dynamically match makejobs with cores
Github-Pull: #32989
Rebased-From: 3f339e99e00

Previously jobs were running on a large multi-core server where 10 jobs
as default made sense (or may even have been on the low side).

Using hosted runners with fixed (and lower) numbers of vCPUs we should
adapt compilation to match the number of cpus we have dynamically.

This is cross-platform compatible with macos and linux only.
2025-09-19 08:40:58 +01:00
will
abaa128095
ci: remove .cirrus.yml
Github-Pull: #32989
Rebased-From: 4393ffdd837

Removed as unused.
2025-09-19 08:40:55 +01:00
will
8ab684eeb7
ci: port win64-no_gui job 2025-09-19 08:40:51 +01:00
will
99411458b4
ci: port lint
Github-Pull: #32989
Rebased-From: bc41848d00f

Co-authored-by: Max Edwards <youwontforgetthis@gmail.com>
2025-09-19 08:40:48 +01:00
will
4b3468389b
ci: port msan-depends
Github-Pull: #32989
Rebased-From: d290a8e6eab

Co-authored-by: Max Edwards <youwontforgetthis@gmail.com>
2025-09-19 08:40:44 +01:00
will
cf18a500d7
ci: port tsan-depends-gui
Github-Pull: #32989
Rebased-From: 9bbae61e3b4

Co-authored-by: Max Edwards <youwontforgetthis@gmail.com>
2025-09-19 08:40:41 +01:00
will
49ff9d7e6e
ci: port tidy
Github-Pull: #32989
Rebased-From: bf7d5364527

Co-authored-by: Max Edwards <youwontforgetthis@gmail.com>
2025-09-19 08:40:37 +01:00
will
c2c69cd6ec
ci: port 32-bit-centos-dash-gui
Github-Pull: #32989
Rebased-From: 549074bc643

Co-authored-by: Max Edwards <youwontforgetthis@gmail.com>
2025-09-19 08:40:34 +01:00
will
fa259b4e72
ci: port previous-releases-depends-debug
Github-Pull: #32989
Rebased-From: 58e38c3a042

Co-authored-by: Max Edwards <youwontforgetthis@gmail.com>
2025-09-19 08:40:30 +01:00
will
96cd28f146
ci: port fuzzer-address-undefined-integer-nodepends
Github-Pull: #32989
Rebased-From: 341196d75c3

Co-authored-by: Max Edwards <youwontforgetthis@gmail.com>
2025-09-19 08:40:27 +01:00
will
0fc3fd1eb5
ci: port i686-multiprocess-DEBUG
Github-Pull: #32989
Rebased-From: f2068f26c12

Co-authored-by: Max Edwards <youwontforgetthis@gmail.com>
2025-09-19 08:40:23 +01:00
will
f61cb6be58
ci: port nowallet-libbitcoinkernel
Github-Pull: #32989
Rebased-From: 2a00b12d73b

Co-authored-by: Max Edwards <youwontforgetthis@gmail.com>
2025-09-19 08:40:20 +01:00
will
6237cd537d
ci: port mac-cross-gui-notests
Github-Pull: #32989
Rebased-From: 9c2514de534

Co-authored-by: Max Edwards <youwontforgetthis@gmail.com>
2025-09-19 08:40:13 +01:00
will
8c9048f4fc
ci: force reinstall of kernel headers in asan
Github-Pull: #32989
Rebased-From: 2c990d84a3d

When using hosted runners in combination with cached docker images,
there is the possibility that the host runner image is updated,
rendering the linux-headers package (stored in the cached docker image)
incompatible.

Fix this by doing a re-install of the headers package in
03_test_script.sh.

If the underlying runner kernel has not changed thie has no effect, but
prevents the job from failing if it has.
2025-09-19 08:40:10 +01:00
will
61bb5180d5
ci: update asan-lsan-ubsan
Github-Pull: #32989
Rebased-From: 884251441bb

Co-authored-by: Max Edwards <youwontforgetthis@gmail.com>
2025-09-19 08:40:06 +01:00
will
bb455c9594
ci: port arm job
Github-Pull: #32989
Rebased-From: f253031cb8e

Co-authored-by: Max Edwards <youwontforgetthis@gmail.com>
2025-09-19 08:40:03 +01:00
will
5538ce4f32
ci: add job to determine runner type
Github-Pull: #32989
Rebased-From: cc1735d7771

To remove multiple occurances of the respository name, against which we
compare `${{ github.repository }}` to check if we should use Cirrus
Runners, introduce a helper job which can check a single environment
variable and output this as an input to subsequent jobs.

Forks can maintain a trivial patch of their repo name against the
`REPO_USE_CIRRUS_RUNNERS` variable in ci.yml if they have Cirrus Runners
of their own, which will then enable cache actions and docker build
cache to use Cirrus Cache.

It's not possible to use `${{ env.USE_CIRRUS_RUNNERS }}` in the
`runs-on:` directive as the context is not supported by GitHub.

If it was, this job would no longer be necessary.
2025-09-19 08:39:59 +01:00
will
82cfddbc9a
ci: add Cirrus cache host
Github-Pull: #32989
Rebased-From: 020069e6b71

Whilst the action cirruslabs/actions/cache will automatically set this
host, the docker `gha` build cache backend will not be aware of it.

Set the value here, which will later be used in the docker build args to
enable docker build cache on the cirrus cache.
2025-09-19 08:39:56 +01:00
will
30efc95aec
ci: have base install run in right dir
Github-Pull: #32989
Rebased-From: 9c2b96e0d03

This sets the build dir at build time so that Apple SDK gets installed
in the correct/expected location for the runtime to find it.

Co-authored-by: Max Edwards <youwontforgetthis@gmail.com>
2025-09-19 08:39:52 +01:00
will
f6ccd895df
ci: use buildx in ci
Github-Pull: #32989
Rebased-From: 94a09325475

This rebase also includes part of e87429a2d0f23eb59526d335844fa5ff5b50b21f
adding `$DOCKER_BUILD_CACHE_ARG \` to the `docker build` command.

Using buildx is required to properly load the correct driver, for use
with registry caching. Neither build, nor BUILDKIT=1 currently do this
properly.

Use of `docker buildx build` is compatible with podman.
2025-09-19 08:39:49 +01:00
will
f8cb31d064
ci: add configure-docker action
Github-Pull: #32989
Rebased-From: fdf64e55324

Another action to reduce boilerplate in the main ci.yml file.

This action will set up a docker builder compatible with caching build
layers to a container registry using the `gha` build driver.

It will then configure the docker build cache args.
2025-09-19 08:39:45 +01:00
will
270191c3c0
ci: add REPO_USE_CIRRUS_RUNNERS
Github-Pull: #32989
Rebased-From: 33ba073df7a

If set, Cirrus runners will be used on pushes to, and pull requests
against, this repository.

Forks can set this if they have their own cirrus runners.
2025-09-19 08:39:42 +01:00
will
8d6d70f555
ci: add caching actions
Github-Pull: #32989
Rebased-From: b232b0fa5e9

Add "Restore" and "Save" caching actions.

These actions reduce boilerplate in the main ci.yml configuration file.

These actions are implemented so that caches will be saved on `push`
only.

When a pull request is opened it will cache hit on the caches from the
lastest push, or in the case of depends will hit on any matching depends
hash, falling back to partial matches.

Depends caches are hashed using
`$(git ls-tree HEAD depends "ci/test/$FILE_ENV" | sha256sum | cut -d' ' -f1)`
and this hash is passed in as an input to the actions. This means we
direct cache hit in cases where depends would not be re-built, otherwise
falling back to a partial match.

Previous releases cache is hashed similarly to depends, but using the
test/get_previous_releases.py file.

The cirruslabs cache action will fallback transparently to GitHub's
cache in the case that the job is not being run on a Cirrus Runner,
making these compatible with running on forks (on free GH hardware).
2025-09-19 08:39:38 +01:00
will
d8ad667f94
ci: add configure environment action
Github-Pull: #32989
Rebased-From: b8fcc9fcbcd
2025-09-19 08:39:21 +01:00
merge-script
6e62b70532
Merge bitcoin/bitcoin#33143: [28.x] Backports
9f1b89a1c79fe50fb425b68320851ad3381032c7 doc: update release notes for 28.x (fanquake)
2a46f220cad3f30f6f5348dadbf76b3875fe050a rpc: fix getpeerinfo ping duration unit docs (0xb10c)

Pull request description:

  Backports:
  * #33133

ACKs for top commit:
  willcl-ark:
    ACK 9f1b89a1c79fe50fb425b68320851ad3381032c7

Tree-SHA512: 98bc82c1925a1a5d163677d13351d6cd5f6df4652b0ea2a400a7c574563cdb7accbba19a059b8612991bd392de1f9b20769fa88e13f8f579db0289c27cf92921
2025-08-15 17:14:19 +01:00
fanquake
9f1b89a1c7
doc: update release notes for 28.x 2025-08-06 11:58:00 +01:00
0xb10c
2a46f220ca
rpc: fix getpeerinfo ping duration unit docs
The getpeerinfo docs incorrectly specified the ping durations as
milliseconds. This was incorrectly changed in a3789c700b5a43efd4b366b4241ae840d63f2349
(released in v25; master since Sept. 2022). The correct duration unit
is seconds.

Also, remove the documentation of the getpeerinfo RPC response from the
ping RPC since it's incomplete. Better to just reference the getpeerinfo
RPC and it's documenation for this.

Github-Pull: #33133
Rebased-From: 1252eeb997df2eb12c33d92eb1a5c9d6643a67ff
2025-08-06 11:51:28 +01:00
merge-script
5492e1be3b
Merge bitcoin/bitcoin#33076: [28.x] Backports
4d145f9f20a333cbe22579db525292e956af66c9 doc: update release notes for 28.x (fanquake)
8782e6ce388968a3b9a99edf1a9e9775345865ae guix: warn SOURCE_DATE_EPOCH set in guix-codesign (will)
c09d82f0dddf14b92194c2f18bb8e8527fd84f52 doc/zmq: fix unix socket path example (Roman Zeyde)
41fa1e0ee5693f9d666dc4bf2f56ae639613a048 test: Log KeyboardInterrupt as exception (MarcoFalke)
a828e64b7d73a956dff422ee92d9f1db3935fad6 test: Do not pass tests on unhandled exceptions (MarcoFalke)

Pull request description:

  Backports:
  * #33001
  * #33070
  * #33073

ACKs for top commit:
  willcl-ark:
    ACK 4d145f9f20a333cbe22579db525292e956af66c9
  marcofleon:
    lgtm ACK 4d145f9f20a333cbe22579db525292e956af66c9

Tree-SHA512: de269749423b2e112881cfc0126256d46d646ea7ab9f7f5766361d10866ca4d132605deb8a22ba00714a1f3732a792ae69deb062132276bd21d5d616c1130b2b
2025-07-30 15:31:12 +01:00
fanquake
4d145f9f20
doc: update release notes for 28.x 2025-07-29 16:52:54 +01:00
will
8782e6ce38
guix: warn SOURCE_DATE_EPOCH set in guix-codesign
Currently there is a warning for this in guix-build, but we also need
one in guix-codesign, otherwise the codesigned hashes are not
reproducible.

Move common functionality into prelude and call the function in both
guix actions.

Github-Pull: #33073
Rebased-From: 1bed0f734b3f2dd876193b5cad303bfab1d250d5
2025-07-29 16:51:57 +01:00