btclib 2023.7.12

Creator: codyrutscher

Last updated:

Add to Cart

Description:

btclib 2023.7.12

A Python library for 'bitcoin cryptography'










Project



Package



Supported platforms



Formatting standards



Coding standards



Type checking



Documentation



CI/CD



Conversations




Browse GitHub Code Repository


btclib is a
Python3 type annotated
library intended for teaching, learning, and using bitcoin;
the focus is on elliptic curve cryptography and bitcoin's blockchain.
It is rigorously and extensively tested: the test suite
covers 100%
of the code base and reproduces results from both informal
and major reference sources.
Originally developed for the
Bitcoin and Blockchain Technology
course at the University of Milano-Bicocca,
btclib 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 is not limited to the bitcon elliptic curve secp256k1;
anyway, FFI bindings to
libsecp256k1
(the optimized C library used by Bitcoin Core)
are available for this curve and used by default.
Included features are:

modulo algebra functions (gcd, inverse, legendre symbol, square root)
octets / integer / point / var_int / var_bytes helper 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
RFC 6979 for deterministic signature
schemes
EC Schnorr signature (according to
BIP340
bitcoin standardization)

batch validation
threshold signature (see test-suite)
MuSig multi-signature (see test-suite)


Borromean ring signature
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 key chains
SLIP132
key versions (xprv, yprv, zprv, Yprv, Zprv, tprv, uprv, vprv, and Uprv)
with corresponding mapping to
p2pkh/p2sh, p2wpkh-p2sh, p2wpkh, p2wsh-p2sh, p2wsh and p2tr addresses
BIP39
wordlists and mnemonic for generating deterministic keys
Electrum standard for mnemonic
Script encoding/decoding
nulldata, p2pk, p2ms, p2pkh, p2sh, p2wpkh, p2wsh and p2tr ScriptPubKeys
BlockHeader and Block data classes
OutPoint, TxIn, TxOut, and TX data classes
legacy, segwit_v0 and taproot transaction hash signatures
BIP174
partially signed bitcoin transactions (PSBT):
PsbtIn, PbstOut, and Psbt data classes


To install (and/or upgrade) btclib:
python -m pip install --upgrade btclib

You might want to install btclib into a
python virtual environment; e.g. from the root folder:
Shell:
python -m venv venv_btclib
source ./venv_btclib/bin/activate
python -m pip install --upgrade btclib

Windows CMD or PowerShell:
python -m venv venv_btclib
.\venv_btclib\Scripts\activate
python -m pip install --upgrade btclib

Windows Git bash shell:
python -m venv venv_btclib
cd ./venv_btclib/Scripts
. activate
cd ../..
python -m pip install --upgrade btclib

See CONTRIBUTING if you are interested
in btclib develoment.
See SECURITY if you have found a security vulnerability.

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.