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. The merge with the most review this week puts the IPC connection cap on the bind address itself. There is no new global -ipcmaxconnections. -ipcbind takes the number after a comma: -ipcbind=unix:/path/to.sock,max-connections=8. Each listener defaults to 16 simultaneous clients, and will not go above 256.
The next merge by review activity is util::NotNull. The standard library has no type for a smart pointer that is not null. This one checks at construction, deletes assignment from nullptr, and refuses raw pointers. Call sites that used to Assert before a dereference now get that check from the type.
Thursdayโs #bitcoin-core-dev meeting, chaired by stickies-v, went through the working groups. Kernel logging landed as a struct instead of a formatted string, and the script-evaluation tracer is up for review. L0rinc left a note on an opt-in pruned assumevalid mode. The QML work is moving functions off the GUI thread. mutanthub can take a request for a mutation run on a pull request. The v32.0rc3 binaries are up.
The channel agreed to skip next weekโs meeting (I suspect because of TabConf). After it ended, Sedited said to keep testing the release candidate.
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.
Instead of a global -ipcmaxconnections, the IPC connection cap now lives on the address itself: -ipcbind=unix:/path/to.sock,max-connections=8. A global number canโt give two sockets different limits, and the inline form leaves room for more options later. Each listener defaults to 16 clients and tops out at 256. Extra clients can still connect, but they wait in the backlog until an accepted client disconnects.
Startup also checks the file descriptor budget before binding. Each -ipcbind costs one listening socket plus its connection slots, and the total has to stay at or under 257, otherwise init fails with โToo many IPC file descriptors requestedโ.
util: Add
util::NotNull<SmartPtrType>by MarcoFalke
std::reference_wrapper covers a raw pointer that canโt be null, but smart pointers had no equivalent short of an Assert at every use. util::NotNull Asserts the pointer at construction, deletes construction and assignment from nullptr, and rejects raw pointers. NotNullUniquePtr<T> and NotNullSharedPtr<T> are the shorthands, and get() still Assumes the pointer is non-null in case it was moved from.
The first users drop their manual checks: CDBWrapper::DBContext(), CoinsViewOverlayโs thread pool, CNode::m_transport, and CTxMemPool::GetChangeSet().
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.
This is the PR sedited asked for review on in the kernel update. alexanderwiederin is already calling it from rust-bitcoinkernel #230 for an experimental BIP440 integration.
The kernel C header gets a callback for the script interpreterโs state on each step. It is compiled only with -DENABLE_SCRIPT_TRACE=ON. Otherwise the hooks are stubs. Evaluation is split into frames. RAII records a start frame and an end frame for every run, and each instruction gets its own frame. The ScriptError from script_pubkey_verify is on those frames so the error code is visible in the trace. The same frames are a way to check that the interpreter did what a script test thinks it did, including under fuzzing.
This adds a callback hook to the kernel library C header for getting the current script evaluation state on each script evaluation step.
IRC meeting notes
Every week on Thursday, there is an IRC meeting. Here are some short notes from that meeting.
๐๐๐ถ๐ฐ๐ธ๐ถ๐ฒ๐-๐: There are no pre-proposed meeting topics this week. Any last minute ones to add?
๐๐๐ถ๐ฐ๐ธ๐ถ๐ฒ๐-๐: let's get going with the working groups!
--- Topic 1 ---
๐๐๐ถ๐ฐ๐ธ๐ถ๐ฒ๐-๐: #topic Fuzzing WG Update (eugenesiegel, marcofleon)
๐บ๐ฎ๐ฟ๐ฐ๐ผ๐ณ๐น๐ฒ๐ผ๐ป: no official update from me, but know that high quality fuzzing is occurring
๐๐๐ถ๐ฐ๐ธ๐ถ๐ฒ๐-๐: we will continue sleeping soundly
--- Topic 2 ---
๐๐๐ถ๐ฐ๐ธ๐ถ๐ฒ๐-๐: #topic Kernel WG Update (sedited)
๐๐ฒ๐ฑ๐ถ๐๐ฒ๐ฑ: Merged #34374, which gives kernel users a more flexible logging interface by providing a struct instead of a formatted string.
๐๐ฒ๐ฑ๐ถ๐๐ฒ๐ฑ: It also got rid of reliance on the logging module.
๐๐ฒ๐ฑ๐ถ๐๐ฒ๐ฑ: other than that I'm looking for review on #35641. alexanderwiederin is using it over here https://github.com/sedited/rust-bitcoinkernel/pull/230 for experimental BIP440 integration.
๐๐ฒ๐ฑ๐ถ๐๐ฒ๐ฑ: that's all.
--- Topic 3 ---
๐๐๐ถ๐ฐ๐ธ๐ถ๐ฒ๐-๐: #topic Benchmarking WG Update (l0rinc)
๐๐ฒ๐ฑ๐ถ๐๐ฒ๐ฑ: Copying from above: <l0rinc> I can't make today's meeting, but wanted to share https://github.com/bitcoin/bitcoin/issues/36476: an opt-in pruned assumevalid mode that downloads blocks without witnesses, buffers them in memory, then deserializes and connects them without writing blocks or undo data to disk. Early tests bring pruned IBD on a 2 GB Pi 4 from ~22 days to under a week (3 days on an earlier prototype), which could make low-end devices practical again.
๐๐๐ถ๐ฐ๐ธ๐ถ๐ฒ๐-๐: oh thanks, I missed that!
--- Topic 4 ---
๐๐๐ถ๐ฐ๐ธ๐ถ๐ฒ๐-๐: #topic QML GUI WG Update (johnny9dev)
๐ท๐ผ๐ต๐ป๐ป๐๐ต๐ฑ๐ฒ๐: We got a lot of really good feedback from testing last week. The preview build should be updated and I have been cleaning up the project board.
๐ท๐ผ๐ต๐ป๐ป๐๐ต๐ฑ๐ฒ๐: the focus right now is finalizing some UX, moving every function off of the gui thread and adding regression tests around that, and then finalizing the feature set for the staging/upstream to bitcoin/bitcoin
๐ท๐ผ๐ต๐ป๐ป๐๐ต๐ฑ๐ฒ๐: thats all
๐๐๐ถ๐ฐ๐ธ๐ถ๐ฒ๐-๐: thanks for the updates!
--- Topic 5 ---
๐๐๐ถ๐ฐ๐ธ๐ถ๐ฒ๐-๐: #topic QA WG Update (brunoerg)
๐ท๐ผ๐ป๐ฎ๐๐ฎ๐ฐ๐ธ: nice work (kernel and ibd)
๐ฏ๐ฟ๐๐ป๐ผ๐ฒ๐ฟ๐ด: mutanthub now has a dedicated page to request a mutation analysis for a pull request - https://mutanthub.space/projects/bitcoin/bitcoin/requests#request-a-run
๐ฏ๐ฟ๐๐ป๐ผ๐ฒ๐ฟ๐ด: so if you'd like a mutation testing run for your PR, please request there
๐ฏ๐ฟ๐๐ป๐ผ๐ฒ๐ฟ๐ด: that's all
๐ท๐ผ๐ป๐ฎ๐๐ฎ๐ฐ๐ธ: (and gui)
๐๐๐ถ๐ฐ๐ธ๐ถ๐ฒ๐-๐: anything else to discuss?
๐๐ฒ๐ฑ๐ถ๐๐ฒ๐ฑ: no meeting next week?
๐๐๐ถ๐ฐ๐ธ๐ถ๐ฒ๐-๐: sgtm
๐๐น๐ถ๐๐ฏ๐ฟ__: yup
๐๐น๐ถ๐๐ฏ๐ฟ__: sgtm too
๐๐๐ถ๐ฐ๐ธ๐ถ๐ฒ๐-๐: grazie a tutti
๐๐๐ถ๐ฐ๐ธ๐ถ๐ฒ๐-๐: #endmeeting
๐๐ฒ๐ฑ๐ถ๐๐ฒ๐ฑ: and keep testing the release candidate!
Releases
The
v32.0rc3binaries are now published: bitcoincore.org/bin/bitcoin-core-32.0/test.rc3 (tagged by fanquake).
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.



