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.
/btclib-iss, /btclib-pr and /btclib-table commands and the
writer and reviewer agents.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-node has none to
bitcoin-core-rpc, which btclib-wallet brings. btclib-node keeps
its own to btclib all the same, asking it for the secp256k1 extra,
which btclib-wallet installs btclib without. 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%.
Development is LLM-based: humans are welcome, as long as they are
comfortable with agentic development ;-). A contribution must have been
read and understood by the person who submits it.
CONTRIBUTING.md
has the rules.
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 and signed-off commits.
MIT.
The btclib organization and its projects are actively supported by DGI and CheckSig.