v31.1rc1 is now available - This Week in Bitcoin Core #49
version 31.1 rc1 is out...
Hello 👋 folks, I’m kevkevin. I’m an open-source developer and reporter for Insider Edition. Last week, I reviewed several pull requests from the Bitcoin Core repo.
This week, a few new release candidates of Bitcoin Core have been pushed out. Go out there and give them a test!
Merged PR’s
Every week, several changes are officially added to Bitcoin Core. This week, multiple changes were merged. Here are some I found interesting this week.
wallet: Add exportwatchonlywallet RPC to export a watchonly version of a wallet by achow101
In this pull request, Ava Chow added a new RPC command, exportwatchonlywallet. This helps users who want an airgapped setup. This RPC will create a wallet file with the public descriptors to avoid exposing the specific internals to the user.
Before this PR, creating that online watch-only counterpart was a manual, error-prone process but now it has become much more streamlined with the exportwatchonlywallet RPC.fuzz: add ipc round-trip fuzz target by enirox001
More fuzz tests are being added this week, and this week Enoch Azariah had his PR merged, which added coverage to the IPC. This fuzz test added an IPC fuzz target to exercise the Cap'n Proto/libmultiprocess serialization bridge using an in-process two-way pipe and a reflected test interface.
As always, additional testing and fuzzing are welcome to the Bitcoin Core project, and who knows, maybe this fuzz test will find a bug in the future.
There are always changes being updated and reviewed in real-time. Here are some notable PR’s that are still up and looking for reviews.
refactor: Add util::Result failure types and ability to merge result values by ryanofsky
Add `util::Result` support for returning more error information and make use of it in [LoadChainstate method](https://github.com/bitcoin/bitcoin/pull/25665/commits/753b8678ac98c8753f9db17cc92d56d4d58d9e7e) as an initial application. Followup PRs [#25722](https://github.com/bitcoin/bitcoin/pull/25722) and [#29700](https://github.com/bitcoin/bitcoin/pull/29700) use it more broadly to return errors and warnings from wallet and kernel functions as well. This change adds two major features to the result class: - For better error handling, adds the ability to return a value on failure, not just a value on success. This is a key missing feature that makes the result class not useful for functions like `LoadChainstate()` which produce different errors that need to be handled differently [^1]. - For better error reporting, adds the ability to return warning messages and multiple errors, not just a single error string. This provides a way for functions to report errors and warnings in a standard way, and simplifies interfaces
IRC meeting notes
Every week on Thursday, there is an IRC meeting. Here are some short notes from that meeting.
--- Topic 1 ---
stickies-v: #topic Fuzzing WG Update (dergoegge, marcofleon)
marcofleon: no update
marcofleon: jk
sedited: :D
marcofleon: For in repo stuff, we have three recently merged harnesses related to LevelDB and our CDBWrapper, #34866 and #34887. These should help give some confidence to the changes in #35295 (formerly known as #31132)
marcofleon: I think #35118 is pretty much good to go, so now we have some IPC fuzzing. And then wrt to fuzz PRs, I’ll probably focus on #34651 and #34895 next, if anyone is interested.
marcofleon: dergoegge wrote this exceptional blog post on Bedrock and determinism in the hypervisor: https://brink.dev/blog/2026/06/25/bedrock-deterministic-hypervisor/. Fuzzing with Bedrock found a cheeky bug in our new http server, so that's very cool
marcofleon: nkaretnikov is helping out with Bedrock, specifically https://github.com/oss-garage/bedrock/issues/20. Nice, thank you
marcofleon: And then eugenesiegel is also making moves in Bedrock with https://github.com/oss-garage/bedrock/pull/54
marcofleon: They can elaborate more on the work if they'd like to. I think that's pretty much all I got for now. I can do semi regular updates from now on
dergoegge: lfg
andrewtoth: awesome!
eugenesiegel: stonks
stickies-v: big update, delivered
brunoerg: great!
dzxzg: sick
l0rinc: hi
--- Topic 2 ---
stickies-v: #topic Kernel WG Update (sedited)
sedited: A bunch of review went into #32427, it now supports external readers.
cfields: very cool, nice work fuzzers :)
sedited: More discussion going on in #35569 . I'd like to encourage reviewers to keep commenting, since this might set the direction to a bunch of further work.
sedited: I opened #35641 for introducing callback hooks exposing traces of the script interpreter state during script verification. This is useful for both debugging scripts and testing. This is surprisingly fun to hack on, since it allows for visualization of script interpreter operations.
marcofleon: lfg
sedited: There are also a bunch of pull requests waiting for another ACK or two before merge on the project board: https://github.com/orgs/bitcoin/projects/3
yancy: hi
sedited: that's all
--- Topic 3 ---
stickies-v: #topic Benchmarking WG Update (l0rinc, andrewtoth)
l0rinc: Pushed #35634 to save one byte per entry in txospenderindex in a backwards compatible way. This trick was also applied to the new txindex format.
l0rinc: i.e. #35531 - I think we should apply what we learned here to the new index as well
l0rinc: that's it from me
andrewtoth: Thanks for all review in #35295. Nothing else from me.
stickies-v: we haven't had updates from the silent payments WG in a while, so I'm moving that to the archive for now. if anyone wants to pick it up again, ping me and i'll add it back to the rotation
stickies-v: johnny9dev wrote the QML GUI WG updates before the meeting, you can read them here: https://www.erisian.com.au/bitcoin-core-dev/log-2026-07-02.html#l-218
--- Topic 4 ---
stickies-v: #topic QA WG Update (brunoerg)
brunoerg: Hi, about mutation testing for PRs, I'm trying a new setup where it uses an LLM to generate a human-readable report based on the mutation analysis results. The first experiment was in the Erlay impl's PR - you can see the report here: https://github.com/bitcoin/bitcoin/pull/35591#pullrequestreview-4593554791.
brunoerg: feedbacks are welcome, that's all
stickies-v: seems pretty verbose, might be useful to hyperlink instead or put it in details?
brunoerg: yes, I intend to hyperlink
stickies-v: if all the recommendations are important it's fine, but i find llms tend to not be great at estimating priorities/impact etc, so i tend to not be interested in most such assessments
dergoegge: They can be quite good if they don't just go off their own reasoning. If the estimate is result backed (e.g. mutation tests) then I've seen them to be better
stickies-v: Anything else to discuss?
sedited: forgot to mention that we now have a CI job (introduced in #31425) tracking whether the script verification code can be compiled and linked for a bare metal riscv target. This has surfaced bugs before, and is also a first step towards making a consensus library available for such a target, since it prevents future portability regressions.
brunoerg: yes, to become shorter I intend to not inform "What the current tests do well" and focus on what could/should be improved
stickies-v: alright, looks like that's it for today. see you next week folksRead here for the full meeting
Releases
Thank you for reading. Be sure to tune in again next week for your updates on Bitcoin Core!
If there are any comments, suggestions, or errors, do not hesitate to reach out or comment



