The btclib organization website
The projects
Bitcoin cryptography in Python, written to be read.
These libraries grew out of Ferdinando Ametrano’s Bitcoin and Blockchain Technology course (Università di Milano-Bicocca, Politecnico di Milano, Università Statale di Milano, ESSEC Paris) and are used in production today. They are fully type annotated, cite the BIP, RFC or Bitcoin Core function a behaviour comes from, and are still marked beta because they are still refactored whenever that makes them clearer.
An arrow points at what a package depends on, which is on a row above
it, and a dashed one at what only an extra of the package installs. An
arrow is drawn only where the package does not already install its
target through the arrows that are drawn, so btclib-wallet has none to
btclib-ecc, which btclib brings. A grey dashed box is a C library and
not a package of the organization: the dotted line to it says
btclib-secp256k1 bundles it, built in rather than installed beside it.
The suites answer to vectors published by others (BIPs and SLIPs, Bitcoin Core, HWI, Trezor, RFC 6979), each pinned to its upstream commit and re-checked weekly. Coverage is held at 100%.
Issues and pull requests go to each repository; its README and
CONTRIBUTING.md say how. A change needs a clean lint gate, a passing
suite at full coverage, a signed commit, and a changelog entry where a
user would notice.
MIT.
The btclib organization and its projects are actively supported by DGI and CheckSig.