A bitcoin cryptography library.
btclib: a python3 library for 'bitcoin cryptography'
btclib is a python3 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
- available curves: SEC 1 v1 and v2, NIST, Brainpool, and low cardinality test curves
- DSA signature with (transaction) DER encoding
- DSA signature with (message) compact encoding: standard p2pkh and BIP137/Electrum extensions to p2wpkh and p2wpkh-p2sh
- Schnorr signature (according to
- 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
- 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 is actively supported by the Digital Gold Institute
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-2020.3.20-py3-none-any.whl (86.4 kB)||File type Wheel||Python version py3||Upload date||Hashes View|
|Filename, size btclib-2020.3.20.tar.gz (74.5 kB)||File type Source||Python version None||Upload date||Hashes View|
Hashes for btclib-2020.3.20-py3-none-any.whl