LittleBit is an educational library of Bitcoin primitives, with implementations in Python and Rust.
- Help the reader understand how Bitcoin really works at a fundamental level.
- Focus on readability in the Python implementation; on correctness, and performance in the Rust implementation.
- Zero (ish) dependency on third-party packages.
DISCLAIMER: This software comes sans warranty. Do NOT use this code for anything other than educational purposes. I beg you.
Legend: 🍏 Done 🍋 In Progress 🍅 TODO 🐍 Python 🦀 Rust
Internal links to code inside the repository are indicated
like this
. External links look like this.
Component | Status |
---|---|
Elliptic Curve Cryptography (ECC) | |
Finite Field
|
🐍 ➞ 🍏
🦀 ➞ 🍏 |
Elliptic Curve |
🐍 ➞ 🍏
🦀 ➞ 🍅 |
secp256k1 |
🐍 ➞ 🍏
🦀 ➞ 🍅 |
Signatures |
🐍 ➞ 🍏
🦀 ➞ 🍅 |
Serialization | |
SEC Format |
🐍 ➞ 🍏
🦀 ➞ 🍅 |
DER Format |
🐍 ➞ 🍏
🦀 ➞ 🍅 |
Base58 |
🐍 ➞ 🍏
🦀 ➞ 🍅 |
Bitcoin Address Format |
🐍 ➞ 🍏
🦀 ➞ 🍅 |
Wallet Import Format (WIF) |
🐍 ➞ 🍏
🦀 ➞ 🍅 |
Transactions |
Note: This table is not complete.
This is an educational project. You can help out by:
- 🔬 Auditing the codebase, asking questions, reporting bugs (please create issues).
- 💯 Improving coverage of unit tests.
- λ Adding (clever) type annotations, especially with the Rust part.
- 💬 Adding code comments and explanations.