v31.0 Testing #34840

issue fanquake openend this issue on March 17, 2026
  1. fanquake commented at 9:05 am on March 17, 2026: member

    Umbrella issue for 31.0 testing. Please help testing on a wide variety of supported platforms, as well as interaction with different software.

    Let us know which version you tested on which operating system.

    If you find an issue, please search Github for known issues first and then open a new Github issue.

    This meta issue should not be used to report bugs, as a single thread makes it impossible to track more than one topic.

    See 31.0 Release Notes Draft for a list of changes.

    See here for the testing guide: https://github.com/bitcoin-core/bitcoin-devwiki/wiki/31.0-Release-Candidate-Testing-Guide

  2. fanquake added this to the milestone 31.0 on Mar 17, 2026
  3. fanquake pinned this on Mar 17, 2026
  4. fanquake commented at 9:06 am on March 17, 2026: member
    v31.0rc1 bins are availalble here: https://bitcoincore.org/bin/bitcoin-core-31.0/test.rc1/.
  5. fanquake added the label Tracking Issue on Mar 19, 2026
  6. l0rinc commented at 11:37 am on March 19, 2026: contributor

    Tested private broadcast with the follow-up debug logging and RPC queue inspection across multiple transactions on mainnet.

    One of them completed in ~30s: requested 3 connections, one onion failed and retried, two peers connected (v2 + v1), both received the INV and PONGed back, then the tx was received back from the network via a regular peer - stopping private broadcast. A third connection that completed after the tx was already confirmed was correctly disconnected as “connected in vain”. RPC showed the tx in the queue after sendrawtransaction, present during retries, and cleared once received back from mempool.

  7. enirox001 commented at 9:51 am on March 22, 2026: contributor

    Tested on Fedora x86_64, compiled from source, v31.0rc1.

    All guide tests passed as expected. I went beyond the guide and tested cluster mempool with longer tx chains, mixed fee rates, and submission order, all behaved correctly, cluster rejected at tx 65 with too-large-cluster as expected.

    Private broadcast behaved correctly in all scenarios including getprivatebroadcastinfo and abortprivatebroadcast.

    For coinbase_tx I tested across all verbosity levels, confirmed the field matches the actual first transaction in the block, and verified the block height encoding in the coinbase hex. One thing worth flagging is that getblock returns coinbase_tx.witness as a string while getrawtransaction returns the same data via vin[0].txinwitness as an array. Same data, inconsistent types. May be intentional given the simplified nature of coinbase_tx but thought it was worth mentioning.

  8. janb84 commented at 9:13 am on March 23, 2026: contributor

    Used the testing guide to test V31 no issues there.

    Ran it for 48+ hours on mainnet with no issues. There was some time between stopping v30 and running v31, so it needed to sync to the top, which went without issues. I did experience some slowness between receiving the block header and UpdateTip but that resolved itself after a while (Probably the (slow) peers I was connected with at the time).

    Also send a private broadcast on mainnet, it completed within ~5 seconds, which prevented me of fully testing the new RPC calls (did not run it with the extra logging :( )

  9. l0rinc commented at 12:48 pm on March 25, 2026: contributor

    Did a full reindex-chainstate on Windows, v31.0rc1 (official build vs local compilation) and compared it with v30.2 as well for context. They all finished successfully. I will try a a pruned IBD as well. With the new default dbcache of 1 GB, v31.0rc1 appears ~10% faster than v30.2 when both use their own built-in assumevalid. When both use v31’s assumevalid, the speedup is 1%. The official and locally cross-compiled binaries are basically the same speed, except when running a WSL-native Linux binary on NTFS, which has catastrophic performance (probably because of the IO translation overhead). But that’s probably fine, I don’t think anyone is using that, just wanted to know how it performs and whether it completes.

     0for DBCACHE in 1000; do
     1  VERSION="31.0rc1"; PREV_VERSION="30.2"; TAG="v$VERSION"; STOP=941149; RUNS=1; JOBS="$(nproc)";
     2  HOST=x86_64-w64-mingw32; XPACK="/home/win/xpack-mingw-w64-gcc-15.2.0-2";
     3  BASE_DIR="/mnt/c/my_storage"; DATA_DIR="$BASE_DIR/BitcoinData"; LOG_DIR="$BASE_DIR/logs"; BIN_DIR="$BASE_DIR/bitcoin_bins";
     4  OFFICIAL_DIR="$BIN_DIR/bitcoin-$VERSION-win64-official"; OFFICIAL_PREV_DIR="$BIN_DIR/bitcoin-$PREV_VERSION-win64-official";
     5  ZIP="bitcoin-$VERSION-win64.zip"; PREV_ZIP="bitcoin-$PREV_VERSION-win64.zip";
     6  WORKTREE="$HOME/bitcoin-bench-$VERSION";
     7  WIN_DATA_DIR="$(wslpath -w "$DATA_DIR")";
     8  OFFICIAL_URL="https://bitcoincore.org/bin/bitcoin-core-${VERSION%rc*}/test.rc${VERSION##*rc}/$ZIP";
     9  OFFICIAL_PREV_URL="https://bitcoincore.org/bin/bitcoin-core-$PREV_VERSION/$PREV_ZIP";
    10  export PATH="$XPACK/bin:$PATH";
    11  mkdir -p "$BIN_DIR" "$LOG_DIR" &&
    12  git rev-parse --verify --quiet "$TAG^{commit}" >/dev/null || git fetch -q origin "refs/tags/$TAG:refs/tags/$TAG" &&
    13  COMMIT="$(git rev-list -n 1 "$TAG")" &&
    14  (echo ""; git log -1 --pretty='%h %s' "$COMMIT" || exit 1; echo "official rc: $OFFICIAL_URL"; echo "official prev: $OFFICIAL_PREV_URL"; echo "") &&
    15  ([ -e "$WORKTREE/.git" ] || git worktree add --detach "$WORKTREE" "$COMMIT") &&
    16  git -C "$WORKTREE" reset --hard "$COMMIT" &&
    17  git -C "$WORKTREE" clean -fxd -e depends/sources -e depends/built -e depends/$HOST &&
    18  if [ ! -f "$BIN_DIR/$ZIP" ]; then echo "downloading official win64 rc zip..."; wget -q -P "$BIN_DIR" "$OFFICIAL_URL" || exit 1; fi &&
    19  if [ ! -f "$BIN_DIR/$PREV_ZIP" ]; then echo "downloading official win64 prev zip..."; wget -q -P "$BIN_DIR" "$OFFICIAL_PREV_URL" || exit 1; fi &&
    20  rm -rf "$OFFICIAL_DIR" "$OFFICIAL_PREV_DIR" && mkdir -p "$OFFICIAL_DIR" "$OFFICIAL_PREV_DIR" &&
    21  unzip -qo "$BIN_DIR/$ZIP" -d "$OFFICIAL_DIR" && unzip -qo "$BIN_DIR/$PREV_ZIP" -d "$OFFICIAL_PREV_DIR" &&
    22  OFFICIAL_BITCOIND="$(find "$OFFICIAL_DIR" -path '*/bin/bitcoind.exe' -type f | head -1)" &&
    23  OFFICIAL_PREV_BITCOIND="$(find "$OFFICIAL_PREV_DIR" -path '*/bin/bitcoind.exe' -type f | head -1)" &&
    24  rm -rf "$WORKTREE/build-win64-local" "$WORKTREE/build-wsl-local" &&
    25  make -C "$WORKTREE/depends" HOST=$HOST NO_QT=1 NO_ZMQ=1 CC="$XPACK/bin/${HOST}-gcc" CXX="$XPACK/bin/${HOST}-g++" -j"$JOBS" &&
    26  cmake -S "$WORKTREE" -B "$WORKTREE/build-win64-local" -G Ninja \
    27    --toolchain "$WORKTREE/depends/$HOST/toolchain.cmake" \
    28    -DCMAKE_BUILD_TYPE=Release -DBUILD_GUI=OFF -DWITH_ZMQ=OFF -DBUILD_TESTS=OFF -DBUILD_BENCH=OFF &&
    29  ninja -C "$WORKTREE/build-win64-local" bitcoind -j"$JOBS" &&
    30  LOCAL_WIN_BITCOIND="$WORKTREE/build-win64-local/bin/bitcoind.exe" &&
    31  cmake -S "$WORKTREE" -B "$WORKTREE/build-wsl-local" -G Ninja \
    32    -DCMAKE_BUILD_TYPE=Release -DBUILD_GUI=OFF -DWITH_ZMQ=OFF -DBUILD_TESTS=OFF -DBUILD_BENCH=OFF &&
    33  ninja -C "$WORKTREE/build-wsl-local" bitcoind -j"$JOBS" &&
    34  LOCAL_WSL_BITCOIND="$WORKTREE/build-wsl-local/bin/bitcoind" &&
    35  (echo "$(date -I) | reindex-chainstate | $TAG vs v$PREV_VERSION | ${STOP} blocks | dbcache ${DBCACHE} | $(hostname) | $(uname -m) | $(lscpu | grep 'Model name' | head -1 | cut -d: -f2 | xargs) | $JOBS cores | $(free -h | awk '/^Mem:/{print $2}') RAM | official-win64-$VERSION vs official-win64-$PREV_VERSION vs local-win64 vs local-wsl"; echo "") &&
    36  hyperfine \
    37    --sort command \
    38    --runs $RUNS \
    39    --export-json "$BASE_DIR/rdx-$VERSION-vs-$PREV_VERSION-win-$STOP-$DBCACHE.json" \
    40    --prepare "taskkill.exe /IM bitcoind.exe /F 2>/dev/null || true; killall -9 bitcoind 2>/dev/null || true; rm -f $DATA_DIR/debug.log; \
    41      \"$LOCAL_WSL_BITCOIND\" -datadir=\"$DATA_DIR\" -stopatheight=$STOP -dbcache=1000 -blocksonly -printtoconsole=0; \
    42      sleep 20; rm -f $DATA_DIR/debug.log" \
    43    --conclude "taskkill.exe /IM bitcoind.exe /F 2>/dev/null || true; killall bitcoind 2>/dev/null || true; sleep 5; \
    44      grep -q 'height=0' \"$DATA_DIR\"/debug.log && grep -q \"height=$STOP\" \"$DATA_DIR\"/debug.log && grep -q 'Bitcoin Core version' \"$DATA_DIR\"/debug.log && \
    45      cp \"$DATA_DIR\"/debug.log \"$LOG_DIR\"/debug-$VERSION-vs-$PREV_VERSION-win-\$(date +%s).log" \
    46    "\"$OFFICIAL_PREV_BITCOIND\" -datadir=\"$WIN_DATA_DIR\" -stopatheight=$STOP -dbcache=$DBCACHE -reindex-chainstate -blocksonly -connect=0 -printtoconsole=0 -assumevalid=00000000000000000000ccebd6d74d9194d8dcdc1d177c478e094bfad51ba5ac" \
    47    "\"$OFFICIAL_BITCOIND\" -datadir=\"$WIN_DATA_DIR\" -stopatheight=$STOP -dbcache=$DBCACHE -reindex-chainstate -blocksonly -connect=0 -printtoconsole=0 -assumevalid=00000000000000000000ccebd6d74d9194d8dcdc1d177c478e094bfad51ba5ac"; \
    48done
    49
    502026-03-19 | reindex-chainstate | v31.0rc1 vs v30.2 | 941149 blocks | dbcache 1000 | WIN-A2EHOAU4JET | x86_64 | Intel(R) Xeon(R) CPU E5-2637 v2 @ 3.50GHz | 8 cores | 31Gi RAM | official-win64-31.0rc1 vs official-win64-30.2 vs local-win64 vs local-wsl
    51
    52Benchmark 1: "/mnt/c/my_storage/bitcoin_bins/bitcoin-30.2-win64-official/bitcoin-30.2/bin/bitcoind.exe" -datadir="C:\my_storage\BitcoinData" -stopatheight=941149 -dbcache=1000 -reindex-chainstate -blocksonly -connect=0 -printtoconsole=0
    53  Time (abs ):        35155.337 s               [User: 0.002 s, System: 0.000 s]
    54
    55Benchmark 2: "/mnt/c/my_storage/bitcoin_bins/bitcoin-31.0rc1-win64-official/bitcoin-31.0rc1/bin/bitcoind.exe" -datadir="C:\my_storage\BitcoinData" -stopatheight=941149 -dbcache=1000 -reindex-chainstate -blocksonly -connect=0 -printtoconsole=0
    56  Time (abs ):        31965.769 s               [User: 0.002 s, System: 0.000 s]
    57
    58Benchmark 3: "/home/win/bitcoin-bench-31.0rc1/build-win64-local/bin/bitcoind.exe" -datadir="C:\my_storage\BitcoinData" -stopatheight=941149 -dbcache=1000 -reindex-chainstate -blocksonly -connect=0 -printtoconsole=0
    59  Time (abs ):        32072.373 s               [User: 0.001 s, System: 0.000 s]
    60
    61Benchmark 4: "/home/win/bitcoin-bench-31.0rc1/build-wsl-local/bin/bitcoind" -datadir="/mnt/c/my_storage/BitcoinData" -stopatheight=941149 -dbcache=1000 -reindex-chainstate -blocksonly -connect=0 -printtoconsole=0
    62  Time (abs ):        82147.442 s               [User: 51853.377 s, System: 19442.171 s]
    63
    64Relative speed comparison
    65        1.10          "/mnt/c/my_storage/bitcoin_bins/bitcoin-30.2-win64-official/bitcoin-30.2/bin/bitcoind.exe" -datadir="C:\my_storage\BitcoinData" -stopatheight=941149 -dbcache=1000 -reindex-chainstate -blocksonly -connect=0 -printtoconsole=0
    66        1.00          "/mnt/c/my_storage/bitcoin_bins/bitcoin-31.0rc1-win64-official/bitcoin-31.0rc1/bin/bitcoind.exe" -datadir="C:\my_storage\BitcoinData" -stopatheight=941149 -dbcache=1000 -reindex-chainstate -blocksonly -connect=0 -printtoconsole=0
    67        1.00          "/home/win/bitcoin-bench-31.0rc1/build-win64-local/bin/bitcoind.exe" -datadir="C:\my_storage\BitcoinData" -stopatheight=941149 -dbcache=1000 -reindex-chainstate -blocksonly -connect=0 -printtoconsole=0
    68        2.57          "/home/win/bitcoin-bench-31.0rc1/build-wsl-local/bin/bitcoind" -datadir="/mnt/c/my_storage/BitcoinData" -stopatheight=941149 -dbcache=1000 -reindex-chainstate -blocksonly -connect=0 -printtoconsole=0
    69
    70----
    71
    72for DBCACHE in 1000; do   VERSION="31.0rc1"; PREV_VERSION="30.2"; TAG="v$VERSION"; STOP=941149; RUNS=1; JOBS="$(nproc)";   HOST=x86_64-w64-mingw32; XPACK="/home/win/xpack-mingw-w64-gcc-15.2.0-2";   BASE_DIR="/mnt/c/my_storage"; DATA_DIR="$BASE_DIR/BitcoinData"; LOG_DIR="$BASE_DIR/logs"; BIN_DIR="$BASE_DIR/bitcoin_bins";   OFFICIAL_DIR="$BIN_DIR/bitcoin-$VERSION-win64-official"; OFFICIAL_PREV_DIR="$BIN_DIR/bitcoin-$PREV_VERSION-win64-official";   ZIP="bitcoin-$VERSION-win64.zip"; PREV_ZIP="bitcoin-$PREV_VERSION-win64.zip";   WORKTREE="$HOME/bitcoin-bench-$VERSION";   WIN_DATA_DIR="$(wslpath -w "$DATA_DIR")";   OFFICIAL_URL="https://bitcoincore.org/bin/bitcoin-core-${VERSION%rc*}/test.rc${VERSION##*rc}/$ZIP";   OFFICIAL_PREV_URL="https://bitcoincore.org/bin/bitcoin-core-$PREV_VERSION/$PREV_ZIP";   export PATH="$XPACK/bin:$PATH";   mkdir -p "$BIN_DIR" "$LOG_DIR" &&   git rev-parse --verify --quiet "$TAG^{commit}" >/dev/null || git fetch -q origin "refs/tags/$TAG:refs/tags/$TAG" &&   COMMIT="$(git rev-list -n 1 "$TAG")" &&   (echo ""; git log -1 --pretty='%h %s' "$COMMIT" || exit 1; echo "official rc: $OFFICIAL_URL"; echo "official prev: $OFFICIAL_PREV_URL"; echo "") &&   ([ -e "$WORKTREE/.git" ] || git worktree add --detach "$WORKTREE" "$COMMIT") &&   git -C "$WORKTREE" reset --hard "$COMMIT" &&   git -C "$WORKTREE" clean -fxd -e depends/sources -e depends/built -e depends/$HOST &&   if [ ! -f "$BIN_DIR/$ZIP" ]; then echo "downloading official win64 rc zip..."; wget -q -P "$BIN_DIR" "$OFFICIAL_URL" || exit 1; fi &&   if [ ! -f "$BIN_DIR/$PREV_ZIP" ]; then echo "downloading official win64 prev zip..."; wget -q -P "$BIN_DIR" "$OFFICIAL_PREV_URL" || exit 1; fi &&   rm -rf "$OFFICIAL_DIR" "$OFFICIAL_PREV_DIR" && mkdir -p "$OFFICIAL_DIR" "$OFFICIAL_PREV_DIR" &&   unzip -qo "$BIN_DIR/$ZIP" -d "$OFFICIAL_DIR" && unzip -qo "$BIN_DIR/$PREV_ZIP" -d "$OFFICIAL_PREV_DIR" &&   OFFICIAL_BITCOIND="$(find "$OFFICIAL_DIR" -path '*/bin/bitcoind.exe' -type f | head -1)" &&   OFFICIAL_PREV_BITCOIND="$(find "$OFFICIAL_PREV_DIR" -path '*/bin/bitcoind.exe' -type f | head -1)" &&   rm -rf "$WORKTREE/build-win64-local" "$WORKTREE/build-wsl-local" &&   make -C "$WORKTREE/depends" HOST=$HOST NO_QT=1 NO_ZMQ=1 CC="$XPACK/bin/${HOST}-gcc" CXX="$XPACK/bin/${HOST}-g++" -j"$JOBS" &&   cmake -S "$WORKTREE" -B "$WORKTREE/build-win64-local" -G Ninja     --toolchain "$WORKTREE/depends/$HOST/toolchain.cmake"     -DCMAKE_BUILD_TYPE=Release -DBUILD_GUI=OFF -DWITH_ZMQ=OFF -DBUILD_TESTS=OFF -DBUILD_BENCH=OFF &&   ninja -C "$WORKTREE/build-win64-local" bitcoind -j"$JOBS" &&   LOCAL_WIN_BITCOIND="$WORKTREE/build-win64-local/bin/bitcoind.exe" &&   cmake -S "$WORKTREE" -B "$WORKTREE/build-wsl-local" -G Ninja     -DCMAKE_BUILD_TYPE=Release -DBUILD_GUI=OFF -DWITH_ZMQ=OFF -DBUILD_TESTS=OFF -DBUILD_BENCH=OFF &&   ninja -C "$WORKTREE/build-wsl-local" bitcoind -j"$JOBS" &&   LOCAL_WSL_BITCOIND="$WORKTREE/build-wsl-local/bin/bitcoind" &&   (echo "$(date -I) | reindex-chainstate | $TAG vs v$PREV_VERSION | ${STOP} blocks | dbcache ${DBCACHE} | $(hostname) | $(uname -m) | $(lscpu | grep 'Model name' | head -1 | cut -d: -f2 | xargs) | $JOBS cores | $(free -h | awk '/^Mem:/{print $2}') RAM | official-win64-$VERSION vs official-win64-$PREV_VERSION vs local-win64 vs local-wsl"; echo "") &&   hyperfine     --sort command     --runs $RUNS     --export-json "$BASE_DIR/rdx-$VERSION-vs-$PREV_VERSION-win-$STOP-$DBCACHE.json"     --prepare "taskkill.exe /IM bitcoind.exe /F 2>/dev/null || true; killall -9 bitcoind 2>/dev/null || true; rm -f $DATA_DIR/debug.log; \
    73  \"$LOCAL_WSL_BITCOIND\" -datadir=\"$DATA_DIR\" -stopatheight=$STOP -dbcache=1000 -blocksonly -printtoconsole=0; \
    74  sleep 20; rm -f $DATA_DIR/debug.log"     --conclude "taskkill.exe /IM bitcoind.exe /F 2>/dev/null || true; killall bitcoind 2>/dev/null || true; sleep 5; \
    75  grep -q 'height=0' \"$DATA_DIR\"/debug.log && grep -q \"height=$STOP\" \"$DATA_DIR\"/debug.log && grep -q 'Bitcoin Core version' \"$DATA_DIR\"/debug.log && \
    76  cp \"$DATA_DIR\"/debug.log \"$LOG_DIR\"/debug-$VERSION-vs-$PREV_VERSION-win-\$(date +%s).log"     "\"$OFFICIAL_PREV_BITCOIND\" -datadir=\"$WIN_DATA_DIR\" -stopatheight=$STOP -dbcache=$DBCACHE -reindex-chainstate -blocksonly -connect=0 -printtoconsole=0 -assumevalid=00000000000000000000ccebd6d74d9194d8dcdc1d177c478e094bfad51ba5ac"     "\"$OFFICIAL_BITCOIND\" -datadir=\"$WIN_DATA_DIR\" -stopatheight=$STOP -dbcache=$DBCACHE -reindex-chainstate -blocksonly -connect=0 -printtoconsole=0 -assumevalid=00000000000000000000ccebd6d74d9194d8dcdc1d177c478e094bfad51ba5ac"; done
    77
    782026-03-22 | reindex-chainstate | v31.0rc1 vs v30.2 | 941149 blocks | dbcache 1000 | WIN-A2EHOAU4JET | x86_64 | Intel(R) Xeon(R) CPU E5-2637 v2 @ 3.50GHz | 8 cores | 31Gi RAM | official-win64-31.0rc1 vs official-win64-30.2 vs local-win64 vs local-wsl
    79
    80Benchmark 1: "/mnt/c/my_storage/bitcoin_bins/bitcoin-30.2-win64-official/bitcoin-30.2/bin/bitcoind.exe" -datadir="C:\my_storage\BitcoinData" -stopatheight=941149 -dbcache=1000 -reindex-chainstate -blocksonly -connect=0 -printtoconsole=0 -assumevalid=00000000000000000000ccebd6d74d9194d8dcdc1d177c478e094bfad51ba5ac
    81  Time (abs ):        32306.413 s               [User: 0.002 s, System: 0.000 s]
    82
    83Benchmark 2: "/mnt/c/my_storage/bitcoin_bins/bitcoin-31.0rc1-win64-official/bitcoin-31.0rc1/bin/bitcoind.exe" -datadir="C:\my_storage\BitcoinData" -stopatheight=941149 -dbcache=1000 -reindex-chainstate -blocksonly -connect=0 -printtoconsole=0 -assumevalid=00000000000000000000ccebd6d74d9194d8dcdc1d177c478e094bfad51ba5ac
    84  Time (abs ):        31931.019 s               [User: 0.000 s, System: 0.002 s]
    85
    86Relative speed comparison
    87        1.01          "/mnt/c/my_storage/bitcoin_bins/bitcoin-30.2-win64-official/bitcoin-30.2/bin/bitcoind.exe" -datadir="C:\my_storage\BitcoinData" -stopatheight=941149 -dbcache=1000 -reindex-chainstate -blocksonly -connect=0 -printtoconsole=0 -assumevalid=00000000000000000000ccebd6d74d9194d8dcdc1d177c478e094bfad51ba5ac
    88        1.00          "/mnt/c/my_storage/bitcoin_bins/bitcoin-31.0rc1-win64-official/bitcoin-31.0rc1/bin/bitcoind.exe" -datadir="C:\my_storage\BitcoinData" -stopatheight=941149 -dbcache=1000 -reindex-chainstate -blocksonly -connect=0 -printtoconsole=0 -assumevalid=00000000000000000000ccebd6d74d9194d8dcdc1d177c478e094bfad51ba5ac
    
  10. jsarenik commented at 8:42 am on March 27, 2026: none

    All works well. Running a self-compiled (in musl-libc x86_64 Linux) vanilla Bitcoin Core v31.0rc2 (tag, f0e2cbc) with the Cluster Mempool on mainnet and also on signet with Alt Signetfaucet now. Limit of 25 ancestors is still being respected in the faucet scripts but ready to switch to 64 whenever the signet miner will run a ClusterMempool-ready version. 🙂

    Operation seems stable and I didn’t notice anything special yet.

    Thanks for the pre-release.

    UPDATE: running pre-released bitcoincore.org /bin/bitcoin-core-31.0/test.rc4/ linux glibc x84_64 binaries now

  11. l0rinc commented at 0:44 am on March 28, 2026: contributor

    Finished a fully validating (-assumevalid=0) run on a Rpi5 until 941'149 in 55 hours.

     0VERSIONS="31.0rc1"; \
     1STOP=941149; DBCACHE=1000; ARCH="aarch64"; \
     2ASSUMEVALID="0"; \                                                                                                                                                                                    
     3BASE_DIR="/mnt/my_storage"; DATA_DIR="$BASE_DIR/BitcoinData"; LOG_DIR="$BASE_DIR/logs"; BIN_DIR="$BASE_DIR/bitcoin_bins"; \
     4mkdir -p "$BIN_DIR" "$LOG_DIR" && \
     5(echo "Preparing Bitcoin Core versions:"; \
     6for v in $VERSIONS; do \
     7  echo -n "v$v: "; \
     8  TAR="bitcoin-$v-$ARCH-linux-gnu.tar.gz"; \
     9  if [[ "$v" == *"rc1"* ]]; then \
    10    BASE_VERSION="${v%rc*}"; \
    11    URL="https://bitcoincore.org/bin/bitcoin-core-$BASE_VERSION/test.rc1/$TAR"; \
    12  else \
    13    URL="https://bitcoincore.org/bin/bitcoin-core-$v/$TAR"; \
    14  fi; \
    15  if [ ! -f "$BIN_DIR/$TAR" ]; then echo -n "downloading... "; wget -q -P "$BIN_DIR" "$URL" || exit 1; fi; \
    16  if [ ! -d "$BIN_DIR/bitcoin-$v" ]; then echo -n "extracting... "; tar -xzf "$BIN_DIR/$TAR" -C "$BIN_DIR" || exit 1; fi; \
    17  echo "ready"; \
    18done; echo "") && { killall bitcoind 2>/dev/null || true; } && \
    19 hyperfine \
    20  --sort command \
    21  --runs 1 \
    22  --export-json "$BASE_DIR/ibd-v$(echo $VERSIONS | tr ' ' '-')-$STOP-$DBCACHE-noscript.json" \
    23  --parameter-list VERSION ${VERSIONS// /,} \
    24  --prepare "killall -9 bitcoind 2>/dev/null || true; sleep 5; rm -rf $DATA_DIR/*" \
    25  --conclude "killall bitcoind 2>/dev/null || true; sleep 5; grep -q 'height=0' \"$DATA_DIR\"/debug.log && grep -q \"height=$STOP\" \"$DATA_DIR\"/debug.log || { echo 'debug.log assertions failed'; exit 1; }; \
    26              cp \"$DATA_DIR\"/debug.log \"$LOG_DIR\"/debug-{VERSION}-\$(date +%s).log 2>/dev/null || true" \
    27  "$BIN_DIR/bitcoin-{VERSION}/bin/bitcoind -datadir=$DATA_DIR -stopatheight=$STOP -dbcache=$DBCACHE -assumevalid=$ASSUMEVALID -blocksonly -printtoconsole=0"
    28Preparing Bitcoin Core versions:
    29v31.0rc1: downloading... extracting... ready
    30
    31Benchmark 1: /mnt/my_storage/bitcoin_bins/bitcoin-31.0rc1/bin/bitcoind -datadir=/mnt/my_storage/BitcoinData -stopatheight=941149 -dbcache=1000 -assumevalid=0 -blocksonly -printtoconsole=0
    32  Time (abs ≡):        200686.501 s               [User: 700490.776 s, System: 8020.659 s]
    
  12. ArmchairCryptologist commented at 11:43 am on March 31, 2026: none

    Haven’t noticed any real issues with neither RC1 nor RC2, but unlike 30.2, it does write a possibly spurious block height above assumevalid height info-level message in the logs on the first received block after startup (not IBD, and even if fully caught up at startup). Not opening an issue since it seems harmless, and since I’m unsure if it’s intended or not.

    02026-03-31T11:06:29Z Loaded best chain: hashBestChain=000000000000000000020bcadcdb82fc40bdc3654f7011b47c8d4231a9cdefd9 height=943055 date=2026-03-31T11:07:22Z progress=1.000000
    12026-03-31T11:16:39Z Enabling script verification at block [#943056](/bitcoin-bitcoin/943056/) (00000000000000000001f73ee0e8db343cf289e147f252a3f668a04294006ba9): block height above assumevalid height.
    
  13. javierpmateos commented at 7:57 pm on March 31, 2026: none

    Tested v31.0rc2 (f0e2cbc) on WSL2 Ubuntu 24.04 x86_64, compiled from source with -DENABLE_IPC=OFF.

    Ran all tests from the RC Testing Guide, all passed:

    • Cluster mempool RPCs (1.1, 1.2, 1.3) ✅
    • Private broadcast (2.1) ✅
    • getblock coinbase_tx field (3.1) ✅
    • txospenderindex (4.1) ✅
    • Default dbcache 1024 MiB (5.1) ✅
    • Embedded ASMap (5.2) ✅
    • REST blockpart endpoint (6.1) ✅

    No issues found.

  14. darosior commented at 9:50 pm on March 31, 2026: member
    I ran the integration tests of the Liana and Core-Lightning projects against rc2 and did not find any issue. I also ran the version of the Liana integration tests in which it interfaces with an Electrs set up on top of Bitcoin Core v31.0rc2. Using the latest master of all those projects.
  15. javierpmateos commented at 1:42 am on April 1, 2026: none

    Extended testing - cluster mempool security scenarios (v31.0rc2, WSL2 Ubuntu 24.04):

    Cluster topologies:

    • Fan-out (1→4 children), diamond (parent→2 children→grandchild), independent clusters: all correctly handled.

    Pinning resistance:

    • Cluster saturation attack (62 chained low-fee txs): victim CPFP succeeded at slot 64/64.
    • Descendant flooding via fan-out (20 descendants): victim CPFP succeeded, cluster limit not reached.
    • RBF vs CPFP bidding war: RBF correctly rejected when package fees exceed replacement (0.05 < 0.101).

    TRUC (v3) enforcement:

    • Grandchild blocked with “TRUC-violation, would have too many ancestors”
    • Oversized child (1474 vB) blocked with “is too big: 1474 > 1000”
    • Multi-parent CPFP batching blocked (same TRUC ancestor violation)

    Stress scenarios:

    • Re-org simulation (invalidateblock + RBF attempt): node correctly re-evaluated cluster after 96 txs returned to mempool, rejected opportunistic RBF.
    • OP_RETURN payload protection: cluster mempool defended data anchor against RBF that removed the OP_RETURN output.

    No bugs found. All policy rules enforced as designed.

  16. romanz commented at 6:22 pm on April 6, 2026: contributor
    ✔️ tACK electrs and bindex with RC2.
  17. itamarNov commented at 12:12 pm on April 7, 2026: none
    Tested v31.0rc2 on Fedora 43 (x86_64). Compiled from source. Unit tests and functional tests all passed. Also, using the testing guide - all guide tests passed as expected
  18. xyzconstant commented at 4:28 pm on April 9, 2026: none

    Tested v31.0rc2 on two machines (both built from source):

    • Apple M2 Pro (arm64), macOS 26.2
    • FriendlyElec NanoPC-T6 (aarch64, Rockchip RK3588), Ubuntu 22.04

    Both nodes participated in the consensus cleanup slow-blocks demo on signet and ran cleanly for 48+ hours. The NanoPC is also running v31.0rc2 on mainnet with no issues.

    I also followed the testing guide on both machines. All sections behaved as expected.

    Tested ACK v31.0rc2 (f0e2cbc5e5e07bad02ff30a5bb1f08632ce68cc3).

  19. pinheadmz commented at 7:08 pm on April 9, 2026: member

    testing on mainnet, guix-built:

    • GUI/macos
    • bitcoin-node (multiprocess) with sv2 template provider on x86 Debian
    • bitcoind on 32-bit arm

github-metadata-mirror

This is a metadata mirror of the GitHub repository bitcoin/bitcoin. This site is not affiliated with GitHub. Content is generated from a GitHub metadata backup.
generated: 2026-04-12 09:13 UTC

This site is hosted by @0xB10C
More mirrored repositories can be found on mirror.b10c.me