bitcoinlib.db module
- class bitcoinlib.db.Db(db_uri=None, password=None)[source]
Bases:
object
Bitcoinlib Database object used by Service() and HDWallet() class. Initialize database and open session when creating database object.
Create new database if is doesn’t exist yet
- class bitcoinlib.db.DbConfig(**kwargs)[source]
Bases:
sqlalchemy.ext.declarative.api.Base
BitcoinLib configuration variables
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in
kwargs
.Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any mapped columns or relationships.
- value
- variable
- class bitcoinlib.db.DbKey(**kwargs)[source]
Bases:
sqlalchemy.ext.declarative.api.Base
Database definitions for keys in Sqlalchemy format
Part of a wallet, and used by transactions
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in
kwargs
.Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any mapped columns or relationships.
- account_id
ID of account if key is part of a HD structure
- address
Address representation of key. An cryptocurrency address is a hash of the public key
- address_index
Index of address in HD key structure address level
- balance
Total balance of UTXO’s linked to this key
- change
Change or normal address: Normal=0, Change=1
- compressed
Is key compressed or not. Default is True
- cosigner_id
ID of cosigner, used if key is part of HD Wallet
- depth
Depth of key if it is part of a HD structure. Depth=0 means masterkey, depth=1 are the masterkeys children.
- encoding
Encoding used to represent address: base58 or bech32
- id
Unique Key ID
- is_private
Is key private or not?
- key_type
Type of key: single, bip32 or multisig. Default is bip32
- latest_txid
TxId of latest transaction downloaded from the blockchain
- multisig_children
List of children keys
- multisig_parents
List of parent keys
- name
Key name string
- network
DbNetwork object for this key
- network_name
Name of key network, i.e. bitcoin, litecoin, dash
- parent_id
Parent Key ID. Used in HD wallets
- path
String of BIP-32 key path
- private
Bytes representation of private key
- public
Bytes representation of public key
- purpose
Purpose ID, default is 44
- transaction_inputs
All DbTransactionInput objects this key is part of
- transaction_outputs
All DbTransactionOutput objects this key is part of
- used
Has key already been used on the blockchain in as input or output? Default is False
- wallet
Related Wallet object
- wallet_id
Wallet ID which contains this key
- wif
Public or private WIF (Wallet Import Format) representation
- class bitcoinlib.db.DbKeyMultisigChildren(**kwargs)[source]
Bases:
sqlalchemy.ext.declarative.api.Base
Use many-to-many relationship for multisig keys. A multisig keys contains 2 or more child keys and a child key can be used in more then one multisig key.
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in
kwargs
.Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any mapped columns or relationships.
- child_id
- key_order
- parent_id
- class bitcoinlib.db.DbNetwork(**kwargs)[source]
Bases:
sqlalchemy.ext.declarative.api.Base
Database definitions for networks in Sqlalchemy format
Most network settings and variables can be found outside the database in the libraries configurations settings. Use the bitcoinlib/data/networks.json file to view and manage settings.
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in
kwargs
.Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any mapped columns or relationships.
- description
- name
Network name, i.e.: bitcoin, litecoin, dash
- class bitcoinlib.db.DbTransaction(**kwargs)[source]
Bases:
sqlalchemy.ext.declarative.api.Base
Database definitions for transactions in Sqlalchemy format
Refers to 1 or more keys which can be part of a wallet
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in
kwargs
.Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any mapped columns or relationships.
- account_id
ID of account
- block_height
Number of block this transaction is included in
- coinbase
Is True when this is a coinbase transaction, default is False
- confirmations
Number of confirmation when this transaction is included in a block. Default is 0: unconfirmed
- date
Date when transaction was confirmed and included in a block. Or when it was created when transaction is not send or confirmed
- fee
Transaction fee
- id
Unique transaction index for internal usage
- input_total
Total value of the inputs of this transaction. Input total = Output total + fee. Default is 0
- inputs
List of all inputs as DbTransactionInput objects
- is_complete
Allow to store incomplete transactions, for instance if not all inputs are known when retrieving UTXO’s
- locktime
Transaction level locktime. Locks the transaction until a specified block (value from 1 to 5 million) or until a certain time (Timestamp in seconds after 1-jan-1970). Default value is 0 for transactions without locktime
- network
Link to DbNetwork object
- network_name
Blockchain network name of this transaction
- output_total
Total value of the outputs of this transaction. Output total = Input total - fee
- outputs
List of all outputs as DbTransactionOutput objects
- raw
Raw transaction hexadecimal string. Transaction is included in raw format on the blockchain
- size
Size of the raw transaction in bytes
- status
Current status of transaction, can be one of the following: new’, ‘unconfirmed’, ‘confirmed’. Default is ‘new’
- txid
Bytes representation of transaction ID
- verified
Is transaction verified. Default is False
- version
Tranaction version. Default is 1 but some wallets use another version number
- wallet
Link to Wallet object which contains this transaction
- wallet_id
ID of wallet which contains this transaction
- witness_type
Is this a legacy or segwit transaction?
- class bitcoinlib.db.DbTransactionInput(**kwargs)[source]
Bases:
sqlalchemy.ext.declarative.api.Base
Transaction Input Table
Relates to Transaction table and Key table
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in
kwargs
.Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any mapped columns or relationships.
- address
Address string of input, used if no key is associated. An cryptocurrency address is a hash of the public key or a redeemscript
- double_spend
Indicates if a service provider tagged this transaction as double spend
- index_n
Index number of transaction input
- key
Related DbKey object
- key_id
ID of key used in this input
- output_n
Output_n of previous transaction output that is spent in this input
- prev_txid
Transaction hash of previous transaction. Previous unspent outputs (UTXO) is spent in this input
- script
Unlocking script to unlock previous locked output
- script_type
Unlocking script type. Can be ‘coinbase’, ‘sig_pubkey’, ‘p2sh_multisig’, ‘signature’, ‘unknown’, ‘p2sh_p2wpkh’ or ‘p2sh_p2wsh’. Default is sig_pubkey
- sequence
Transaction sequence number. Used for timelock transaction inputs
- transaction
Related DbTransaction object
- transaction_id
Input is part of transaction with this ID
- value
Value of transaction input
- witness_type
Type of transaction, can be legacy, segwit or p2sh-segwit. Default is legacy
- class bitcoinlib.db.DbTransactionOutput(**kwargs)[source]
Bases:
sqlalchemy.ext.declarative.api.Base
Transaction Output Table
Relates to Transaction and Key table
When spent is False output is considered an UTXO
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in
kwargs
.Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any mapped columns or relationships.
- address
Address string of output, used if no key is associated. An cryptocurrency address is a hash of the public key or a redeemscript
- key
List of DbKey object used in this output
- key_id
ID of key used in this transaction output
- output_n
Sequence number of transaction output
- script
Locking script which locks transaction output
- script_type
Locking script type. Can be one of these values: ‘p2pkh’, ‘multisig’, ‘p2sh’, ‘p2pk’, ‘nulldata’, ‘unknown’, ‘p2wpkh’ or ‘p2wsh’. Default is p2pkh
- spending_index_n
Index number of transaction input which spends this output
- spending_txid
Transaction hash of input which spends this output
- spent
Indicated if output is already spent in another transaction
- transaction
Link to transaction object
- transaction_id
Transaction ID of parent transaction
- value
Total transaction output value
- class bitcoinlib.db.DbWallet(**kwargs)[source]
Bases:
sqlalchemy.ext.declarative.api.Base
Database definitions for wallets in Sqlalchemy format
Contains one or more keys.
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in
kwargs
.Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any mapped columns or relationships.
- children
Wallet IDs of children wallets, used in multisig wallets
- cosigner_id
ID of cosigner of this wallet. Used in multisig wallets to differentiate between different wallets
- default_account_id
ID of default account for this wallet if multiple accounts are used
- encoding
Default encoding to use for address generation, i.e. base58 or bech32. Default is base58.
- id
Unique wallet ID
- key_path
Key path structure used in this wallet. Key path for multisig wallet, use to create your own non-standard key path. Key path must follow the following rules: * Path start with masterkey (m) and end with change / address_index * If accounts are used, the account level must be 3. I.e.: m/purpose/coin_type/account/ * All keys must be hardened, except for change, address_index or cosigner_id Max length of path is 8 levels
- keys
Link to keys (DbKeys objects) in this wallet
- main_key_id
Masterkey ID for this wallet. All other keys are derived from the masterkey in a HD wallet bip32 wallet
- multisig
Indicates if wallet is a multisig wallet. Default is True
- multisig_n_required
Number of required signature for multisig, only used for multisignature master key
- name
Unique wallet name
- network
Link to DbNetwork object
- network_name
Name of network, i.e.: bitcoin, litecoin
- owner
Wallet owner
- parent_id
Wallet ID of parent wallet, used in multisig wallets
- purpose
Wallet purpose ID. BIP-44 purpose field, indicating which key-scheme is used default is 44
- scheme
Key structure type, can be BIP-32 or single
- sort_keys
Sort keys in multisig wallet
- transactions
Link to transaction (DbTransactions) in this wallet
- witness_type
Wallet witness type. Can be ‘legacy’, ‘segwit’ or ‘p2sh-segwit’. Default is legacy.