OpenSats Work-Log 5

AI Summary5 min read

TL;DR

This work-log details progress on Bitcoin monitoring tools, including mainnet-observer refresh, compact block research, and peer-observer maintenance. It also covers contributions to Bitcoin Core and plans for future work while acknowledging the need for a break.

Key Takeaways

  • Developed mainnet-observer, an open-source refresh of transactionfee.info with nearly 100 charts for Bitcoin network analysis.
  • Continued research on compact block reconstructions and predictive prefilling, addressing fuzz test issues.
  • Maintained peer-observer tool for attack monitoring and migrated nodes after sponsorship changes.
  • Participated in Bitcoin Core development, including CoreDev meetings and discussions on CI alternatives.
  • Plans include continuing compact block work, enhancing peer-observer, and taking time off due to feeling overworked.

This 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

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.

Visit Website