OpenSats Work-Log 5
Wednesday, April 30, 2025This is a copy of the 5th 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?
Publications & Talks
- Continued my “Stats on compact block reconstructions”: thread by posting an update and some of the current work: https://delvingbitcoin.org/t/stats-on-compact-block-reconstructions/1052/24
- I’ve took a closer look at the invalid jobs by AntPool and friends during forks: https://b10c.me/observations/14-antpool-and-friends-invalid-mining-jobs/
- I wrote about mining centralization and how we currently have only 6 blocks producing >95% of the templates. Also introduced a mining centralization index: https://b10c.me/blog/015-bitcoin-mining-centralization/
- Did a talk for Chaincode’s BOSS program on Bitcoin monitoring
- Held the third FFM Socratic Seminar with fjahr: https://btcffm.org/#2025-04-16
mainnet-observer
https://github.com/0xB10C/mainnet-observer
An open-source refresh of my transactionfee.info (closed source) project showing protocol level bitcoin statistics.
Over the last months, I’ve spent a bit of time to get this project closer to a point where it’s ready to be used. The original transactionfee.info project was started in 2017 and I did a refresh of it in early 2020. I think it’s important to know how the network and blockspace is used to reason about protocol changes, make data-based development decisions, and to generally be aware of how the Bitcoin network is being used. Since the old Go backend was hard to maintain and the handrolled D3.js frontend was brittle, I choose to rewrite the back- and frontend to be more maintainable and easy to work with. This also allowed me to open-source the code. READCTED
While I will host an instance on https://mainnet.observer, the site is complelty self-hostable. As of writing, the project features close to 100 charts and I plan to add more over time.
Bitcoin Core
- attended CoreDev meeting: Next to the usual CoreDev program, I held a session on current data and monitoring efforts and two sessions about issues with Bitcoin Core self-hosting their CI
- self-hosted CI: I mentioned the current self-hosted CI problems in my last progress report. At CoreDev, I wanted to figure out if it’s worthwhile for me to spend my time on it. After presenting and brainstorming on this at CoreDev, I came to the conclusion that I want to cut back my time spent on CI stuff for now. Other contributors agreed that the current self-hosted CI situation is not optimal and we started looking into alternatives. As of writing these efforts have pretty much died down for now. See this issue for some of the discussion https://github.com/bitcoin/bitcoin/issues/31965
- Code wise, I only ended up PRing
test, tracing: don't use problematic bpf_usdt_readarg_p()#31848 during the last three months. - As mentioned in https://delvingbitcoin.org/t/stats-on-compact-block-reconstructions/1052/24, I’ve been working on a PR for predicitvly prefilling compact blocks with transactions a node would likely have to request otherwise. I noticed problems in the fuzztest that covers this part of the code and have been speaking with the author of the fuzz test on how to best resolve them. Hope to pick up work on this again soon!
- As usual, contributed my GUIX sigs for the v29.0 release (and release canidates): https://github.com/bitcoin-core/guix.sigs/pull/1626
- REDACTED
- REDACTED
peer-observer
https://github.com/0xB10C/peer-observer
A tool used to monitor for attacks and anomalies by hooking into the Bitcoin Core tracepoints.
- Until May 2025, MIT DCI was sponsoring six peer-observer monitoring nodes. REDACTED. Subsequently I moved the nodes to different servers.
- Add python tool to record getblocktxn msgs: I’ve used this tool for my research on compact block reconstruction. I posted preliminary results of it in the devling post linked above.
- I’ve also been mentoring someone interested in this project and helping him make his first contributions there
Misc
- I opened PR bitcoind: 28.1 -> 29.0 #398586 to upgrade the Nix Bitcoin Core package to v29.0. This was more work than usual as the build system changed with the v29 release.
- For the bitcoin-data/stale-blocks dataset I maintain, we decided to add the full stale blocks there too as they might be interesting for future analysis. See #7, #8, and #11
- In https://github.com/0xB10C/nix/pull/98, I added systemd hardening measures for the NixOS modules of my tools. This should make them somewhat more sandboxed and isolated for everyone wanting to run them.
What do you plan to work on next quarter?
- continue the work on my predictivly prefilling compact blocks Bitcoin Core PR
- continue working on peer-observer: This includes a presentation and possible an announcement blog post, but also implementing more data extractors like an RPC extractor (https://github.com/0xB10C/peer-observer/issues/141)
- getting mainnet-observer ready and an initial version out. And add more metrics and charts as needed.
- maintain and continue working on all the other small side projects I have
Next to work:
- take some time off: I’ve been feeling a bit over-worked for the past half year and I think it’s healthy to take a few days off to enjoy summer and touch some grass. I’ve been very happy to see people like e.g. @bboerst looking into stratum stuff, which allows me to focus more on my other projects. I really hope other people find fun in doing some network monitoring too - sometimes I’ve been feeling overwhelmed by the all the projects that could and should be done, but aren’t.
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