Note from translation author (klebs):

Greetings folks!

It seems to me that this translation task is now parallelized.

As it currently stands, I have modularized the codebase into units, each much smaller than the original 300k+ lines of code and hopefully more manageable.

My hope is that the modular structure will be easier to read, easier to work with, easier to integrate with, and easier to use -- for everybody on the planet.


After setting the scaffold, I began translating the crates one by one, roughly in alphabetical order.

I was learning quite a bit from doing this -- I thought deeply about rearranging my overall development towards finishing each crate translation in turn.

However, the translation task is parallelized now.

Therefore, it seems more optimal to post it back to the community.

Sharing this work is more aligned with the ethos of the original project.

Any individual should be able to use and fruitfully interact with the whole interface.

This is now achieved.

Since the translation task is parallelized, We can finish it much faster together than I ever could have done alone and on my own.

Basing this calculation on the number of folks contributing to the current rust-bitcoin project (90+ by my last count), it is possible to finish in several weeks if we work together to divide and conquer the parallel tasks.


I am hopeful the energy I spent on this translation is found useful.

I will make one disclaimer: by myself I can not guarantee correctness.

That said, I have kept everything (from a functional and logical perspective) the same as the way I found it, in commit ab25ef8c7f767258d5fe44f53b35ad8bd51ed5cd from the original bitcoin c++ codebase.

This may, of course, be independently verified.

Specifically, I cannot guarantee total correctness at this stage because most of the function bodies are rust scaffolding wrapping todo!() blocks and commented c++ code.

The functionality of the codebase itself will become testable once the rest of the program is translated (hopefully collaboratively, and in parallel).

I have included all tests/benchmarks/fuzzes from the original project (at the noted c++ commit)


We all stand to benefit from an incorruptable financial protocol for money.

I hope that this translation process challenges and strengthens the antifragility properties of the bitcoin system itself.

The more successful antifragility tests the bitcoin system withstands and overcomes, the better for all.


Please see the TODO file for notes on how best I imagine the challenge of translation completion can be tackled.

Please see the CHOMPER file for notes on a transpiler I have developed for this purpose.

I do plan to come back to this project, though I have some other work to attend to for a few months at least (as of January 2023).

One day, I hope that we and the rust programs we write will be able to speak bitcoin with each other.

All my best,

-klebs