A bitcoin cryptography library.
btclib: a python library for 'bitcoin cryptography'
btclib is a python3 type annotated library intended for teaching and demonstration of the elliptic curve cryptography used in bitcoin.
It does not have external requirements or dependencies; to install (and upgrade) it:
python3 -m pip install --upgrade btclib
Originally developed for the Bitcoin and Blockchain Technology Course at Milano Bicocca and Politecnico di Milano, its algorithms are not intended for production environments: they could be broken using side-channel attacks; moreover, they might be subjected to major refactoring without care for backward compatibility.
The library includes:
- modulo algebra functions (gcd, inverse, legendre symbol, square root)
- octet / integer / 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, high/low, and quadratic residue
- available curves: SEC 1 v1 and v2, NIST, Brainpool, and low cardinality test curves
- DSA signature and DER encoding
- Schnorr signature (according to bip-schnorr bitcoin standardization)
- batch validation
- threshold signature
- MuSig multi-signature
- Borromean ring signature
- RFC-6979 to make signature schemes deterministic
- sign-to-contract notarization
- Pedersen Committment
- base58 encoding, addresses, WIFs
- BIP32 hierarchical deterministic wallets
- BIP39 mnemonic code for generating deterministic keys
- Electrum standard for mnemonic code
A very extensive test suite reproduces results from major official sources and covers 100% of the library code base.
Release history Release notifications | RSS feed
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
|Filename, size||File type||Python version||Upload date||Hashes|
|Filename, size btclib-2019.1.20-py3-none-any.whl (74.2 kB)||File type Wheel||Python version py3||Upload date||Hashes View|
|Filename, size btclib-2019.1.20.tar.gz (53.3 kB)||File type Source||Python version None||Upload date||Hashes View|
Hashes for btclib-2019.1.20-py3-none-any.whl