Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
135 commits
Select commit Hold shift + click to select a range
2a5b96e
build: bump to 31.0rc1
achow101 Mar 6, 2026
62716a8
doc: Generate manpages for 31.0rc1
achow101 Mar 6, 2026
88e21e5
examples: Generate example bitcoin.conf for 31.0rc1
achow101 Mar 6, 2026
c5ae5f0
doc: Point release notes to 31.0 wiki draft
achow101 Mar 6, 2026
d373776
Merge bitcoin/bitcoin#34795: [31.x] Bump to 31.0rc1
achow101 Mar 12, 2026
9852bbd
depends: disable Qt sbom generation
fanquake Mar 6, 2026
a3ffff0
depends: delete Boost extra files
fanquake Mar 6, 2026
f7f7e68
ci: Bump GHA actions versions
Mar 11, 2026
a74dfe3
lint: Temporarily revert to vulture==2.14
Mar 12, 2026
207087b
ci: bump cirruslabs actions versions
willcl-ark Mar 12, 2026
a3c1eda
test: fix addr relay test silent pass and wrong peerinfo index
stratospher Mar 5, 2026
5642a2b
test: protect outbound connection from eviction in getaddr_test
stratospher Mar 6, 2026
a28d78c
test: use static methods and clarify comment in addr_relay
stratospher Mar 6, 2026
2724c39
guix: Make guix-clean less destructive
hodlinator Mar 9, 2026
d20ba02
build: Set AUTHOR_WARNING on warnings
Aug 6, 2025
bb9fcff
macdeploy: subprocess out to zip rather than shutil.make_archive
fanquake Mar 10, 2026
ab37d3d
macdeploy: use plugins dir to find plugins
fanquake Mar 11, 2026
e3383ac
ci: check macos bundle structure and codesigning
fanquake Mar 10, 2026
a69f8c3
ci: Use arch-appropriate binaries in lint install
willcl-ark Mar 16, 2026
c7127f2
test: Use asyncio.SelectorEventLoop() over deprecated asyncio.Windows…
Mar 13, 2026
72d6c88
test: Move event loop creation to network thread
Mar 13, 2026
8379f00
test: Fix intermittent issue in feature_assumeutxo.py
Mar 18, 2026
0689512
test: [refactor] Use verbosity=0 named arg
Mar 18, 2026
ca781e4
cmake: Migrate away from deprecated SQLite3 target
purpleKarrot Mar 18, 2026
e930c6d
rpc: fix race condition in gettxoutsetinfo
w0xlt Jan 27, 2026
335a098
kernel: acquire coinstats cursor and block info atomically
w0xlt Feb 3, 2026
d9a5791
ci: Avoid intermittent Windows generate download failures
Mar 19, 2026
7118559
tests: applied PYTHON_GIL to the env for every test
kevkevinpal Mar 19, 2026
e53c20d
gui: Fix TransactionsView on setCurrentWallet
pablomartin4btc Apr 9, 2024
3b79852
depends: Fix cross-compiling on macOS for Windows
hebasto Mar 20, 2026
051afe9
depends: Remove no longer necessary `dsymutil`
hebasto Mar 18, 2026
6993aa1
test: Scale feature_dbcrash.py timeout with factor
Feb 16, 2026
198bc4d
ci: Clarify why valgrind task has gui disabled
Mar 10, 2026
d171afa
ci: Temporarily use clang in valgrind tasks
Feb 13, 2026
11b6992
wallet: fix amount computed as boolean in coin selection
furszy Mar 21, 2026
87d1691
wallet: feebumper, fix crash when combined bump fee is unavailable
furszy Mar 19, 2026
e3d5716
test: Remove confusing assert_debug_log in wallet_reindex.py
Mar 19, 2026
acd7e3d
test: verify createNewBlock wakes promptly when tip advances
enirox001 Mar 3, 2026
6609473
test: move make_mining_ctx to ipc_util.py
enirox001 Mar 3, 2026
39c8762
test: verify IPC error handling for invalid coinbase
enirox001 Mar 9, 2026
ac13aca
test: scale IPC mining wait timeouts by timeout_factor
enirox001 Mar 13, 2026
a30e505
build: bump version to v31.0rc2
fanquake Mar 25, 2026
718c31c
doc: update manual pages for v31.0rc2
fanquake Mar 25, 2026
b241f3c
doc: update example bitcoin conf for 31.0rc2
fanquake Mar 25, 2026
f0e2cbc
Merge bitcoin/bitcoin#34800: [31.x] Backports
achow101 Mar 25, 2026
7375940
Merge bitcoin/bitcoin#34952: Update libmultiprocess subtree in 31.x b…
fanquake Apr 1, 2026
98551a0
fuzz: Remove unused g_setup pointers
Mar 25, 2026
f3b64aa
fuzz: Use CAmount for storing best_waste
achow101 Mar 28, 2026
56cdeab
depends, qt: Fix build on aarch64 macOS 26.4
hebasto Mar 30, 2026
f0e1014
kernel: Remove NONNULL annotation from destroy method
alexanderwiederin Apr 1, 2026
ef10b2e
guix: Clean up module list in manifest
hebasto Mar 30, 2026
e7d520d
Merge bitcoin/bitcoin#34942: [31.x] Backports
fanquake Apr 8, 2026
1bc22a3
Squashed 'src/ipc/libmultiprocess/' changes from 70f632bda8..3edbe8f67c
fanquake Apr 8, 2026
0df3ce8
Update libmultiprocess subtree to latest master
fanquake Apr 8, 2026
afa8ba0
test: remove macOS REDUCE_EXPORTS exception workaround
alfonsoromanz Apr 7, 2026
275843f
build: bump version to v31.0rc3
fanquake Apr 8, 2026
c168bae
doc: update manual pages for v31.0rc3
fanquake Apr 8, 2026
cc14d7a
Merge bitcoin/bitcoin#35028: [31.x] Backports + rc3
fanquake Apr 8, 2026
2937d4b
guix: Restore download and build-system-cmake modules
achow101 Apr 8, 2026
7d56e10
build: bump version to v31.0rc4
achow101 Apr 8, 2026
4a5fdb0
doc: update manpages for v31.0rc4
achow101 Apr 8, 2026
c96d9c2
Merge bitcoin/bitcoin#35034: [31.x] Fix guix build and rc4
fanquake Apr 8, 2026
bd40a32
build: Bump to 31.0
achow101 Apr 9, 2026
6a25f3e
doc: update manpages for v31.0
achow101 Apr 9, 2026
e9f1466
doc: 31.0 release notes
achow101 Apr 13, 2026
6574cb4
Merge bitcoin/bitcoin#35042: [31.x] Finalize 31.0
achow101 Apr 15, 2026
27e5a30
net_processing: don't modify addrman for private broadcast connections
vasild Apr 8, 2026
20480f5
test: Add missing self.options.timeout_factor scale in tool_bitcoin_c…
Apr 15, 2026
e1545b5
test: Add clean shutdown to Socks5Server
optout21 Apr 7, 2026
332d2a2
test: Add is_connected_to helper
Jan 30, 2026
402f347
test: Stricter checks in rpc_setban.py
Mar 27, 2026
bb536df
test: Fix all races after a socket is closed gracefully
Jan 27, 2026
ab19213
test: Remove unused, confusing and brittle connect_nodes.wait_for_con…
Mar 27, 2026
2eafae9
multi_index: fix compilation failure with boost >= 1.91
theuni Apr 28, 2026
0cedd6a
validation: correct lifetime of precomputed tx data
darosior May 5, 2026
1bb9c40
ci: unconfine seccomp for i686 no IPC
l0rinc May 3, 2026
6bb2b07
doc: update release notes for v31.x
fanquake Apr 16, 2026
42800d9
Merge bitcoin/bitcoin#35046: [31.x] Backports
achow101 May 6, 2026
24bfb2c
Merge bitcoin/bitcoin#35210: [31.x] validation: correct lifetime of p…
fanquake May 7, 2026
9d42e86
test: fix send_batch_request to pass callables when using --usecli
polespinasa Apr 2, 2026
56190e5
ci: add --extended when using --usecli
polespinasa Apr 3, 2026
64ba4e2
depends: Unset `SOURCE_DATE_EPOCH` in `gen_id` script
hebasto May 6, 2026
313a225
ci: Move --usecli --extended from i386 task to alpine task
May 7, 2026
5022e9d
test: fix P2SH output in coins cache fuzz
l0rinc May 6, 2026
409b2d8
wallet: check BDB last page LSN
l0rinc May 6, 2026
e379148
doc: mention -DWITH_ZMQ=ON in BSD build guides
junbyjun1238 May 13, 2026
7a97580
fuzz: Fix txorphan timeout by limiting block weight
marcofleon May 14, 2026
0449061
contrib: Fix NameError in signet miner gbt()
torkelrogstad Apr 10, 2026
506051c
doc: update release notes for v31.x
fanquake May 7, 2026
dbaf0f4
Merge bitcoin/bitcoin#35231: [31.x] Backports
fanquake May 19, 2026
1010717
psbt, test: remove address type restrictions in test
rkrux May 13, 2026
671e6c2
wallet: use outpoint when estimating input size
l0rinc May 6, 2026
d61687a
musig: Reject empty pubkey list in GetMuSig2KeyAggCache
nervana21 May 16, 2026
3440027
ci: switch to GitHub cache for all runners
willcl-ark May 21, 2026
78714f6
Disable seek compaction
andrewtoth May 19, 2026
6caf6de
ci: switch runners from cirrus to warpbuild
willcl-ark May 11, 2026
8f13bb1
crypto: disable ASan instrumentation of SSE4 SHA256 for GCC
deadmanoz Mar 13, 2026
1f55b3e
doc: remove reference to cirrus
fanquake May 29, 2026
39f8e07
ci: use ubuntu-latest instead of ubuntu-24.04
fanquake May 29, 2026
25506ed
ci: Add dynamic cache switching to warp cache
willcl-ark Jun 1, 2026
70000a5
ci: use Warp cache for Docker layers
willcl-ark Jun 3, 2026
2c7986b
net: use the proxy if overriden when doing v2->v1 reconnections
vasild May 19, 2026
66377c3
net: ensure no direct private broadcast connections
vasild May 25, 2026
ef20249
test: make reusable SOCKS5 server starting
vasild May 29, 2026
70a8687
test: make reusable starting a standalone P2P listener
vasild May 29, 2026
6c08cb7
test: make reusable filling of a node's addrman
vasild May 29, 2026
13df77d
test: add a regression test for private broadcast v1 retries
vasild May 29, 2026
ccb9912
net: un-default the OpenNetworkConnection()'s proxy_override argument
Crypt-iQ May 29, 2026
1ee11d8
lint: disable leveldb subtree check
fanquake Jun 17, 2026
ca00827
util: Check write failures before renaming settings.json
sh011 May 28, 2026
fef6c8a
coins: test chainstate flush baseline
l0rinc Jun 4, 2026
711065a
validation: randomly compact chainstate
l0rinc Jun 8, 2026
ea3b318
coins: compact chainstate in background
l0rinc Jun 8, 2026
d813722
doc: update release notes for v31.1rc1
fanquake May 20, 2026
1c9d24f
build: bump version to v31.1rc1
fanquake Jun 22, 2026
c058c29
doc: update manual pages for v31.1rc1
fanquake Jun 22, 2026
efde623
Merge bitcoin/bitcoin#35331: [31.x] Backports
sedited Jun 22, 2026
4219fd4
build: bump version to v31.1
fanquake Jul 6, 2026
919d74e
doc: update release notes for v31.1
fanquake Jul 6, 2026
adc5dc5
doc: update manual pages for v31.1
fanquake Jul 6, 2026
9be056a
Merge bitcoin/bitcoin#35666: [31.x] Finalise 31.1
sedited Jul 6, 2026
6774327
Update default data dir and config file name
ecash-dev Aug 6, 2026
f0defcb
Use custom network magic and default ports
ecash-dev Aug 6, 2026
55b708c
Remove core seed nodes. Add eCash seed nodes
ecash-dev Aug 6, 2026
b9df0c5
Add replay protection via magic nLockTime
ecash-dev Jul 19, 2026
e4d61f9
Add difficulty reset at eCash fork height
ecash-dev Aug 6, 2026
121790c
Add OP_DRIVECHAIN and make standard
ecash-dev Aug 6, 2026
7c56d93
Add set of repurpose transactions
ecash-dev Aug 6, 2026
5cc7f27
Indicate eCash in CLIENT_NAME, UA_NAME
ecash-dev Aug 6, 2026
21c26c5
Add bip300301 rule to `getblocktemplate`
ecash-dev Aug 18, 2026
d50abb4
Add docker + binary builds on CI
ecash-dev Aug 6, 2026
c571c50
Update README - add build and datadir info
ecash-dev Aug 6, 2026
6e58233
kernel: add recent assumeutxo snapshot
achow101 Sep 9, 2026
b5e9cd8
validation: enforce the BIP94 timewarp rule on mainnet from the fork …
mblowes Oct 12, 2026
812534e
validation, consensus: correct the timewarp comments (review)
mblowes Oct 12, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ trim_trailing_whitespace = true
[*.{h,cpp,rs,py,sh}]
indent_size = 4

