Skip to main content

Bitcoin cryptocurrency Library

Project description

The Python BitcoinLib is a library that provides developers with a wide range of tools to work with Bitcoin.

With BitcoinLib you can:
  • Create and manage wallets

  • Use various key-structures for your wallet such as HD (Hierarchical Deterministic) wallets following the BIP32 standard

  • Interact with the Blockchain, retrieve and decode blockchain data

  • Build, sign and verify transactions and signatures. This could be a standard segwit transactions but also multisig, nulldata or custom made transactions

  • Create, analyse and run Bitcoin scripts

  • Generate Bitcoin addresses and represent them in different address formats like P2PKH, P2SH, Bech32, etc

  • Create private keys and work with Mnemonic password phrases

  • Use external Service providers to fetch address, transaction, utxo and blockchain data.

  • Connect to you local Bitcoin core, Bcoin, Blockbook or ElectrumX node.

  • Can be extended to support other cryptocurrencies by configuring custom parameters.

  • At the moment Litecoin, Dogecoin and various test networks are supported out-of-the-box.

Unittests PyPi RTD Coveralls

Install

Install required packages on Ubuntu or related Linux systems:

$ sudo apt install build-essential python3-dev libgmp3-dev

Then install using pip

$ pip install bitcoinlib

Check out the more detailed installation instructions to read how to install on other systems or for troubleshooting.

If you are using docker you can check some Dockerfiles to create images in the docker directory.

Documentation

Read the full documentation at: http://bitcoinlib.readthedocs.io/

Example

The bitcoin library contains a wallet implementation using SQLite3 or SQLAlchemy to import, create and manage keys in a Hierarchical Deterministic way.

Example: Create wallet and generate new address (key) to receive bitcoins

>>> from bitcoinlib.wallets import Wallet
>>> w = Wallet.create('Wallet1')
>>> w.get_key().address
'bc1qk25wwkvz3am9smmm3372xct5s7cwf0hmnq8szj'

Now send a small transaction to your wallet and use the scan() method to update transactions and UTXO’s

>>> w.scan()
>>> w.info()  # Shows wallet information, keys, transactions and UTXO's

When your wallet received a payment and has unspent transaction outputs, you can send bitcoins easily. If successful a transaction ID is returned

>>> t = w.send_to('bc1qemtr8ywkzg483g8m34ukz2l4pl3730776vzq54', '0.001 BTC', offline=False)
'b7feea5e7c79d4f6f343b5ca28fa2a1fcacfe9a2b7f44f3d2fd8d6c2d82c4078'
>>> t.info  # Shows transaction information and send results

More Examples and Use Cases

You can find many more examples in the documentation for instance about the Wallet.create() method.

There are many working examples on how to create wallets, specific transactions, encrypted databases, parse the blockchain, connect to specific service providers in the examples directory in the source code of this library.

BitcoinLib is used at Blocksmurfer Explorer and many other repositories: https://github.com/1200wd/bitcoinlib/network/dependents

Contact

If you have any questions, encounter a problem or want to share an idea, please use Github Discussions

Implements the following Bitcoin Improvement Proposals

  • Hierarchical Deterministic Wallets (BIP0032)

  • Passphrase-protected private key (BIP0038)

  • Mnemonic code for generating deterministic keys (BIP0039)

  • Purpose Field for Deterministic Wallets (BIP0043)

  • Multi-Account Hierarchy for Deterministic Wallets (BIP0044)

  • Structure for Deterministic P2SH Multisignature Wallets (BIP0045)

  • Bech32/base32 address format for native v0-16 witness outputs (BIP0173)

  • Native and P2SH nested Segregated Witness transactions (BIP0141 and BIP0143)

  • Bech32m format for v1+ witness addresses (BIP0350)

  • and many more…

Future / Roadmap

  • Fully support timelocks

  • Support Taproot and Schnorr signatures

  • Support advanced scripts

  • Support for Trezor wallet or other hardware wallets

  • Allow to scan full blockchain

  • Integrate simple SPV client

Disclaimer

This library is still in development, please use at your own risk and test sufficiently before using it in a production environment.

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

bitcoinlib-0.7.6.tar.gz (4.2 MB view details)

Uploaded Source

Built Distribution

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

bitcoinlib-0.7.6-py3-none-any.whl (4.3 MB view details)

Uploaded Python 3

File details

Details for the file bitcoinlib-0.7.6.tar.gz.

File metadata

  • Download URL: bitcoinlib-0.7.6.tar.gz
  • Upload date:
  • Size: 4.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.12

File hashes

Hashes for bitcoinlib-0.7.6.tar.gz
Algorithm Hash digest
SHA256 a0ec0fadb4bc65747edaccde8c0dddca5964b23d84d6f3b59adcf631b9eb543c
MD5 ef3c67381c0be1573ad471c574727a9b
BLAKE2b-256 b1bc2dde196531fe4ab8f6ae56d58ecc147a97114f420697b95a69b8af0a392b

See more details on using hashes here.

File details

Details for the file bitcoinlib-0.7.6-py3-none-any.whl.

File metadata

  • Download URL: bitcoinlib-0.7.6-py3-none-any.whl
  • Upload date:
  • Size: 4.3 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.12

File hashes

Hashes for bitcoinlib-0.7.6-py3-none-any.whl
Algorithm Hash digest
SHA256 63508c848633ab00db3e31e21263d03257b5232035f4859aa3d2ecaa2d899d31
MD5 7b07d77d39201957aa743cb7317b5021
BLAKE2b-256 90a9bd0ad1b283a72d3fa1c5cbf3f42424fa7ea61319e47673ef871a6935b120

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