This week in Bitcoin Core
Bitcoin Core contributor kevkevin covers some of the latest updates...
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, <xx> changes were merged. Here are some I thought were interesting from this week.
refactor: CFeeRate encapsulates FeeFrac internally by polespinasa
This change is a refactor of CFeeRate; before this pull request, it did not use FeeFrac (A type to represent a fraction).
While this might just be a refactor, meaning it doesn’t change the functionality of anything. This PR can be the basis for using multiple units on RPC calls, as laid out in this issue. Migrate from BTC/kvB to sat/vB on RPC and startup options.refactor: Convert uint256 to Txid by marcofleon
This refactor has gotten some recent review, taking every instance of uint256 and converting it to Txid when it makes sense. After this PR is merged, Txid and Wtxid will become fundamental types in the Bitcoin Core codebase. Because Txid and Wtxid are used quite often, this PR touches 75 files and thus needs a good amount of review.
Introduce per-txin sighash midstate cache for legacy/p2sh/segwitv0 scripts by sipa
This code introduces changes to the script interpreter file meant for interpreting Bitcoin Script.
Introducing a per-txin cache for sighash midstate computation for legacy (bare), P2SH, P2WSH, and P2WPKH. This helps mitigate quadratic hashing attacks for standard transactions. This does not apply to non-standard transactions; these attacks can still happen.
Jameson Lopp has posted an article before that explains the quadratic hashing attacks.util: detect and warn when using exFAT on MacOS by willcl-ark
This change has a straightforward motive. A user nym21 reported having issues with crashes on Mac OS Sonoma when using an ExFAT external SSD. Then, through some conversation on the issue, they revealed that they were using exFat file system.
This is what led to the creation of this PR. Though it does not resolve the issue completely, it instead gives a warning to the user that they are using an exFAT, which is known to have intermittent corruption problems on macOS
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 looking for reviews.
rpc: Handle -named argument parsing where '=' character is used by zaidmstrr
If you ever used different command line interfaces (cli) before then you would know that they sometimes format their inputs differently.
For example you might have (var <value>, var=value, etc).
In this PR zaidmstrr mentioned that when using the -named with finalizepsbt, decodepsbt, verifymessage commands and then entering the psbt which may include “=” it causes an issue. Because it expects a variable after when it is just part of the psbt text.
This PR creates a vRPCStringParams which just identifies parameters that need special handling.log: rate limiting followups by Crypt-iQ
This is a follow-up to log: Mitigate disk filling attacks by rate limiting LogPrintf, LogInfo, LogWarning, LogError. The goal of that PR was to prevent malicious actors from trying to spam your log thus filling up your disk and crashing your node.
This PR is currently looking for review
IRC meeting notes
Every week on Thursday, there is an IRC meeting. Here are some short notes from that meeting.
Erlay WG Update (sr_gi, gleb)
sr_gi[m]1: I've been cleaning up and redesigning some parts of the full Erlay implementation so it's easier to follow, using txdownloadman as reference. I've also been adding all the missing unit tests and expanding part of the functional
Kernel WG Update (TheCharlatan)
TheCharlatan: Steady progress on the API side, lots of discussions happening there, but seems like we are slowly coalescing on a common approach. Hunting for ACKs in #33078 - should be close to merge now, it simplifies some of our API code a little bit. Also had a steady stream of new contributors over the past few weeks, both looking to help flesh out the API, and write some new applications.
Benchmarking WG Update (josie, l0rinc)
l0rinc: Since we have added a warning for large dbcache flushes in previous release in #31534, it would be good if we could add a related optimization for speeding up the slow flushes, see #31645. The change is only adjusting the already-configurable defaults, but has a measurable effect on a critical part of IBD performance.
Cluster Mempool WG Update (sdaftuar, sipa)
sipa: opened what i think is the last txgraph pr for now. then time to review cluster mempool PR itselr
MuSig2 WG Update (achow101)
achow101: No updates this week, please review #29675
QML GUI WG Update (jarolrod, johnny9dev)
johnny9dev: was away on family vacation for the last week so getting caught up again. before I left there were a few PRs added for getting the new branch up to the feature set that I have in my personal fork. short term, the focus is just to catch up the send and payment request features. another contributor, deer-gee is looking to upstream some events so he can complete his assumeutxo interface as well so that will likely start soon.
Script Validation WG Update (fjahr)
fjahr: There was some further development on the batch validation secp PR (review still welcome) but it still lacks pippenger support, I will probably wait a bit with rebasing the core PR until that’s the case. That’s it from me.
30.0 feature freeze
achow101: https://github.com/bitcoin/bitcoin/milestone/72 Anything to add or remove from the mileston? And please review things in the milestone. Feature freeze is in 6 days
Checkout the IRC log to read the full discussion
Releases
No releases this week
Thank you for reading. Be sure to tune in again next week for your updates on Bitcoin Core!