Daniel Pfeifer

purplekarrot.net

executive high priest of blowing your mind

Making CTransaction a Regular Type

It's one of the most fundamental types in Bitcoin Core - and it's not a Regular C++ type. It can't be assigned and the comment explaining it is wrong. Here's how to fix it, one refactoring step at a time.

Virtuality 2026

While reviewing and refactoring the Bitcoin Kernel API, I wrote several design documents . One topic I have not yet covered is the concept of "interfaces."

Aiming for ₿OSS Level 100

As a student, I wanted to become a game programmer. I learned C++ with the goal of writing a computer game. My vision was to create something like a decentralized version of "Ultima Online."

CMake Import/Export

In the following, I will try to address all your questions regarding import/export with CMake. To aid in this task, I have set up four example projects, which form a so-called diamond of death dependency graph.

Building and Testing with CMake

There are too many ways to build and test a project with CMake. On the other hand, there is too little knowledge out there about those ways. As a consequence, people wrap the CMake invocation in custom scripts written in Bash, Python, TypeScript, etc.

CMake and Test Suites

The FindGTest module that ships with CMake provides the command GTEST_ADD_TESTS , which registers all the test cases from a test executable with CMake so they are listed individually in the report generated by CTest.

Fun with clang-format

There are formatting options that are a matter of taste and there are formatting options that severely affect readability and maintenance.

Building and Testing with CMake

There are too many ways to build and test a project with CMake. On the other hand, there is too little knowledge out there about those ways. As a consequence, people wrap the CMake invocation in custom scripts written in Bash, Python, Typescript etc.