This week in Bitcoin Core
Bitcoin Core contributor kevkevin covers some of the latest updates...
What’s up subscribers! We’re pleased to introduce kevkevin, an open-source developer and reporter who’s going to be covering Bitcoin Core for the Insider Edition. Check out their first piece below.
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. Here’s what I found notable.
Merged PR’s
Every week, several changes are officially added to Bitcoin Core. This week 22 changes were merged. Here are some I thought were interesting from this week.
IBD optimizations by l0rinc
This change is part of speeding up initial block download.
Current block obfuscations are done byte-by-byte, this PR batches them to 64 bit primitives to speed up obfuscating bigger memory batches.
This is especially relevant now that #31551 was merged, having bigger obfuscatable chunks.
Anyone who has run a full Bitcoin node knows that the initial block download (IBD) takes a long time, spanning from days to weeks. According to the benchmarks, this speeds up IBD by 4%. While 4% may seem like a small amount, if IBD took a week, you’d save 6.72 hours.
RPC: Add reserve member function to UniValue and use it in blockToJson function by ismaelsadeeq
This change was motivated when Ismaelsadeeq noticed that when trying to use “getblock sequentially on a large number of blocks was slow while checking for clusters of size > 2 in previously mined blocks".
By adding a .reserve member function to UniValue, this issue can be prevented.
Open PR’s
There are always changes getting updated and reviewed in real time. Here are some notable PR’s that are still up and are looking for reviews.
Reduce minrelaytxfee to 100 sats/kvB by RobinLinus
This pull request was a direct result of miners mining sub-1 sat/vbyte transactions. Currently, in Bitcoin Core, there is a mempool relay policy where transactions with a fee rate of less than 1 sat/vbyte are not forwarded to peers.
In this pull request, Robin Linus suggests we drop that value to 0.1 sat/vbyte. This change is a bit controversial, especially since the relay policy has been a hotly debated topic this year.
I believe that dropping the minimum is a race to the bottom, but if miners are mining sub-1 sat/vbyte transactions relay policy should reflect that.
refactor: Improve assumeutxo state representation by ryanofsky
https://github.com/bitcoin/bitcoin/pull/30214
While it may not directly benefit the lives of Bitcoin Core node runners, this pull request aims to refactor assumeutxo to make it more maintainable. As most developers know, you don’t just “add” code; you have to maintain that code for the rest of eternity.
This change stops assumeutxo from locking cs_main when it doesn’t have to and also removes confusing terminology like “active chainstate," "usable chainstate," "disabled chainstate," "ibd chainstate," and "snapshot chainstate".
To me, this is a great change since more readable code is easier to maintain!
IRC meeting notes
Every week on Thursday, there is an IRC meeting. Here are some short notes from that meeting.
Stratum v2 WG Update (sjors)
MuSig2 WG Update (achow101)
No changes since last, #31244 is still probably rfm (ready for merge).
orphan resolution WG Update (glozow)
#31829 was merged (yay!!!!), so now (glozow) is working on the followups in #32941
This pretty much wraps up orphan resolution (glozow updated the Known TxOrphange Problems file)
After the follow-ups, she thinks we can go back to package validation (and then bip331)
QML GUI WG Update (jarolrod, johnny9dev)
pinheadmz's PR to add bitcoin submodule building with Qt6 was approved and merged into the qt6 branch. (bitcoin-core/gui-qml#475)
Hebasto has switched the default branch of the project to the 'qt6' branch
Johnny9dev has started adding additional fixes and migrating their previous work over to the new branch
For the full IRC meeting checkout the meeting in minutes
Releases
libsecp256k1 v0.7.0
This release is primarily a maintenance release. Besides many minor internal fixes and improvements, a handful of changes affect the public API and thus break API and ABI compatibility.
This is also reflected in Bitcoin Core as the libsecp256k1 subtree was updated to b9313c6
Thank you for reading. Be sure to tune in again next week for your updates on Bitcoin Core!