Skip to content
btclib: a python3 library for 'bitcoin cryptography'
Python
Branch: master
Clone or download
This branch is 18 commits behind fametrano:master.

Latest commit

Fetching latest commit…
Cannot retrieve the latest commit at this time.

Files

Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
btclib getting ready for new release Apr 7, 2020
docs getting ready for new release Apr 7, 2020
img added smaller code Jun 12, 2019
tests extended test coverage Apr 6, 2020
.gitignore ignore profile results Apr 2, 2020
.travis.yml supported python 3.8 only Mar 26, 2020
AUTHORS.md updated with btclib-org organization Mar 19, 2020
LICENSE updated copyright years Mar 19, 2020
MANIFEST.in moved data files; excluded tests from distribution Jan 4, 2019
README.md increased test coverage and assorted clean up Apr 5, 2020
TODO updated Apr 6, 2020
bms.py added crack_prvkey Apr 6, 2020
readthedocs.yml supported python 3.8 only Mar 26, 2020
requirements.txt getting ready for release Jan 20, 2020
setup.py supported python 3.8 only Mar 26, 2020

README.md

btclib: a python3 library for 'bitcoin cryptography'

Build Status ReadtheDocs Coverage Status PyPI status PyPI pyversions PyPI version GitHub License

btclib logo btclib is a python3 (>=3.8) type annotated library intended for teaching/learning/using bitcoin, its blockchain, and the associated elliptic curve cryptography.

It does not have external requirements or dependencies; to install (and upgrade) it:

python -m pip install --upgrade btclib

Originally developed for the Bitcoin and Blockchain Technology course at the University of Milano-Bicocca, the library is not intended for production environments: it is often refactored for improved clarity, without care for backward compatibility; moreover, some of its algorithms could be broken using side-channel attacks.

The library includes:

  • modulo algebra functions (gcd, inverse, legendre symbol, square root)
  • octets / integer / varint / point conversion functions
  • elliptic curve class
    • fast algebra implemented using Jacobian coordinates
    • double scalar multiplication (Straus's algorithm, also known as Shamir's trick)
    • multi scalar multiplication (Bos-coster's algorithm)
    • point simmetry solution: odd/even, low/high, and quadratic residue
  • elliptic curves: SEC 1 v1 and v2, NIST, Brainpool, and low cardinality test curves
  • ECDSA signature with (transaction) DER encoding
  • ECDSA signature with (message) compact encoding: standard p2pkh and BIP137/Electrum extensions to p2wpkh and p2wpkh-p2sh
  • EC Schnorr signature (according to BIP340 bitcoin standardization)
    • batch validation
    • threshold signature (see test-suite)
    • MuSig multi-signature (see test-suite)
  • Borromean ring signature
  • RFC 6979 to make signature schemes deterministic
  • Sign-to-contract commitment
  • Diffie-Hellman
  • Pedersen committment
  • Base58 encoding/decoding
  • p2pkh/p2sh addresses and WIFs
  • Bech32 encoding/decoding
  • p2wpkh/p2wsh native SegWit addresses and their legacy p2sh-wrapped versions
  • BIP32 hierarchical deterministic wallets
  • BIP39 wordlists and mnemonic for generating deterministic keys
  • Electrum standard for mnemonic
  • Script encoding/decoding
  • nulldata, p2pk, p2pkh, multi-sig, p2sh, p2wpkh, and p2wsh ScriptPubKeys

A very extensive test suite reproduces results from major official sources and covers 100% of the library code base.

The library development is actively supported by the Digital Gold Institute

DGI logo

You can’t perform that action at this time.