# .cirrus.yml, etc.
# ci.yml, etc.
[*.yml]
indent_size = 2

Expand Down
Original file line number Diff line number Diff line change
@@ -1,43 +1,51 @@
name: 'Restore Caches'
description: 'Restore ccache, depends sources, and built depends caches'
inputs:
provider:
description: 'The cache provider to use'
required: true
runs:
using: 'composite'
steps:
- name: Restore Ccache cache
id: ccache-cache
uses: cirruslabs/cache/restore@v4
uses: ./.github/actions/cache/restore/internal
with:
path: ${{ env.CCACHE_DIR }}
key: ccache-${{ env.CONTAINER_NAME }}-${{ github.run_id }}
restore-keys: |
ccache-${{ env.CONTAINER_NAME }}-
provider: ${{ inputs.provider }}

- name: Restore depends sources cache
id: depends-sources
uses: cirruslabs/cache/restore@v4
uses: ./.github/actions/cache/restore/internal
with:
path: ${{ env.SOURCES_PATH }}
key: depends-sources-${{ env.CONTAINER_NAME }}-${{ env.DEPENDS_HASH }}
restore-keys: |
depends-sources-${{ env.CONTAINER_NAME }}-
provider: ${{ inputs.provider }}

- name: Restore built depends cache
id: depends-built
uses: cirruslabs/cache/restore@v4
uses: ./.github/actions/cache/restore/internal
with:
path: ${{ env.BASE_CACHE }}
key: depends-built-${{ env.CONTAINER_NAME }}-${{ env.DEPENDS_HASH }}
restore-keys: |
depends-built-${{ env.CONTAINER_NAME }}-
provider: ${{ inputs.provider }}

