On August 8th, 2026, Bitcoin block 961632 was mined. This marked the start of the “mandatory signaling” for BIP-110 , which meant all blocks not signaling on version bit 4 would be rejected by a node implementing BIP-110. This resulted in a fork, which I livestreamed by showing a modified version of my fork.observer . While it wasn’t clear if there would be blocks found on the…
This is a copy of the 10th 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. What did you work on? In May, June, July of 2026 I’ve worked on peer-observer and it’s infrastructure to collect more data that will be helpful in analyzing network problems in the future. This includes, for…
Earlier this week, I produced a Nix-built bitcoind binary for Bitcoin Core v31.0 whose hash exactly matches the official Guix-built x86_64-pc-linux-gnu release binary. The result came out of a three year old side project, with a difficult goal: Can a binary built with Nix be made bit-for-bit identical to one produced by Bitcoin Core’s Guix reproducible build system? Update 2026-06-15: While…
I joined Murch, Gustavo and Mike on the Bitcoin Optech Newsletter #406 Recap Podcast to talk about TCP holepunching and peer-observer P2P monitoring tools, which both were mentioned in the Optech Newsletter #406 . Bitcoin Optech Newsletter #406 Recap Podcast
This is a copy of the 9th 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. What did you work on? In February, March, and April of 2026, I flew to Brazil to mentor upcoming Vinteum and B4OS devs as well as to give multiple talks at btc++, worked on peer-observer by writing code and reviewing code,…
During last week’s demonstration of slow blocks on Signet , I ran a custom P2P client that connected to all ~190 listening Signet nodes on IPv4 and Tor. The goal was to measure block propagation speed through the network as well as block validation speed on a per node basis . Originally posted on bnoc.xyz . The results show that block propagation was significantly impacted as the nodes need to…
In April 2026, Antoine Poinsot and Anthony Towns publicly demonstrated a few slow-to-validate blocks on the Signet test network. These blocks are currently valid, but would be invalid under the BIP-54 Consensus Cleanup rules. I covered this event by streaming the behavior of a Bitcoin Core (affected) and a Bitcoin Inquisition (unaffected) node. I used a signet setup of my peer-observer tooling and…
You’re running a Bitcoin node on the same machine as your (Firefox) web browser? Yeah, I and everybody else can tell… localprobe is a small JavaScript snippet I built at the btc++ Floripa 2026 exploits hackathon , where it won 2nd place. It detects whether you are running a Bitcoin node on the same machine as your Firefox browser and alerts you if so. NOTE: Since August 2026 and…
I did a recap on the a network wide DoS bug and highlighted a metrics that we are monitoring now to catch similar bugs in the future. Slides (Google Slides)
I held a four hour long monitoring workshop for the current Vinteum Bitcoin Developer Launchpad cohort. I talked about my experience working on open-source Bitcoin projects over the last few years and I went over my Map of Bitcoin Monitoring I created as an overview for this workshop. Slides (Google Slides) Map of Bitcoin Monitoring
This is a copy of the 8th 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. What did you work on? In November and December 2025, and January of 2026, I primarily focused on building out peer-observer tooling and infrastructure, but also worked on mainnet-observer, posted to the Bitcoin Network…
In this episode, Stephan Livera and I discusses my work in the Bitcoin ecosystem, focusing on the importance of censorship resistance, the role of mining pools, and the implications of OFAC sanctions on Bitcoin transactions. I introduce my peer-observer project aimed at monitoring the Bitcoin P2P network for anomalies and attacks, and highlight the need for a collaborative approach to Bitcoin…
I presented about “Monitoring Bitcoin’s P2P network: Insights from the peer-observer Project” at the Chaincode Labs Bitcoin Research Day 2025 . Slides (Google Docs)
This is a copy of the 7th 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:…
Localhost Research supported my peer-observer project by sponsoring three servers for a demo instance, which can be found on demo.peer.observer . Compared to the public.peer.observer instance, this allows everyone to explore the metrics and data extracted from two Bitcoin Core nodes, while no information about the “production” honey pot nodes is leaked. The full NixOS infrastructure is…
This 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.…
Over the past few years, I’ve been working on monitoring tools for the Bitcoin network. One of these projects is peer-observer : A tool and infrastructure for monitoring the Bitcoin P2P network for attacks and anomalies. This post describes the motivation for starting yet another Bitcoin network observer. It details how the tool works, what my honeypot infrastructure looks like, and finishes…
In October 2024, the Bitcoin Core project disclosed a Denial-of-Service due to inv-to-send sets growing too large , which I authored, for Bitcoin Core versions before v25.0. I have a few notes and screenshots from my investigation back then that I want to persist here. In early May 2023, my monitoring infrastructure noticed this bug affecting mainnet nodes, which allowed me to pinpoint where the…
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 Continued my “Stats on compact block reconstructions”: thread by posting an update and some of the current work:…
This post explores Bitcoin Mining Centralization in 2025 by looking at the hashrate share of the current five biggest mining pools. It presents a Mining Centralization Index and updates it with the assumed proxy pooling by AntPool & friends. It shows that Bitcoin mining is highly centralized today, with only six pools mining more than 95% of the blocks. In the current Bitcoin mining landscape,…
Looking deeper into @boerst’s recent observation about invalid mining jobs by AntPool & friends to discuss his hypothesis about “selfish mining” and “glitchy template code”. I conclude that it’s probably a bug in AntPool’s coinbase creation code and agree with @boerst’s conclusion that this is another good data point for proxy pooling of…
This is a copy of the 4th 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. What did you work on? Publications My mininpool-observer project detected 15 OFAC sanctioned transactions missing from blocks. After analyzing them to rule out false-positives, I concluded that F2Pool is filtering transactions…
My miningpool-observer project aims to detect when Bitcoin mining pools are not mining transactions they could have been mining. Over the past few weeks, it detected fifteen missing transactions spending from OFAC-sanctioned addresses. This post examines whether these transactions were filtered intentionally or if there are other possible explanations for these transactions to be missing from…
This is a copy of the 3rd 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 Block Template Similarities between Mining Pools : Using the Stratum jobs I’ve collected with my stratum-observer project, I was able to show that the block templates…
I joined Gloria and Niklas on the brink.dev podcast to talk about the recently disclosed Bitcoin Core pre-25.0 vulnerabilities. Episode 6: Discussing Pre-25.0 Bitcoin Core Vulnerability Disclosures
Different mining pools sending out the same or a similar block template to miners is an indicator for proxy pooling. Knowing about proxy pools is important when discussing mining pool centralization. To find similarities between mining pool block templates, I compare the Merkle branches pools sent in the stratum jobs and calculate a similarity score. This shows pools with similar templates and…
I spoke at the eBPF Summit 2024 about how I’m using eBPF and the USDT tracepoints in Bitcoin Core to extract P2P network events to use them for, for example, anomaly detection. Recording (YouTube)
At the “Bitcoin Burg Academy” I talked about Bitcoin Core development to an non-technical audience. Often when I talk to non-technical Bitcoiners, they don’t really know much about the Bitcoin Core open-source software project but are very interested to learn more about it. In this talk, I covered the basics starting from the beginning with Satoshi, to the early years without…
This is a copy of the 2nd 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 I’ve been looking at mining pool behavior during forks while building out the stratum-observer stratum job collecting (see below). I regularly covered forks on mainnet with tweets…
I have recently been looking at mining pool behavior during forks. Which block does a pool choose to mine on during a fork? Do they behave rationally and mine on their own block? In this post, I’ll detail the mining pool behavior during forks and give some recent examples of pool behavior. I’ve also published a short-form video 1 on this topic on Twitter and YouTube . In Bitcoin, a…
This is a copy of the 1st 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 ViaBTC’s mutated blocks without witness data : Last year, errors like ERROR: AcceptBlock: bad-witness-nonce-size in the Bitcoin Core debug.log caused confusion. As these were…
My notes on the two bad-blk-sigops: too many sigops invalid blocks, 783426 and 784121, mined by F2Pool in April 2023. On April 1st, 2023, F2Pool mined an invalid block at height 783426. Bitcoin Core nodes rejected the block with the reason bad-blk-sigops and the note too many sigops . On April 6th, 2023, F2Pool mined another bad-blk-sigops block at height 784121. Mining an invalid block with a…
This is an update on the LinkingLion entity, presumably linking Bitcoin transactions to IP addresses, I published about a year ago. Yesterday, LionLink Networks AS issued a statement on their non-affiliation with the LinkingLion entity and on the same day, LinkingLion activity significantly dropped. Exactly a year ago, I published about LinkingLion , an entity that’s presumably linking…
In January, while investigating a misbehaving client on the Bitcoin P2P network , I found a vulnerability in ViaBTC’s, the fourth largest Bitcoin mining pool, SPV mining code that allowed a remote attacker to waste ViaBTC’s 60 EH/s hashrate by sending a single, crafted Bitcoin P2P message. I responsibly disclosed this to ViaBTC, and they awarded a bug bounty of 2000 USDT. Improper…
I noticed multiple ERROR: AcceptBlock: bad-witness-nonce-size errors in the debug log of my Bitcoin Core node. These indicate that a block my node received is invalid and not accepted. It turned out that these are ViaBTC’s blocks, broadcast by their mining pool software, where transaction witness data is missing. In this post, I’ve written down my notes on this observation. Some…
This is a copy of the Q4 2023 work-log I sent to Spiral for my grant . Disclaimer : Some information that is not (or not yet) meant to be published may have been redacted. In Q4 of 2023 and January 2024, among other things, I’ve worked on my fork-observer, the miningpool-observer and the peer-observer tools. I’ve also maintained my bitcoin-data related repositories, worked on macOS and FreeBSD…
This blog post provides an overview of non-standard transactions that mining pools included in the last 117000 Bitcoin blocks. Usually, before a Bitcoin transaction is included in the blockchain, it is relayed between nodes on the Bitcoin P2P network and cached in their mempools. To mitigate some transaction relay Denial-of-Service attacks, the Bitcoin Core node limits what transactions can be…
To help improve partition resistance, a medium-term goal is to increase the number block relay connections a Bitcoin Core node has (see #28462 ). However, how much resources do block-relay connections use? Surely they are cheaper than full-relay connections? This blog-post focuses on the CPU usage of Bitcoin Core peers. I’ve looked into this for CPU usage of peers - delvingbitcoin.org and PR…
My project, miningpool-observer , aims to detect when Bitcoin mining pools are not mining transactions they could have been mining. Over the past few weeks, it detected six missing transactions spending from OFAC-sanctioned addresses. This post examines whether these transactions were intentionally filtered because they spent from OFAC-sanctioned addresses or if there are other possible…
The upcoming Bitcoin Core v26.0 release will include new experimental features like AssumeUTXO and P2P transport v2 . At the Frankfurt Bitcoin Meetup (German) , I explained the Bitcoin Core development process, that for this release cycle contributors focused their review on specific projects, and when to expect the new release (after testing, where everyone can participate!). Then dove into the…
This is a copy of the Q3 2023 work-log I sent to Spiral for my grant . Disclaimer : Some information that is not (or not yet) meant to be published may have been redacted. In Q3, I finished my GitHub repository backup and mirroring project, helped with the fork-observer integration in Warnet, continued my work on the MIT DCI peer-observer setup, attended CoreDev and the BTC Azores unconference,…
Instructions for my Writing a NixOS Module for your_app workshop. Slides can be found here . The workshop tries to convey the basics of writing a NixOS module. In the end, participants should be able to write a basic NixOS module including a systemd service for their project, be able to define and declare NixOS options, and be familiar with basic systemd hardening and running containers on NixOS.…
Notes on the invalid Bitcoin mainnet block at height 809478 mined by experimental, in-house MARAPool mining pool software on September 27, 2023. On September 26, 2023, I noticed that a testnet node attached to a fork-observer instance reported frequent invalid blocks. The nodes debug.log showed multiple messages similar to the following: ERROR: ConnectBlock: Consensus::CheckTxInputs: aca785e8..,…
This year, the Bitcoin Core project will have its 13th anniversary being hosted on GitHub. 13 years of issues and pull requests with critical design decisions and nuanced discussions hosted with a US-based company known for shutting down open-source software repositories when needing to follow DMCA and OFAC requests. While the medium-to-longterm plan is to move off of GitHub, I’ve written a…