This summer, I am participating in the Summer of Bitcoin 2022 program in which I get funds and support to contribute to open source projects in the bitcoin space. Before participating in this program, I have nearly no idea of what is Bitcoin and how it works.
Summer of Bitcoin is a summer program focusing on introducing students to open source development revolving around bitcoin. This program is similar to Google Summer of Code (GSoC).
In this program, a participant is matched with a mentor who is a part of the open-source project to guide them. The specialty of Summer of Bitcoin creates an environment where a participant can be introduced to Bitcoin that has a steep learning curve. This is achieved by conducting weekly seminars where participants are randomly grouped each week and each participant is provided a topic beforehand to discuss. This break-out group meet happens for an hour after that all the participants get back together and get to discuss with a core bitcoin developer.
In the first half period of the Summer of Bitcoin, we had 5 weekly seminars on Bitcoin development. These resources are followed for the sessions. In each session, a participant is assigned to a break-out group created randomly every week where each participant was given a question to discuss. This effectively helps everyone to learn about Bitcoin.
Now getting to my project, I was working on refactoring integration tests in BitcoinDevKit (BDK). BDK is a collection of tools and libraries written in Rust language, which is designed to be a solid foundation for cross-platform Bitcoin wallets. Using BDK, a bitcoin wallet developer need not focus on minute details necessary to create a wallet for their software. As of now, the blockchain integration tests are written using rust macros which are difficult to interpret and IDEs couldn’t scan the code thus an additional burden to understand. The goal of my project is to re-create the integration test module using simpler and intuitive structures.
Before SoBitcoin, I don’t know anything about Rust. Another reason to feel lucky to be part of SoBitcoin is that I had the chance to learn and work on Rust, such a great language. To start working on bitcoin, the Mastering Bitcoin book is a masterpiece to start with. For a few weeks, I was studying this book until I am confident to have enough clarity to work on Bitcoin. Meanwhile, I was also going through the BDK codebase to understand the coding practices and rust macros in general. I had weekly meetings with my mentor where he not only helps me with my project but also helps understand whole Bitcoin technology in general.
For a start, we have worked on database tests in which a new macro is created to ease the creation and initiation of database tests. After successfully changing that part of the code, we have started working on blockchain integration tests. We have created a design to create a module that works on different blockchain backends by using Rust’s magical features. As of the first half time, the initial testing of the design is successful. All the integration tests are to be included in this module.
It has been a great journey until now and looking forward to having a greater experience. Bitcoin is amazing.
Stay Safe and Happy Coding!