- name: Restore previous releases cache
id: previous-releases
uses: cirruslabs/cache/restore@v4
uses: ./.github/actions/cache/restore/internal
with:
path: ${{ env.PREVIOUS_RELEASES_DIR }}
key: previous-releases-${{ env.CONTAINER_NAME }}-${{ env.PREVIOUS_RELEASES_HASH }}
restore-keys: |
previous-releases-${{ env.CONTAINER_NAME }}-
provider: ${{ inputs.provider }}

- name: export cache hits
shell: bash
Expand Down
43 changes: 43 additions & 0 deletions .github/actions/cache/restore/internal/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
name: 'Cache Restore'
description: 'Restore a cache with WarpBuild on Warp runners and GitHub Actions cache otherwise'
inputs:
path:
description: 'A list of files, directories, and wildcard patterns to restore'
required: true
key:
description: 'An explicit key for restoring the cache'
required: true
restore-keys:
description: 'An ordered multiline string listing prefix-matched restore keys'
required: false
default: ''
provider:
description: 'The cache provider to use'
required: true
outputs:
cache-hit:
description: 'A boolean value to indicate an exact match was found for the primary key'
value: ${{ steps.warp.outputs.cache-hit || steps.gha.outputs.cache-hit }}
cache-primary-key:
description: 'The primary key used to restore the cache'
value: ${{ steps.warp.outputs.cache-primary-key || steps.gha.outputs.cache-primary-key }}
runs:
using: 'composite'
steps:
- name: Restore cache with WarpBuild
id: warp
if: ${{ inputs.provider == 'warp' }}
uses: WarpBuilds/cache/restore@v1
with:
path: ${{ inputs.path }}
key: ${{ inputs.key }}
restore-keys: ${{ inputs.restore-keys }}

