Skip to content

[codex] Upgrade cluster mempool support to Bitcoin Core 31#18

Merged
btcneves merged 5 commits into
mainfrom
codex/fix-cluster-mempool-version-gate
May 9, 2026
Merged

[codex] Upgrade cluster mempool support to Bitcoin Core 31#18
btcneves merged 5 commits into
mainfrom
codex/fix-cluster-mempool-version-gate

Conversation

@btcneves
Copy link
Copy Markdown
Owner

@btcneves btcneves commented May 9, 2026

Summary

  • Upgrade the Docker regtest node from bitcoin/bitcoin:28 to bitcoin/bitcoin:31 so the project runs Bitcoin Core 31.0 by default.
  • Gate cluster mempool RPC compatibility on Bitcoin Core 31.0+, matching the official 31.0 release notes for getmempoolcluster and getmempoolfeeratediagram.
  • Probe registered RPCs with help <rpc> for compatible nodes instead of calling getmempoolcluster without arguments.
  • Use native getmempoolcluster(txid) data for /mempool/clusters when the connected node supports it, with the existing standard-mempool relationship fallback for older nodes.
  • Fix Live Simulation on Bitcoin Core 31 by reading wallet funds from getbalances instead of the removed/absent getwalletinfo.balance, so simulated transactions actually enter the mempool.
  • Add simulation lifecycle hardening so a crashed/dead simulation thread is not reported as still running.
  • Update PT-BR/EN-US UI copy and project documentation from 28+/BC28+/BC26 assumptions to 31+/BC31.
  • Clarify the Cluster tab when the connected node is pre-31: the version is labeled as the connected node, the UI shows an unsupported-RPC warning, and the visualization count says fallback groups instead of native clusters.
  • Add API tests covering /Satoshi:28.4.0/ as unsupported, Bitcoin Core 31.0 as using the help-based probe, and native cluster visualization via getmempoolcluster.

Root Cause

NodeScope displayed the connected node version correctly (/Satoshi:28.4.0/) but the Docker stack still shipped Bitcoin Core 28 while the cluster mempool RPCs were added in Bitcoin Core 31.0. After upgrading to Core 31, the Live Simulation still mined blocks but sent no transactions because it checked wallet balance via getwalletinfo.balance; on the current wallet RPC shape, that field is absent, so the simulator interpreted the balance as zero and kept mining instead of broadcasting txs.

Validation

  • docker compose pull nodescope-bitcoind -> pulled bitcoin/bitcoin:31.
  • docker compose up -d --force-recreate nodescope-bitcoind nodescope-api nodescope-monitor -> services healthy.
  • docker compose exec -T nodescope-bitcoind bitcoin-cli -regtest -rpcuser=nodescope -rpcpassword=nodescope getnetworkinfo -> version:310000, subversion:/Satoshi:31.0.0/.
  • curl -sS http://127.0.0.1:8000/health -> rpc_ok:true, chain:regtest.
  • curl -sS http://127.0.0.1:8000/mempool/cluster/compatibility -> supported:true for getmempoolcluster and getmempoolfeeratediagram.
  • curl -sS http://127.0.0.1:8000/simulation/status after rebuild -> running:true, txs_sent:1, errors:0.
  • curl -sS http://127.0.0.1:8000/mempool/summary -> nonzero mempool size after simulation tx.
  • curl -sS http://127.0.0.1:8000/mempool/clusters -> native clusters returned against Bitcoin Core 31.
  • docker compose exec -T nodescope-bitcoind bitcoin-cli -regtest -rpcuser=nodescope -rpcpassword=nodescope getmempoolfeeratediagram -> RPC exists and returns the mempool fee-rate diagram.
  • ./.venv/bin/python -m pytest -q -> 90 passed, 7 existing datetime deprecation warnings.
  • ./.venv/bin/ruff check . -> passed.
  • npm --prefix frontend run lint -> passed.
  • npm --prefix frontend run format:check -> passed.
  • npm --prefix frontend run typecheck -> passed.
  • npm exec vite build -- --outDir /tmp/nodescope-frontend-dist --emptyOutDir -> passed.

Notes

The normal local npm run build still cannot clean the existing frontend/dist directory because that old generated artifact is owned by nobody:nogroup. The bundle itself was validated by building to /tmp/nodescope-frontend-dist. Official Bitcoin Core 31.0 release notes: https://bitcoincore.org/en/releases/31.0/

@btcneves btcneves changed the title [codex] Fix cluster mempool version gate [codex] Upgrade cluster mempool support to Bitcoin Core 31 May 9, 2026
@btcneves btcneves marked this pull request as ready for review May 9, 2026 14:01
@btcneves btcneves merged commit 7089c7a into main May 9, 2026
5 checks passed
@btcneves btcneves deleted the codex/fix-cluster-mempool-version-gate branch May 9, 2026 14:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant