Posted on 22 April 2021

We talked to Brink grant recipient Hennadii Stepanov about how he started contributing to Bitcoin Core and his priorities for the next year.

I first heard about Bitcoin from friends at the beginning of 2017. I had some Linux system admin experience and at the time was maintaining a Java-based GUI of an accounting application for a credit union. Eventually, I spun up an old laptop to run Bitcoin Core but the laptop happened to have a small HDD and space was limited. I discovered that Bitcoin Core had a pruning option, which I tried using. While reviewing the related code, I spotted a bug in the documentation and decided to file my first Bitcoin Core pull request, #13844. It was merged and I was encouraged to see that I could help make improvements to the codebase.

Over 500 commits later and much like that first PR, I find that most of my contributions are motivated by my personal experience as a Core user. I mostly contribute to the GUI (where I was recently made a maintainer), peer-to-peer code, concurrency code, and the build system. I am excited to continue contributing to Bitcoin Core and have a few different areas of focus over the next year.

First and foremost I plan to use my time reviewing as many PRs as possible. Reviews can be scarce on the project and for such a security-critical application, it’s vitally important that all code changes are thoroughly reviewed.

I’m excited about the build system and the idea of an automated process for bootstrappable builds on different architectures. I look forward to working with Carl Dong and using Guix for releases.

I also have a few goals for the Bitcoin Core GUI. The first is to migrate our GUI to use Qt Modeling Language (QML). QML is a declarative language and is a much more recognizable framework for Javascript and CSS developers than the existing QT code. By using QML, we can hopefully lure more contributors to the GUI repo. My second goal is to increase the GUI responsiveness as the current GUI can be slow and unresponsive at times. The final goal is to finish the Developer Notes for Qt Code wiki documentation that I’ve begun working on. This documentation will help streamline contributions and onboard new developers.

In the peer-to-peer code, I’ll spend some time researching additional criteria for estimating the quality of a node’s peers. I hope to decrease the number of different heuristics currently being used and to simplify peer scoring.

Lastly, I will continue to keep the Ukrainian language translation for the Bitcoin Core project up to date since it was previously abandoned.

I’m proud of the contributions I made while sponsored by CardCoins and Payvant and look forward to continuing my work with Brink’s support.

Keep in touch

Subscribe to the Brink newsletter for future blog posts.