Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/onyb/littlebit

A Bitcoin library from scratch; in Python and Rust. 📦⛓️
https://github.com/onyb/littlebit

bitcoin blockchain cryptography python rust

Last synced: 24 days ago
JSON representation

A Bitcoin library from scratch; in Python and Rust. 📦⛓️

Awesome Lists containing this project

README

        

# LittleBit

[![Build Status](https://travis-ci.org/onyb/littlebit.svg?branch=master)](https://travis-ci.org/onyb/littlebit)
[![codecov](https://codecov.io/gh/onyb/littlebit/branch/master/graph/badge.svg)](https://codecov.io/gh/onyb/littlebit)
[![python](https://img.shields.io/badge/Made%20with-Python%203.8-1f425f.svg)](https://www.python.org/)
[![rust](https://img.shields.io/badge/Made%20with-Rust%202018-7C482C.svg)](https://www.rust-lang.org)

LittleBit is an educational library of [Bitcoin](https://bitcoin.org/bitcoin.pdf) primitives, with implementations in Python and Rust.

##### Objectives:
- 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.

### Progress report

> 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.

### Contributing

This is an educational project. You can help out by:

- 🔬 Auditing the codebase, asking questions, reporting bugs (please [create issues](https://github.com/onyb/littlebit/issues/new)).
- 💯 Improving coverage of unit tests.
- λ   Adding (clever) type annotations, especially with the Rust part.
- 💬 Adding code comments and explanations.