btclib-wallet
From a seed to a signed, broadcast bitcoin transaction, on top of the btclib library.
btclib is the protocol: the encodings, the scripts, the transactions and the signature schemes, what a node consumes. This package is what a wallet does with them, and every module with a counterparty outside the process — a device, a node, a server, a file from another wallet. It depends on btclib and on bitcoin-core-rpc, and re-exports nothing of btclib's: a name btclib defines is imported from btclib.
It is fully annotated and ships py.typed, and the test suite answers
to vectors their authors publish: the BIPs' and the SLIPs' own, HWI's, and
trezor's for BIP39 and SLIP39. tests/_data/README.md pins each vendored
file to the upstream commit it was copied from, and says whether the two
still match.
Installing
python -m pip install --upgrade btclib-wallet
Signing and verifying run where btclib runs them, so its libsecp256k1 bindings are the recommended install beside it, and btclib's SECURITY.md says what happens without them.
An address from a mnemonic
from btclib_wallet import bip44
from btclib_wallet.mnemonic import bip39
words = "abandon " * 11 + "about"
xprv = bip39.mxprv_from_mnemonic(words)
assert (
bip44.address_from_der_path(xprv, "m/84h/0h/0h/0/0")
== "bc1qcr8te4kr609gcawutmrza0j4xv80jy8z306fyu"
)
The address is the first one BIP84 lists for that mnemonic.
What is here
- BIP32 hierarchical deterministic key chains, and SLIP132 key versions with their mapping to address types
- BIP39, Electrum and SLIP39 mnemonics, and the seed-to-key functions over them
- BIP44
addresses from an extended key and a
m/purpose'/coin_type'/account'/change/address_indexpath - BIP85 deterministic entropy, one root key behind many wallets
- BIP38 password-protected private keys, and Casascius minikeys
- BIP380 output descriptors and BIP379 miniscript
- BIP174 and BIP370 partially signed transactions, with the taproot, MuSig2, FROST and silent payment fields
- BIP352 silent payments
- BIP322 signed messages
- BIP21 payment URIs, and the BOLT11 invoices and BOLT9 feature bits they carry
- coin selection and a transaction builder
- wallets: an extended key at a BIP44 account, a set of individual keys, an output descriptor per chain, a script template
- an external signer behind one contract, with Bitcoin Core's HWI behind it for a hardware wallet, and the requests that import a wallet into Bitcoin Core
- a chain backend behind one interface, over a full node's JSON-RPC or a block explorer's or an Electrum server's API
Security
A mnemonic, an extended private key and a PSBT being signed are secrets, and where they are handled is this package. SECURITY.md says what that promises, where constant time ends, and how to report a vulnerability.
Contributing
CONTRIBUTING.md has the commands each CI job runs,
verbatim. uv sync creates the environment; uv is the only tool that has
to be installed. REVIEWING.md is what a pull request is
answered against.
Links
- Documentation: https://btclib-wallet.readthedocs.io/
- Source: https://github.com/btclib-org/btclib-wallet
- Releases: https://github.com/btclib-org/btclib-wallet/releases
- CHANGELOG.md, and RELEASE_NOTES.md for what a release asks a user to act on
The btclib organization and its projects are actively supported by DGI and CheckSig.
Release files for btclib-wallet 2026.9.24
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| btclib_wallet-2026.9.24.tar.gz | 2.8 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| btclib_wallet-2026.9.24-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 3.4 MB
Release files / btclib_wallet-2026.9.24.tar.gz
| Download URL | btclib_wallet-2026.9.24.tar.gz |
|---|---|
| Size | 2.8 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
8a38902c60468cef264f592a41137ea1e25fd4b4811cdde8a77dfdec9e51cbeb
|
|
BLAKE2b-256 checksum How to use checksums |
48e0883fd83024d820ebafab25a87c571300d2a63b45f262a427d96fbe001a97
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 24, 2026.
Transparency logRelease files / btclib_wallet-2026.9.24-py3-none-any.whl
| Download URL | btclib_wallet-2026.9.24-py3-none-any.whl |
|---|---|
| Size | 572.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
7f6264cb1f805bbacc16b8f89b8a8b2229cf115ea5c82885a2ce94fb00667e0f
|
|
BLAKE2b-256 checksum How to use checksums |
1073dd6f8d0be579c1d09690cac17f941b09eb995b236394946d3203126fe521
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 24, 2026.
Transparency log