OpenSats Work-Log 6
Thursday, July 31, 2025This is a copy of the 6th work-log I sent to OpenSats for my LTS grant.
Disclaimer: Some information that is not (or not yet) meant to be published may have been redacted.How did you spend your time?
In May, June, and July of 2025 I finished mainnet-observer up and launched it, gave a talk on my peer-observer project at the Prague dev/hack/day 2025 and published a blog post about it, and more. I also took some time off to touch some grass, recharge, and enjoy summer a bit.
Publications:
- I’ve written down my notes on the discovery of the Bitcoin Core DoS: “DoS due to inv-to-send sets growing too large” from May 2023. I think that having these documented somewhere is helpful and allows me to link to it. https://b10c.me/observations/15-inv-to-send-queue/
- At the Prague dev/hack/day 2025 I gave a talk about my peer-observer project with the goal of monitoring the Bitcoin P2P network for attacks and anomalies. https://b10c.me/talks/#peer-observer-a-tool-and-infrastructure-for-monitoring-the-bitcoin-p2p-network-for-attacks-and-anomalies
- As the talk wasn’t recorded, I also published a blog post on peer-observer to reach a wider audience and to have the project idea written down somewhere. https://b10c.me/projects/024-peer-observer/. I also have a section on a potential Bitcoin Network Operations Collective, which is something I want to further explore in the coming months.
mainnet-observer
The mainnet-observer project is an Open-Source rewrite of my 2017 transactionfee.info project (semi-closed source). It shows blockchain statistics interesting for developers and power users and is useful to make data-based decisions for protocol development. Over the course of April and in early May, I finalized an initial version ready for publishing.
In May, this included:
- a new chart for UTXO set composition over time which partly addressed Murch’s issue #14 New chart request: UTXO set composition over time
- A pie chart for pool hashrate distribution including AntPool & friends in #76 to have an updating version of the chart published at the bottom of Bitcoin Mining Centralization in 2025
- A block-weight chart in #80
- Charts for some OP_RETURN meta-protocol usage in #79
- some minor and last-minute visual fixes like #71, #73, #75, #81, #82
peer-observer
Next to speaking about peer-observer and announcing the project in my blog post (see publications at the top), I also worked on a few things that had been on my list for a while.
- #173 adds documentation and usage instructions on how to use the peer-observer tools - this helps with new contributors (coming from the talk and blog post) trying the tools
- Initially, peer-observer was only using the eBPF/USDT interface of Bitcoin Core. The RPC interface can provide useful information too, especially stateful information. To use this data, I implemented an RPC-extractor with initially data from
getpeerinfoin #191. More RPCs to implement are tracked in #199. This also caused of followup issues with other ideas to implement linked from the PR. As part of the RPC-exporter I also fixed thegetpeerinfoRPC implementation of rust-bitcoin/corepc https://github.com/rust-bitcoin/corepc/pull/310 - Some general maintenance in #171 and #172
- Clube Bitcoin Universidade de Brasília has been starting to setup their own peer-observer infrastructure with my help. So I made some small contributions on their infra structure: https://github.com/ClubeBitcoinUnB/peer-observer-docker/pull/2
fork-observer
With “1sat/vbyte summer”, monitoring for stale blocks has become more important again as stale-blocks are an indication for poor network block propagation. By connecting to public electrum servers, we have a much better view into the network by having much more data sources. So I implemented Electrum backend support for fork-observer and set my instance up to connect to a bunch of public electrum servers on mainnet, testnet, testnet4, and signet.
misc
- I started thinking about an IPC-based tracing interface for tracing Bitcoin Core (as opposed to the current USDT/eBPF interface), and asked ryanofsky, who has been spearheading the Bitcoin Core IPC and multiprocess work, for his thoughts on this in https://github.com/bitcoin-core/libmultiprocess/issues/185. He was so kind to write a quick demo of how this would look like. I haven’t found the time to dive into it, but I see this as worthwhile project to explore.
- continued to maintain the website of the Frankfurt Bitcoin Meetup June meetup, July meetup
- maintained github-metadata-mirror project with #6 and #8
- Helping to organize an upcoming CoreDev event
- Bitcoin Core GUIX sigs for v28.2 and its release candidates: https://github.com/bitcoin-core/guix.sigs/pulls?q=is%3Apr+author%3A0xB10C+is%3Aclosed
My open-source work is currently funded by an OpenSats LTS grant. You can learn more about my funding and how to support my work on my funding page.
Text and images on this page are licensed under the Creative Commons Attribution-ShareAlike 4.0 International License