Skip to content

Finish off support for Bitcoin Core v31.0#615

Open
satsfy wants to merge 12 commits into
rust-bitcoin:masterfrom
satsfy:v31
Open

Finish off support for Bitcoin Core v31.0#615
satsfy wants to merge 12 commits into
rust-bitcoin:masterfrom
satsfy:v31

Conversation

@satsfy
Copy link
Copy Markdown
Contributor

@satsfy satsfy commented May 29, 2026

Closes #599

Completes v31 support across the client, types, and integration tests. Makes v31 the default version.

  • set v31 as the latest version and re-export the v31 types.
  • enabled the v31 integration tests.
  • Dropped the incorrect "fields changed" doc notes on several v31 types.

Fixed:

  • getpeerinfo (network): added inv_to_send and last_inv_sequence, and made startingheight optional now that it is only returned under -deprecatedrpc=startingheight.
  • logging (control): added the new kernel and privatebroadcast categories.
  • getwalletinfo (wallet): no longer returns paytxfee.
  • getdeploymentinfo (blockchain): added the script_flags field.
  • gettxspendingprevout (blockchain): fixed the result type to carry the new spendingtx and blockhash fields, plus added support for the new mempool_only and return_spending_tx arguments.
  • getblock (blockchain): added the coinbase_tx object returned at verbosity 1, 2 and 3.

Added:

  • cluster mempool (blockchain): new getmempoolcluster and getmempoolfeeratediagram RPCs, the chunk_weight and chunk_fee fields on getmempoolentry, getrawmempool, getmempoolancestors and getmempooldescendants, and the cluster_limit and optimal fields on getmempoolinfo.
  • private broadcast (raw transactions): new getprivatebroadcastinfo and abortprivatebroadcast RPCs.

LLM usage: Claude helped on generating tests for new RPCs, verifying things over and over again, attempting to call every RPC, spotting additional unfixed things, and reviewing every change the PR.

When appropriate, comments have been checked to match v31 documentation exactly.

satsfy added 12 commits May 29, 2026 18:18
New fields kernel and privatebroadcast.
RPC getwalletinfo no longer returns paytxfee
Add getmempoolcluster and getmempoolfeeratediagram RPCs.

Update getmempoolentry, getrawmempool, getmempoolancestors,
getmempooldescendants and getmempoolinfo with new field chunk_weight,
chunk_fee and cluster_limit fields.

Back-fill optional fields as None for earlier versions.
RPC getdeploymentinfo gets script_flags field.
This commit adds an Enum with the possible flags.
RPC gettxspendingprevout adds spending_tx and block_hash fields when
return_spending_tx is set.
RPC getblock gets new field coinbase_tx.
Commit backfills None for earlier versions.
Deny unknown fields.
Use i64 for peer timestamps because time can be emmited as a negative.
getblockfrompeer, disconnectnode, getnetworkinfo, getblocktemplate and
waitfornewblock each carried a a note that said the fields since v30,
but their modelled return types match v30.
Despite getmempoolfeeratediagram being a new RPC, it is hidden. It is
not included in the rustdoc method table.

Remove SetTxFee import because the RPC has been deleted but the
re-export had been kept.
Drop the v30_and_below gates from tests covering RPCs unchanged in v31.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Finish off support for Core v31

1 participant