- name: Restore cache with GitHub Actions
id: gha
if: ${{ inputs.provider == 'gha' }}
uses: actions/cache/restore@v5
with:
path: ${{ inputs.path }}
key: ${{ inputs.key }}
restore-keys: ${{ inputs.restore-keys }}
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
name: 'Save Caches'
description: 'Save ccache, depends sources, and built depends caches'
inputs:
provider:
description: 'The cache provider to use'
required: true
runs:
using: 'composite'
steps:
Expand All @@ -11,29 +15,33 @@ runs:
echo "previous releases direct cache hit to primary key: ${{ env.previous-releases-cache-hit }}"

- name: Save Ccache cache
uses: cirruslabs/cache/save@v4
uses: ./.github/actions/cache/save/internal
if: ${{ (github.event_name == 'push') && (github.ref_name == github.event.repository.default_branch) }}
with:
path: ${{ env.CCACHE_DIR }}
key: ccache-${{ env.CONTAINER_NAME }}-${{ github.run_id }}
provider: ${{ inputs.provider }}

- name: Save depends sources cache
uses: cirruslabs/cache/save@v4
uses: ./.github/actions/cache/save/internal
if: ${{ (github.event_name == 'push') && (github.ref_name == github.event.repository.default_branch) && (env.depends-sources-cache-hit != 'true') }}
with:
path: ${{ env.SOURCES_PATH }}
key: depends-sources-${{ env.CONTAINER_NAME }}-${{ env.DEPENDS_HASH }}
provider: ${{ inputs.provider }}

- name: Save built depends cache
uses: cirruslabs/cache/save@v4
uses: ./.github/actions/cache/save/internal
if: ${{ (github.event_name == 'push') && (github.ref_name == github.event.repository.default_branch) && (env.depends-built-cache-hit != 'true' )}}
with:
path: ${{ env.BASE_CACHE }}
key: depends-built-${{ env.CONTAINER_NAME }}-${{ env.DEPENDS_HASH }}
provider: ${{ inputs.provider }}

- name: Save previous releases cache
uses: cirruslabs/cache/save@v4
uses: ./.github/actions/cache/save/internal
if: ${{ (github.event_name == 'push') && (github.ref_name == github.event.repository.default_branch) && (env.previous-releases-cache-hit != 'true' )}}
with:
path: ${{ env.PREVIOUS_RELEASES_DIR }}
key: previous-releases-${{ env.CONTAINER_NAME }}-${{ env.PREVIOUS_RELEASES_HASH }}
provider: ${{ inputs.provider }}
28 changes: 28 additions & 0 deletions .github/actions/cache/save/internal/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
name: 'Cache Save'
description: 'Save a cache with WarpBuild on Warp runners and GitHub Actions cache otherwise'
inputs:
path:
description: 'A list of files, directories, and wildcard patterns to cache'
required: true
key:
description: 'An explicit key for saving the cache'
required: true
provider:
description: 'The cache provider to use'
required: true
runs:
using: 'composite'
steps:
- name: Save cache with WarpBuild
if: ${{ inputs.provider == 'warp' }}
uses: WarpBuilds/cache/save@v1
with:
path: ${{ inputs.path }}
key: ${{ inputs.key }}

