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
Uses external Service providers to fetch address, transaction, utxo and blockchain data. Or connect to you local Bitcoin core, Bcoin or Blockbook node.
Can be extended to support other cryptocurrencies by configuring custom parameters. At the moment Litecoin and Dogecoin are also supported.
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.
Some more specific examples can be found on the Coineva website.
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file bitcoinlib-0.7.2.tar.gz
.
File metadata
- Download URL: bitcoinlib-0.7.2.tar.gz
- Upload date:
- Size: 4.2 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.8.0 colorama/0.4.4 importlib-metadata/4.6.4 keyring/23.5.0 pkginfo/1.8.2 readme-renderer/34.0 requests-toolbelt/0.9.1 requests/2.25.1 rfc3986/1.5.0 tqdm/4.57.0 urllib3/1.26.5 CPython/3.10.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | bad50074e0027476251e31e5cedec206c6cea0febaafb8546251c66edba60f55 |
|
MD5 | 72c9c1eabb4ade0f10445fc1e87e3f7c |
|
BLAKE2b-256 | 1799e124a992e1f2b44654d6a530b5e43a6116b68cf27bd85494333416e0bccf |
File details
Details for the file bitcoinlib-0.7.2-py3-none-any.whl
.
File metadata
- Download URL: bitcoinlib-0.7.2-py3-none-any.whl
- Upload date:
- Size: 4.3 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.8.0 colorama/0.4.4 importlib-metadata/4.6.4 keyring/23.5.0 pkginfo/1.8.2 readme-renderer/34.0 requests-toolbelt/0.9.1 requests/2.25.1 rfc3986/1.5.0 tqdm/4.57.0 urllib3/1.26.5 CPython/3.10.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8cb6d16f5fe4832f181899b9eaecc095fae7046a41d6a46326dd6c7f40b2814d |
|
MD5 | e964771afa0d3f3112024fae66369d5b |
|
BLAKE2b-256 | 083f0da5f19510010f75e6a61a7e43b1cf415165bdaf6a8c498992ae1c5ce783 |