- Welcome to Bitcoinlib’s documentation!
- Wallet
- Segregated Witness Wallet
- Wallet from passphrase with accounts and multiple currencies
- Multi Signature Wallets
- Command Line Tool
- Service providers
- Other Databases
- More examples
- Disclaimer
- Schematic overview
- Indices and tables
- Use Python to get the balance of a Bitcoin wallet
- Install Bitcoinlib
- Interact with the Bitcoin network
- Other options
- Resources
- Blockchain Networks
- Web3 Software Libraries
Welcome to Bitcoinlib’s documentation!
Includes a fully functional wallet, with multi signature, multi currency and multiple accounts. Use this library to create and manage transactions, addresses/keys, wallets, mnemonic password phrases and blocks with simple and straightforward Python code.
You can use this library at a high level and create and manage wallets on the command line or at a low level and create your own custom made transactions, scripts, keys or wallets.
The BitcoinLib connects to various service providers automatically to update wallets, transactions and blockchain information.
Wallet
This Bitcoin Library contains a wallet implementation using SQLAlchemy and SQLite3, MySQL or PostgreSQL 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') >>> key1 = w.get_key() >>> key1.address '1Fo7STj6LdRhUuD1AiEsHpH65pXzraGJ9j'
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('1PWXhWvUH3bcDWn6Fdq3xhMRPfxRXTjAi1', '0.001 BTC') 'b7feea5e7c79d4f6f343b5ca28fa2a1fcacfe9a2b7f44f3d2fd8d6c2d82c4078' >>> t.info() # Shows transaction information and send results
Segregated Witness Wallet
Easily create and manage Segwit wallets. Both native Segwit with base32/bech32 addresses and P2SH nested Segwit wallets with traditional addresses are available.
Create a native single key P2WPKH wallet:
>>> from bitcoinlib.wallets import Wallet >>> w = Wallet.create('segwit_p2wpkh', witness_type='segwit') >>> w.get_key().address bc1q84y2quplejutvu0h4gw9hy59fppu3thg0u2xz3
Or create a P2SH nested single key P2SH_P2WPKH wallet:
>>> from bitcoinlib.wallets import Wallet >>> w = Wallet.create('segwit_p2sh_p2wpkh', witness_type='p2sh-segwit') >>> w.get_key().address 36ESSWgR4WxXJSc4ysDSJvecyY6FJkhUbp
Wallet from passphrase with accounts and multiple currencies
The following code creates a wallet with two bitcoin and one litecoin account from a Mnemonic passphrase. The complete wallet can be recovered from the passphrase which is the masterkey.
from bitcoinlib.wallets import Wallet, wallet_delete from bitcoinlib.mnemonic import Mnemonic passphrase = Mnemonic().generate() print(passphrase) w = Wallet.create("Wallet2", keys=passphrase, network='bitcoin') account_btc2 = w.new_account('Account BTC 2') account_ltc1 = w.new_account('Account LTC', network='litecoin') w.get_key() w.get_key(account_btc2.account_id) w.get_key(account_ltc1.account_id) w.info()
Multi Signature Wallets
Create a Multisig wallet with 2 cosigners which both need to sign a transaction.
from bitcoinlib.wallets import Wallet from bitcoinlib.keys import HDKey NETWORK = 'testnet' k1 = HDKey('tprv8ZgxMBicQKsPd1Q44tfDiZC98iYouKRC2CzjT3HGt1yYw2zuX2awTotzGAZQEAU9bi2M5MCj8iedP9MREPjUgpDEBwBgGi2C8eK' '5zNYeiX8', network=NETWORK) k2 = HDKey('tprv8ZgxMBicQKsPeUbMS6kswJc11zgVEXUnUZuGo3bF6bBrAg1ieFfUdPc9UHqbD5HcXizThrcKike1c4z6xHrz6MWGwy8L6YKVbgJ' 'MeQHdWDp', network=NETWORK) w1 = Wallet.create('multisig_2of2_cosigner1', sigs_required=2, keys=[k1, k2.public_master(multisig=True)], network=NETWORK) w2 = Wallet.create('multisig_2of2_cosigner2', sigs_required=2, keys=[k1.public_master(multisig=True), k2], network=NETWORK) print("Deposit testnet bitcoin to this address to create transaction: ", w1.get_key().address)
Create a transaction in the first wallet
w1.utxos_update() t = w1.sweep('mwCwTceJvYV27KXBc3NJZys6CjsgsoeHmf', min_confirms=0) t.info()
And then import the transaction in the second wallet, sign it and push it to the network
w2.get_key() t2 = w2.transaction_import(t) t2.sign() t2.send() t2.info()
Command Line Tool
With the command line tool you can create and manage wallet without any Python programming.
To create a new Bitcoin wallet
$ clw newwallet Command Line Wallet for BitcoinLib Wallet newwallet does not exist, create new wallet [yN]? y CREATE wallet 'newwallet' (bitcoin network) Your mnemonic private key sentence is: force humble chair kiss season ready elbow cool awake divorce famous tunnel Please write down on paper and backup. With this key you can restore your wallet and all keys
You can use the command line wallet ‘clw’ to create simple or multisig wallets for various networks, manage public and private keys and managing transactions.
For the full command line wallet documentation please read
Service providers
Communicates with pools of bitcoin service providers to retreive transaction, address, blockchain information. To push a transaction to the network. To determine optimal service fee for a transaction. Or to update your wallet’s balance.
Example: Get estimated transactionfee in Sathosis per Kb for confirmation within 5 blocks
>>> from bitcoinlib.services.services import Service >>> Service().estimatefee(5) 138964
Other Databases
Bitcoinlib uses the SQLite database by default but other databases are supported as well. See http://bitcoinlib.readthedocs.io/en/latest/_static/manuals.databases.html for instructions on how to use MySQL or PostgreSQL.
More examples
- Installation and Settings
- Installation
- Install with pip
- Install from source
- Package dependencies
- Other requirements Linux
- Development environment
- Other requirements Windows
- Create wallet
- Generate / show receive addresses
- Send funds / create transaction
- Restore wallet with passphrase
- Options Overview
- Steps to add a new provider
- Bitcoin node settings
- Connect using config files
- Connect using provider settings
- Connect using base_url argument
- Please note: Using a remote bitcoind server
- Using MySQL database
- Using PostgreSQL database
- Encrypt database
- Create an Encrypted Database for your Wallet
- Encrypt using Database URI
- What is cached?
- Using other databases
- Disable caching
- Troubleshooting
- Nothing is cached, what is the problem?
- I get incomplete or incorrect results!
Disclaimer
This library is still in development, please use at your own risk and test sufficiently before using it in a production environment.
Schematic overview
Indices and tables
© Copyright 2023, Coineva (mccwdev). Revision 38f86902 .
Use Python to get the balance of a Bitcoin wallet
In this article we will use Python to get the balance of a Bitcoin wallet. Bitcoin is a decentralized digital currency that can be sent and received without the need for intermediaries such as banks. The most common way to interact with the Bitcoin network is through a software or hardware wallet. A Bitcoin wallet is a program that allows a user to store, send and receive Bitcoin. In this article, we will explore how to use Python to get the balance of a Bitcoin wallet.
Before we begin, it is important to note that there are several different libraries available for interacting with the Bitcoin network in Python. The most popular of these libraries is Bitcoinlib. Bitcoinlib is a powerful and easy to use library that provides a simple interface for interacting with the Bitcoin network.
Install Bitcoinlib
To use Bitcoinlib, we first need to install it. This can be done using pip, the package installer for Python. To install Bitcoinlib, open up a terminal and enter the following command:
Copy code
pip install bitcoinlib
Interact with the Bitcoin network
Once Bitcoinlib is installed, we can start using it to interact with the Bitcoin network. The first thing we need to do is to import the library. This can be done by adding the following line to the top of your Python script:
Copy code
import bitcoinlib
Next, we need to create a connection to the Bitcoin network. This can be done using the .connect_to_local() method provided by Bitcoinlib. This method connects to a local Bitcoin node using the default settings. If you want to connect to a remote node, you can use the .connect() method and pass in the host and port of the remote node.
Copy code
connection = bitcoinlib.connect_to_local()
Once we have a connection to the Bitcoin network, we can use it to retrieve the balance of a Bitcoin wallet. To do this, we need to know the address of the wallet. The address is a string of letters and numbers that represents the location of the wallet on the Bitcoin network.
To get the balance of a wallet, we can use the .getbalance() method provided by Bitcoinlib. This method takes the address of the wallet as a parameter and returns the balance in satoshis. One satoshi is the smallest unit of Bitcoin, equivalent to 0.00000001 BTC.
Copy code
address = '1BvBMSEYstWetqTFn5Au4m4GFg7xJaNVN2' balance = connection.getbalance(address) print(balance)
The above code will print the balance of the wallet with the address 1BvBMSEYstWetqTFn5Au4m4GFg7xJaNVN2 in satoshis.
To convert the balance from satoshis to Bitcoin, we can simply divide the balance by 100 million (100 million satoshis is equal to 1 Bitcoin). The following code snippet shows how to convert the balance to Bitcoin.
Copy code
balance_btc = balance / 100000000 print(balance_btc)
The above code will print the balance of the wallet in Bitcoin.
Other options
It’s worth noting that there are other libraries available for interacting with the Bitcoin network in Python, such as python-bitcoinlib, pycoin and pybitcointools, but Bitcoinlib is the most comprehensive and easy-to-use library and it’s actively maintained.
In conclusion, using Python and a library like Bitcoinlib makes it relatively easy to interact with the Bitcoin network and retrieve information about a wallet, such as its balance. This can be useful for building applications that needRegenerate response
Resources
Blockchain Networks
Below is a list of EVM compatible Mainnet and Testnet blockchain networks. Each link contains network configuration, links to multiple faucets for test ETH and tokens, bridge details, and technical resources for each blockchain. Basically everything you need to test and deploy smart contracts or decentralized applications on each chain. For a list of popular Ethereum forums and chat applications click here.
Ethereum test network configuration and test ETH faucet information Optimistic Ethereum Mainnet and Testnet configuration, bridge details, etc. Polygon network Mainnet and Testnet configuration, faucets for test MATIC tokens, bridge details, etc. Binance Smart Chain Mainnet and Testnet configuration, faucets for test BNB tokens, bridge details, etc. Fanton networt Mainnet and Testnet configuration, faucets for test FTM tokens, bridge details, etc. Kucoin Chain Mainnet and Testnet configuration, faucets for test KCS tokens, bridge details, etc. Web3 Software Libraries
You can use the following libraries to interact with an EVM compatible blockchain.
- Python: Web3.py A Python library for interacting with Ethereum. Web3.py examples
- Js: Web3.js Ethereum JavaScript API
- Java: Web3j Web3 Java Ethereum Ðapp API
- PHP: Web3.php A php interface for interacting with the Ethereum blockchain and ecosystem.
- Installation