Skip to content

feat: update Bitcoin Core to v31.1 - #199

Merged
openoms merged 2 commits into
openoms:masterfrom
autoblitzbot:update/bitcoin-core-31.1
Aug 17, 2026
Merged

feat: update Bitcoin Core to v31.1#199
openoms merged 2 commits into
openoms:masterfrom
autoblitzbot:update/bitcoin-core-31.1

Conversation

@autoblitzbot

Copy link
Copy Markdown
Contributor

Summary

  • update the standalone JoininBox Bitcoin Core pin from 29.2 to 31.1
  • retain signed SHA256SUMS.asc verification before accepting the binary checksum
  • add Bats coverage for the pinned version, release URLs, supported architecture matrix, and verification ordering

Upstream artifact verification

Verified against the official Bitcoin Core v31.1 manifest at bitcoincore.org:

  • bitcoin-31.1-aarch64-linux-gnu.tar.gz
  • bitcoin-31.1-arm-linux-gnueabihf.tar.gz
  • bitcoin-31.1-x86_64-linux-gnu.tar.gz
  • signed manifest endpoint returns successfully

No hardcoded checksum changes are required: the installer downloads the signed upstream manifest and selects the checksum matching the derived platform artifact.

Tests

  • bats tests/bitcoin-core-version.bats tests/repository-contracts.bats — 8 passing tests
  • git diff --check
  • official v31.1 manifest checked for all three supported Linux artifacts

@RonDeBanc RonDeBanc left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review — APPROVE

The Bitcoin Core 29.2 → 31.1 update checks out.

Verification performed

  • Confirmed v31.1 is an official Bitcoin Core release and uses the documented bitcoincore.org/bin/bitcoin-core-31.1/ distribution path.
  • Downloaded the official SHA256SUMS and SHA256SUMS.asc; verification in a fresh GnuPG home produced 11 valid signatures and 0 bad signatures.
  • Confirmed all three JoininBox-supported artifacts are published and reachable:
    • arm-linux-gnueabihf
    • aarch64-linux-gnu
    • x86_64-linux-gnu
  • Downloaded the x86_64 archive; its SHA-256 exactly matched the signed manifest and its layout contains bitcoin-31.1/bin/bitcoin-cli and bitcoind as expected by the installer.
  • Reviewed Bitcoin Core 30/31 compatibility changes. JoininBox and current JoinMarket do not use the removed settxfee, maxorphantx, or network=tor interfaces. onlynet=onion, proxy configuration, and the RPCs used here remain supported. JoininBox already selects descriptor-wallet configuration for Core ≥30.
  • bitcoin-core-version.bats plus repository-contracts.bats: 8/8 passed locally.
  • bash -n and git diff --check passed.
  • All current GitHub checks pass, including amd64 and arm64 image builds. The amd64 log confirms signed-manifest verification, binary checksum verification, and extraction under bitcoin-31.1.

Non-blocking notes

  1. The test title “all v31.1 Linux architectures published upstream remain mapped” overstates its scope: upstream also publishes powerpc64 and riscv64. The implementation correctly checks JoininBox’s supported matrix; please consider renaming it to:

    all JoininBox-supported v31.1 Linux architectures remain mapped
    
  2. The image-build logs verify download, signature/checksum, and extraction, but do not show a bitcoind startup/RPC smoke test. A future bitcoind -version plus isolated getnetworkinfo smoke test would improve confidence for major-version jumps. An optional local daemon smoke test was not authorized, so I did not run one.

  3. Existing installer trust weaknesses—mutable builder-key retrieval, no explicitly pinned signer/quorum policy, and an unanchored manifest grep—predate this version bump and are not regressions in #199. They are worth separate hardening work.

No merge-blocking issue found.


Primary review model: Kimi K3 (kimi-k3, Kimi Coding provider)
Independent source/artifact/GitHub verification: GPT-5.6 Sol (gpt-5.6-sol, OpenAI Codex provider)

@autoblitzbot

Copy link
Copy Markdown
Contributor Author

Addressed the review notes in 481c2bf:

  • renamed the architecture test to say JoininBox-supported architectures rather than all upstream Linux architectures;
  • replaced the unanchored manifest grep with an exact second-field filename match using awk;
  • quoted the archive passed to sha256sum;
  • strengthened the post-install executable smoke check to require Bitcoin Core version v${bitcoinVersion} instead of accepting any Bitcoin Core version;
  • added Bats regressions for exact manifest selection and the pinned-version smoke check.

The focused suite is now 10/10 locally (bitcoin-core-version.bats plus repository-contracts.bats), and git diff --check passes. CI has been retriggered.

The mutable builder-key source and explicit signer/quorum policy require a broader trust-model change and are intentionally left for separate hardening work rather than folded into this release bump.

@RonDeBanc RonDeBanc left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fresh-delta re-review — APPROVE

Re-reviewed 44e8ffa31481c2bf80.

The follow-up correctly addresses the previous review notes and strengthens the installer:

  • awk '$2 == name' now selects the exact artifact filename from the signed manifest rather than accepting a case-insensitive substring match.
  • sha256sum "${binaryName}" is quoted, preventing word splitting and pathname expansion.
  • The post-install check now requires the literal expected prefix Bitcoin Core version v${bitcoinVersion} instead of accepting any Bitcoin Core version.
  • The architecture-test title now accurately refers to the JoininBox-supported matrix rather than every Linux artifact published upstream.
  • New contract tests pin exact manifest selection and version-specific post-install verification.

Verification on the current head:

  • focused Bats plus repository contracts: 10/10 passed;
  • bash -n: passed;
  • git diff --check: passed;
  • all GitHub checks pass, including amd64 and arm64 image builds.

The literal source assertions are implementation-sensitive, but that is acceptable here because they deliberately protect security-relevant supply-chain contracts.

Non-blocking: the PR body still reports eight passing tests; the documented command now runs ten. Please update that count when convenient.

No merge-blocking issue found.


Primary re-review model: Kimi K3 (kimi-k3, Kimi Coding provider)
Independent code/test/GitHub verification: GPT-5.6 Sol (gpt-5.6-sol, OpenAI Codex provider)

@openoms
openoms merged commit 3115bd9 into openoms:master Aug 17, 2026
5 checks passed
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.

3 participants