- name: Save cache with GitHub Actions
if: ${{ inputs.provider == 'gha' }}
uses: actions/cache/save@v5
with:
path: ${{ inputs.path }}
key: ${{ inputs.key }}
53 changes: 23 additions & 30 deletions .github/actions/configure-docker/action.yml
Original file line number Diff line number Diff line change
@@ -1,29 +1,29 @@
name: 'Configure Docker'
description: 'Set up Docker build driver and configure build cache args'
inputs:
cache-provider:
description: 'gha or cirrus cache provider'
required: true
provider:
description: 'The cache provider to use'
required: false
default: 'gha'
runs:
using: 'composite'
steps:
- name: Check inputs
shell: python
run: |
# We expect only gha or cirrus as inputs to cache-provider
if "${{ inputs.cache-provider }}" not in ("gha", "cirrus"):
print("::warning title=Unknown input to configure docker action::Provided value was ${{ inputs.cache-provider }}")

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Set up Docker Buildx for Warp cache
if: ${{ inputs.provider == 'warp' }}
uses: docker/setup-buildx-action@v4
with:
# Use host network to allow access to cirrus gha cache running on the host
driver-opts: |
network=host

# This is required to allow buildkit to access the actions cache
- name: Set up Docker Buildx
if: ${{ inputs.provider != 'warp' }}
uses: docker/setup-buildx-action@v4

# This is required when using the gha cache backend with a manual docker buildx invocation.
# Docker will check for variables $ACTIONS_CACHE_URL, $ACTIONS_RESULTS_URL and $ACTIONS_RUNTIME_TOKEN
# which are set automatically when running on GitHub infra: https://docs.docker.com/build/cache/backends/gha/#synopsis
- name: Expose actions cache variables
uses: actions/github-script@v6
uses: actions/github-script@v8
with:
script: |
Object.keys(process.env).forEach(function (key) {
Expand All @@ -36,25 +36,18 @@ runs:
- name: Construct docker build cache args
shell: bash
run: |
# Configure docker build cache backend
#
# On forks the gha cache will work but will use Github's cache backend.
# Docker will check for variables $ACTIONS_CACHE_URL, $ACTIONS_RESULTS_URL and $ACTIONS_RUNTIME_TOKEN
# which are set automatically when running on GitHub infra: https://docs.docker.com/build/cache/backends/gha/#synopsis

# Use cirrus cache host
if [[ ${{ inputs.cache-provider }} == 'cirrus' ]]; then
url_args="url=${CIRRUS_CACHE_HOST},url_v2=${CIRRUS_CACHE_HOST}"
else
url_args=""
cache_options="scope=${CONTAINER_NAME}"
if [[ "${{ inputs.provider }}" == "warp" ]]; then
cache_options="url=http://127.0.0.1:49160/,version=1,${cache_options}"
fi

# Configure docker build cache backend
# Always optimistically --cache‑from in case a cache blob exists
args=(--cache-from "type=gha${url_args:+,${url_args}},scope=${CONTAINER_NAME}")
args=(--cache-from "type=gha,${cache_options}")

# Only add --cache-to when using the Cirrus cache provider and pushing to the default branch.
if [[ ${{ inputs.cache-provider }} == 'cirrus' && ${{ github.event_name }} == "push" && ${{ github.ref_name }} == ${{ github.event.repository.default_branch }} ]]; then
args+=(--cache-to "type=gha${url_args:+,${url_args}},mode=max,ignore-error=true,scope=${CONTAINER_NAME}")
# Only add --cache-to when pushing to the default branch.
if [[ ${{ github.event_name }} == "push" && ${{ github.ref_name }} == ${{ github.event.repository.default_branch }} ]]; then
args+=(--cache-to "type=gha,mode=max,ignore-error=true,${cache_options}")
fi

# Always `--load` into docker images (needed when using the `docker-container` build driver).
Expand Down
8 changes: 7 additions & 1 deletion .github/ci-windows.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import shlex
import subprocess
import sys
import time
from pathlib import Path

sys.path.append(str(Path(__file__).resolve().parent.parent / "test"))
Expand Down Expand Up @@ -73,7 +74,12 @@ def generate(ci_type):
"--preset",
"vs2026",
] + GENERATE_OPTIONS[ci_type]
run(command)
if run(command, check=False).returncode != 0:
print("=== ⚠️ ===")
print("Generate failure! Network issue? Retry once ...")
time.sleep(12)
print("=== ⚠️ ===")
run(command)


def build(_ci_type):
Expand Down
Loading