Skip to main content

An easy-to-use and fully featured bitcoin library written in pure python (no dependencies).

Project description

buidl Bitcoin Library

buidl is a python3 bitcoin library with 0 dependencies. It is easy-to-read, has extensive test coverage, simple to install on airgapped computers (just copy over this directory).

buidl has extensive feature support for the bitcoin blockchain:

  • Trust-minimized - easy-to-read cryptography implemented in straightforward/way with no third-party dependencies
  • Performant - optional secp256k1 library bindings offers a ~100x speedup, see performance section below
  • Wallet tools for various script types (p2pkh, p2sh, p2sh-wrapped-p2wsh, p2wsh and p2tr (coming soon) ), compressed/uncompressed pubkeys, address encodings, HD support (BIP32, BIP39, BIP44, seedpicker, etc), PSBT generation/decoding/validation, etc
  • Extensive multisig support/tooling for output descriptors, receive address validation, change address detection, fee verification, blinding xpubs, PSBTs, BCUR v0 (v1 coming soon), airgap signing, etc
  • SPV proofs and compact block filters (Neutrino) - build powerful trust-minimized apps without scanning the whole blockchain
  • P2P gossip network - connect directly to the bitcoin network
  • Footgun protection - from elegantly structured OOP classes to RFC6979 deterministic k-values, buidl is designed to be usable for non-cryptographers
  • 0 altcoins - for maximum readability/focus. The only other supported coins are bitcoin's testnet and signet, which intentionally have no value.

This repository comes with zero guarantees, use at your own risk.

Installation

Online

$ pip3 install buidl --upgrade

Offline

Download this repo and then run:

$ python3 setup.py install

(alternatively, because buidl has no dependencies you can just cd into this root directory and call buidl without installation)

Multiwallet

multiwallet is a stateless CLI multisig PSBT wallet. Since buidl has no dependencies, you can run multiwallet by just cding to the root directory of this project:

$ python3 multiwallet.py
Welcome to multiwallet...

If you have installed buidl, you can run multiwallet.py from any directory:

$ multiwallet.py
Welcome to multiwallet...

For more information on installing multiwallet, see multiwallet.md or check out this demo.

singlesweep.py works the same way for sweeping out of paper wallets, but is intentionally undocumented.

Tests

Run tests with pytest:

$ git clone https://github.com/buidl-bitcoin/buidl-python.git && cd buidl-python
$ pytest -v

(these will be 1-2 orders of magnitue faster with libsec bindings, see performance section below)

Run black:

$ black . --diff --check

Run flake8:

$ flake8 .

Performance

You can speed this library up ~100x by using C-bindings to bitcoin core's libsecp256k1 library.

libsec256k1 Dependency Installation

On Ubuntu:

$ sudo apt install libsecp256k1-dev

On MacOS (HT cuber):

$ brew tap cuber/homebrew-libsecp256k1 && brew install pkg-config libffi libsecp256k1

buidl Installation

$ git clone git@github.com:buidl-bitcoin/buidl-python.git && cd buidl-python && python3 -m pip install -r requirements-libsec.txt && python3 -m pip install --editable . && cd buidl && python libsec_build.py && cd ..

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

buidl-0.2.29.tar.gz (201.8 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

buidl-0.2.29-py3.9.egg (447.4 kB view details)

Uploaded Egg

buidl-0.2.29-py3-none-any.whl (214.2 kB view details)

Uploaded Python 3

File details

Details for the file buidl-0.2.29.tar.gz.

File metadata

  • Download URL: buidl-0.2.29.tar.gz
  • Upload date:
  • Size: 201.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.6.0 importlib_metadata/4.8.2 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

File hashes

Hashes for buidl-0.2.29.tar.gz
Algorithm Hash digest
SHA256 60f9fd45c2600b982a13d4c8d4fb0f5cb385fcb775987ad36ef49f52a6a85a14
MD5 42ca19243caccffdcd2772e4c45f0a87
BLAKE2b-256 7c1a2ca17adc6e4dc12bca63de3a6244746f2ede8e28de8d65baeef4331cee50

See more details on using hashes here.

File details

Details for the file buidl-0.2.29-py3.9.egg.

File metadata

  • Download URL: buidl-0.2.29-py3.9.egg
  • Upload date:
  • Size: 447.4 kB
  • Tags: Egg
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.6.0 importlib_metadata/4.8.2 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

File hashes

Hashes for buidl-0.2.29-py3.9.egg
Algorithm Hash digest
SHA256 ff1e2759dcdec8211c3ccd95372f6c8baafc766d09a8dd5946796b7c211c90a2
MD5 d888ac34e036cc302ac9513cf9182414
BLAKE2b-256 2103e05153911127e83b60d1fc52d4dc50e8ace0bb245a5c9adc094e8c9d660b

See more details on using hashes here.

File details

Details for the file buidl-0.2.29-py3-none-any.whl.

File metadata

  • Download URL: buidl-0.2.29-py3-none-any.whl
  • Upload date:
  • Size: 214.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.6.0 importlib_metadata/4.8.2 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

File hashes

Hashes for buidl-0.2.29-py3-none-any.whl
Algorithm Hash digest
SHA256 967794f7187e33841e785eea30630afae61f5215aeb136da93189b182bad531f
MD5 caa44385675c0c870facee1dae0a6b75
BLAKE2b-256 340306d51b63cc5568839c9305496d5e855eae4921c3c0a645b9bb083a8f698a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page