I have learned a lot about how bitcoin works. Now I want to contribute to bitcoin source code, how can I do this?

Of course, bitcoin is open source so anyone could go to the bitcoin repo here and start making commits. Most users in this community have probably figured out by now that I am not a professional computer scientist (at best I have strong math skills and experience with imperative programming - python, R). This question is subjective but there are several users in this community who are top contributors to Bitcoin Core and likely have extensive knowledge regarding the source code and the community surrounding it. My hope is that an answer to this question could serve as an extensive list of resources and advice for a non-professional looking to get involved in contributing to Bitcoin Core. Topics to address could include:

  • Learning C++ - concepts extensively used in bcc that must be mastered/concepts rarely used in bcc that could be brushed over/ resources for learning C++
  • Understanding the code structure - in older versions of bcc there was a main.cpp that seemed a logical place to start. In bcc 0.21.0 I no longer see a 'main' file, and can actually find very few files where I can relate the code back to bitcoin concepts I am aware of. Not sure where to start.
  • Community/BCC Goals - Once I have some C++ skills and code structure knowledge how will I even be able to find things that need development or contributions in bcc? Obviously I am not expecting to be writing entire libraries for a new elliptic curve, or introducing the next space saving concept like segwit, so how can I find a way appropriate for my ability level to help out? Where is there community talking about what could be done? I imagine BIPS (Bitcoin Improvement Proposals) will come into play here. And even better yet, once I had some skills, where could I find a possible mentor!
  • Full Node/ Pruned Node - Will running a full node / pruned node be imperative in any way to this journey (perhaps for testing, etc)? Are there smaller projects or exercises once could start with that would help reach the goal of being a bcc developer?

Any other advice, resource, links certainly welcome. I think once a person had a good understanding of those topics above they could get started and then continue using this site for more specific technical questions, in its usual way.


1 Answer 1

  1. Clone bitcoin core repo, build and test it yourself: https://jonatack.github.io/articles/how-to-compile-bitcoin-core-and-run-the-tests

  2. Be active on https://bitcoin.stackexchange.com to learn and contribute

  3. Experiment with bitcoin core GUI (qt) and CLI with different RPC commands mentioned here: https://bitcoincore.org/en/doc/0.21.0/ on testnet and regtest

  4. Once you understand how things work, start looking for issues in https://github.com/bitcoin/bitcoin/issues that you can resolve or start with "Good first issues" with pull requests or create issues if you find something wrong while testing.

  5. Participate in Bitcoin Core PR Review Club meetings: https://bitcoincore.reviews/

  6. You can also start reviewing other PRs because bitcoin core has fewer devs to review a lot of code which delays things.

  7. IRC channels that can be helpful apart from few technical posts on r/bitcoin, blogs of bitcoin devs etc.: #bitcoin-core-dev #bitcoin-core-pr-reviews ##bitcoin-core-gui


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.