Wallet
The implementation of Hierarchical Deterministic (HD) wallets generator for Bitcoin blockchain.
- class swap.providers.bitcoin.wallet.Wallet(network: str = 'mainnet', use_default_path: bool = False)
Bitcoin hierarchical deterministic wallet.
- Parameters
network (str) – Bitcoin network, defaults to
mainnet
.use_default_path (bool) – Use default derivation path, defaults to
False
.
- Returns
Wallet – Bitcoin wallet instance.
Note
Bitcoin has only two networks,
mainnet
andmainnet
.- from_entropy(entropy: str, language: str = 'english', passphrase: Optional[str] = None) swap.providers.bitcoin.wallet.Wallet
Master from Entropy.
- Parameters
entropy (str) – Bitcoin entropy.
language (str) – Bitcoin language, default to english.
passphrase (str) – Bitcoin passphrase, default to None.
- Returns
Wallet – Bitcoin wallet instance.
>>> from swap.providers.bitcoin.wallet import Wallet >>> wallet: Wallet = Wallet(network="testnet") >>> wallet.from_entropy(entropy="ed0802d701a033776811601dd6c5c4a9") <swap.providers.bitcoin.wallet.Wallet object at 0x040DA268>
- from_mnemonic(mnemonic: str, language: Optional[str] = None, passphrase: Optional[str] = None) swap.providers.bitcoin.wallet.Wallet
Master from Mnemonic.
- Parameters
mnemonic (str) – Bitcoin mnemonic.
language (str) – Bitcoin language, default to english.
passphrase (str) – Bitcoin passphrase, default to None.
- Returns
Wallet – Bitcoin wallet instance.
>>> from swap.providers.bitcoin.wallet import Wallet >>> wallet: Wallet = Wallet(network="testnet") >>> wallet.from_mnemonic(mnemonic="unfair divorce remind addict add roof park clown build renew illness fault") <swap.providers.bitcoin.wallet.Wallet object at 0x040DA268>
- from_seed(seed: str) swap.providers.bitcoin.wallet.Wallet
Master from Seed.
- Parameters
seed (str) – Bitcoin seed.
- Returns
Wallet – Bitcoin wallet instance.
>>> from swap.providers.bitcoin.wallet import Wallet >>> wallet: Wallet = Wallet(network="testnet") >>> wallet.from_seed(seed="1cfd5df8a523d53a36cee369a93fac4e9efab5e4e138d479da2fb6df730697574409d572fe8325ec22e8ed25dea7495f498c3f5235fe6ae6d47b989267b6777c") <swap.providers.bitcoin.wallet.Wallet object at 0x040DA268>
- from_xprivate_key(xprivate_key: str, strict: bool = True) swap.providers.bitcoin.wallet.Wallet
Master from Root XPrivate Key.
- Parameters
xprivate_key (str) – Bitcoin root xprivate key.
strict (bool) – Strict for must be root xprivate key, default to
True
.
- Returns
Wallet – Bitcoin wallet instance.
>>> from swap.providers.bitcoin.wallet import Wallet >>> wallet: Wallet = Wallet(network="testnet") >>> wallet.from_xprivate_key(xprivate_key="tprv8ZgxMBicQKsPeMHMJAc6uWGYiGqi1MVM2ybmzXL2TAoDpQe85uyDpdT7mv7Nhdu5rTCBEKLZsd9KyP2LQZJzZTvgVQvENArgU8e6DoYBiXf") <swap.providers.bitcoin.wallet.Wallet object at 0x040DA268>
- from_xpublic_key(xpublic_key: str, strict: bool = True) swap.providers.bitcoin.wallet.Wallet
Master from Root XPublic Key.
- Parameters
xpublic_key (str) – Bitcoin root xpublic key.
strict (bool) – Strict for must be root xprivate key, default to
True
.
- Returns
Wallet – Bitcoin wallet instance.
>>> from swap.providers.bitcoin.wallet import Wallet >>> wallet: Wallet = Wallet(network="testnet") >>> wallet.from_xpublic_key(xpublic_key="tpubD6NzVbkrYhZ4XpK9BpGhJuvfHJMeAggFcHCZH3NKsSbcetttiJnp184yx2cp2uJyapPQLt7LGTLUZvnKWbdgKBkvnfYjab9sH4wBmEpTZhJ") <swap.providers.bitcoin.wallet.Wallet object at 0x040DA268>
- from_wif(wif: str) swap.providers.bitcoin.wallet.Wallet
Master from Wallet Important Format (WIF).
- Parameters
wif (str) – Bitcoin wallet important format.
- Returns
Wallet – Bitcoin wallet instance.
>>> from swap.providers.bitcoin.wallet import Wallet >>> wallet: Wallet = Wallet(network="testnet") >>> wallet.from_wif(wif="cS6utJFQYTQEAY455hRQ5nardhCCoc2yf4M45P71ve5Dx44ag7qg") <swap.providers.bitcoin.wallet.Wallet object at 0x040DA268>
- from_private_key(private_key) swap.providers.bitcoin.wallet.Wallet
Master from Private Key.
- Parameters
private_key (str) – Bitcoin private key.
- Returns
Wallet – Bitcoin wallet instance.
>>> from swap.providers.bitcoin.wallet import Wallet >>> wallet: Wallet = Wallet(network="testnet") >>> wallet.from_private_key(private_key="86e4296c4b8804b952933ddf9b786a0bad1049c1d5b372e43f9336eb4ac2fcb6") <swap.providers.bitcoin.wallet.Wallet object at 0x040DA268>
- from_path(path: str) swap.providers.bitcoin.wallet.Wallet
Drive Bitcoin wallet from path.
- Parameters
path (str) – Bitcoin derivation path.
- Returns
Wallet – Bitcoin wallet instance.
>>> from swap.providers.bitcoin.wallet import Wallet >>> wallet: Wallet = Wallet(network="testnet", use_default_path=False) >>> wallet.from_entropy("ed0802d701a033776811601dd6c5c4a9") >>> wallet.from_path(path="m/44'/1'/0'/0/0") <swap.providers.bitcoin.wallet.Wallet object at 0x040DA268>
- from_index(index: int, hardened: bool = False) swap.providers.bitcoin.wallet.Wallet
Drive Bitcoin from index.
- Parameters
index (int) – Bitcoin derivation index.
hardened (bool) – Use harden, default to
False
.
- Returns
Wallet – Bitcoin wallet instance.
>>> from swap.providers.bitcoin.wallet import Wallet >>> wallet: Wallet = Wallet(network="testnet", use_default_path=False) >>> wallet.from_entropy("ed0802d701a033776811601dd6c5c4a9") >>> wallet.from_index(index=44, hardened=True) >>> wallet.from_index(index=1, hardened=True) >>> wallet.from_index(index=0, hardened=True) >>> wallet.from_index(index=0) >>> wallet.from_index(index=0) <swap.providers.bitcoin.wallet.Wallet object at 0x040DA268>
- clean_derivation() swap.providers.bitcoin.wallet.Wallet
Clean derivation Bitcoin.
- Returns
Wallet – Bitcoin wallet instance.
>>> from swap.providers.bitcoin.wallet import Wallet >>> wallet: Wallet = Wallet(network="testnet") >>> wallet.from_entropy("ed0802d701a033776811601dd6c5c4a9") >>> wallet.from_path("m/44'/1'/0'/0/0") >>> wallet.path() "m/44'/1'/0'/0/0" >>> wallet.clean_derivation() <swap.providers.bitcoin.wallet.Wallet object at 0x040DA268> >>> wallet.path() None
- strength() Optional[int]
Get Bitcoin strength.
- Returns
int – Bitcoin strength.
>>> from swap.providers.bitcoin.wallet import Wallet >>> wallet: Wallet = Wallet(network="testnet") >>> wallet.from_entropy("ed0802d701a033776811601dd6c5c4a9") >>> wallet.strength() 128
- entropy() Optional[str]
Get Bitcoin entropy.
- Returns
str – Bitcoin entropy.
>>> from swap.providers.bitcoin.wallet import Wallet >>> wallet: Wallet = Wallet(network="testnet") >>> wallet.from_mnemonic(mnemonic="unfair divorce remind addict add roof park clown build renew illness fault") >>> wallet.entropy() "ed0802d701a033776811601dd6c5c4a9"
- mnemonic() Optional[str]
Get Bitcoin mnemonic.
- Returns
str – Bitcoin mnemonic.
>>> from swap.providers.bitcoin.wallet import Wallet >>> wallet: Wallet = Wallet(network="testnet") >>> wallet.from_entropy("ed0802d701a033776811601dd6c5c4a9") >>> wallet.mnemonic() "unfair divorce remind addict add roof park clown build renew illness fault"
- passphrase() Optional[str]
Get Bitcoin passphrase.
- Returns
str – Bitcoin passphrase.
>>> from swap.providers.bitcoin.wallet import Wallet >>> wallet: Wallet = Wallet(network="testnet") >>> wallet.from_entropy("ed0802d701a033776811601dd6c5c4a9", passphrase="meherett") >>> wallet.passphrase() "meherett"
- language() Optional[str]
Get Bitcoin language.
- Returns
str – Bitcoin language.
>>> from swap.providers.bitcoin.wallet import Wallet >>> wallet: Wallet = Wallet(network="testnet") >>> wallet.from_entropy("ed0802d701a033776811601dd6c5c4a9") >>> wallet.language() "english"
- seed() Optional[str]
Get Bitcoin seed.
- Returns
str – Bitcoin seed.
>>> from swap.providers.bitcoin.wallet import Wallet >>> wallet: Wallet = Wallet(network="testnet") >>> wallet.from_entropy("ed0802d701a033776811601dd6c5c4a9") >>> wallet.seed() "1cfd5df8a523d53a36cee369a93fac4e9efab5e4e138d479da2fb6df730697574409d572fe8325ec22e8ed25dea7495f498c3f5235fe6ae6d47b989267b6777c"
- root_xprivate_key(encoded: bool = True) Optional[str]
Get Bitcoin root xprivate key.
- Parameters
encoded (bool) – Encoded root xprivate key, default to True.
- Returns
str – Bitcoin root xprivate key.
>>> from swap.providers.bitcoin.wallet import Wallet >>> wallet: Wallet = Wallet(network="testnet") >>> wallet.from_entropy("ed0802d701a033776811601dd6c5c4a9") >>> wallet.root_xprivate_key() "tprv8ZgxMBicQKsPeMHMJAc6uWGYiGqi1MVM2ybmzXL2TAoDpQe85uyDpdT7mv7Nhdu5rTCBEKLZsd9KyP2LQZJzZTvgVQvENArgU8e6DoYBiXf"
- root_xpublic_key(encoded: bool = True) Optional[str]
Get Bitcoin root xpublic key.
- Parameters
encoded (bool) – Encoded root xpublic key, default to True.
- Returns
str – Bitcoin root xpublic key.
>>> from swap.providers.bitcoin.wallet import Wallet >>> wallet = Wallet(network="testnet") >>> wallet.from_entropy("ed0802d701a033776811601dd6c5c4a9") >>> wallet.root_xpublic_key() "tpubD6NzVbkrYhZ4XpK9BpGhJuvfHJMeAggFcHCZH3NKsSbcetttiJnp184yx2cp2uJyapPQLt7LGTLUZvnKWbdgKBkvnfYjab9sH4wBmEpTZhJ"
- xprivate_key(encoded: bool = True) Optional[str]
Get Bitcoin root xprivate key.
- Parameters
encoded (bool) – Encoded root xprivate key, default to True.
- Returns
str – Bitcoin root xprivate key.
>>> from swap.providers.bitcoin.wallet import Wallet >>> wallet: Wallet = Wallet(network="testnet") >>> wallet.from_entropy("ed0802d701a033776811601dd6c5c4a9") >>> wallet.from_path("m/44'/1'/0'/0/0") >>> wallet.xprivate_key() "tprv8kqWVfMdSgo9WhUAxbmL6GNW4ivePvEZBu8QiiRfMXbVDgnHx16vndnAsv7Uds4iFvjMpdJiB6q6hhh753fRb89XFjHGjYJ8BsMZGv3RTKz"
- xpublic_key(encoded: bool = True) Optional[str]
Get Bitcoin xpublic key.
- Parameters
encoded (bool) – Encoded xprivate key, default to True.
- Returns
str – Bitcoin xpublic key.
>>> from swap.providers.bitcoin.wallet import Wallet >>> wallet: Wallet = Wallet(network="testnet") >>> wallet.from_entropy("ed0802d701a033776811601dd6c5c4a9") >>> wallet.from_path("m/44'/1'/0'/0/0") >>> wallet.xpublic_key() "tpubDHXYe5Psb4UpQAVxrFRvVg2cdkSaZFRTmCjC1ETxmoPt4B34aPvWy8Q343tUsTaCQCiSJVpzgyP1NQ3mffY7oF6u6cJ6Csx3AhgFFLVoUBu"
- uncompressed(compressed: Optional[str] = None) str
Get Bitcoin Uncompressed public key.
- Parameters
compressed (str) – Compressed public key, default to
None
.- Returns
str – Bitcoin Uncompressed public key.
>>> from swap.providers.bitcoin.wallet import Wallet >>> wallet: Wallet = Wallet(network="testnet") >>> wallet.from_entropy("ed0802d701a033776811601dd6c5c4a9") >>> wallet.from_path("m/44'/1'/0'/0/0") >>> wallet.uncompressed() "f4206f9c6d35f50b3b05edc13118ab64d27959d0b7412638bfea5d132b3fb36c6d9515384318aab7fc4d15d5a1ed7999c12ae6b9d1fe11979309630d201ba632"
- compressed(uncompressed: Optional[str] = None) str
Get Bitcoin Compressed public key.
- Parameters
uncompressed (str) – Uncompressed public key, default to
None
.- Returns
str – Bitcoin Compressed public key.
>>> from swap.providers.bitcoin.wallet import Wallet >>> wallet: Wallet = Wallet(network="testnet") >>> wallet.from_entropy("ed0802d701a033776811601dd6c5c4a9") >>> wallet.from_path("m/44'/1'/0'/0/0") >>> wallet.compressed() "02f4206f9c6d35f50b3b05edc13118ab64d27959d0b7412638bfea5d132b3fb36c"
- chain_code() str
Get Bitcoin chain code.
- Returns
str – Bitcoin chain code.
>>> from swap.providers.bitcoin.wallet import Wallet >>> wallet: Wallet = Wallet(network="testnet") >>> wallet.from_entropy("ed0802d701a033776811601dd6c5c4a9") >>> wallet.from_path("m/44'/1'/0'/0/0") >>> wallet.chain_code() "cbe00345c4cfa83dc315e52b1d5acaf2c6fce1bc8760f02696c05c3a94171304"
- private_key() str
Get Bitcoin private key.
- Returns
str – Bitcoin private key.
>>> from swap.providers.bitcoin.wallet import Wallet >>> wallet: Wallet = Wallet(network="testnet") >>> wallet.from_entropy("ed0802d701a033776811601dd6c5c4a9") >>> wallet.from_path("m/44'/1'/0'/0/0") >>> wallet.private_key() "86e4296c4b8804b952933ddf9b786a0bad1049c1d5b372e43f9336eb4ac2fcb6"
- public_key(compressed: bool = True, private_key: Optional[str] = None) str
Get Bitcoin Public key.
- Parameters
compressed (bool) – Compressed public key, default to
True
.private_key (str) – Private key hex string, default to
None
.
- Returns
str – Bitcoin public key.
>>> from swap.providers.bitcoin.wallet import Wallet >>> wallet: Wallet = Wallet(network="testnet") >>> wallet.from_entropy("ed0802d701a033776811601dd6c5c4a9") >>> wallet.from_path("m/44'/1'/0'/0/0") >>> wallet.public_key() "02f4206f9c6d35f50b3b05edc13118ab64d27959d0b7412638bfea5d132b3fb36c"
- path() Optional[str]
Get Bitcoin path.
- Returns
str – Bitcoin path.
>>> from swap.providers.bitcoin.wallet import Wallet >>> wallet: Wallet = Wallet(network="testnet") >>> wallet.from_entropy("ed0802d701a033776811601dd6c5c4a9") >>> wallet.from_path("m/44'/1'/0'/0/0") >>> wallet.path() "m/44'/1'/0'/0/0"
- wif() str
Get Bitcoin important format (WIF).
- Returns
str – Bitcoin important format.
>>> from swap.providers.bitcoin.wallet import Wallet >>> wallet: Wallet = Wallet(network="testnet") >>> wallet.from_entropy("ed0802d701a033776811601dd6c5c4a9") >>> wallet.from_path("m/44'/1'/0'/0/0") >>> wallet.wif() "cS6utJFQYTQEAY455hRQ5nardhCCoc2yf4M45P71ve5Dx44ag7qg"
- hash(private_key: Optional[str] = None) str
Get Bitcoin public key/address hash.
- Returns
str – Bitcoin public key/address hash.
>>> from swap.providers.bitcoin.wallet import Wallet >>> wallet: Wallet = Wallet(network="testnet") >>> wallet.from_entropy("ed0802d701a033776811601dd6c5c4a9") >>> wallet.from_path("m/44'/1'/0'/0/0") >>> wallet.hash() "e00ff2a640b7ce2d336860739169487a57f84b15"
- address() str
Get Bitcoin address.
- Returns
str – Bitcoin address.
>>> from swap.providers.bitcoin.wallet import Wallet >>> wallet: Wallet = Wallet(network="testnet") >>> wallet.from_entropy("ed0802d701a033776811601dd6c5c4a9") >>> wallet.from_path("m/44'/1'/0'/0/0") >>> wallet.address() "n1wgm6kkzMcNfAtJmes8YhpvtDzdNhDY5a"
- balance(unit: str = 'Satoshi') Union[int, float]
Get Bitcoin balance.
- Parameters
unit (str) – Bitcoin unit, default to Satoshi.
- Returns
int, float – Bitcoin balance.
>>> from swap.providers.bitcoin.wallet import Wallet >>> wallet: Wallet = Wallet(network="testnet") >>> wallet.from_entropy("ed0802d701a033776811601dd6c5c4a9") >>> wallet.from_path("m/44'/1'/0'/0/0") >>> wallet.balance(unit="BTC") 0.2
- utxos(limit: int = 15) list
Get Bitcoin unspent transaction output (UTXO’s).
- Parameters
limit (int) – Limit of UTXO’s, default is 15.
- Returns
list – Bitcoin unspent transaction outputs.
>>> from swap.providers.bitcoin.wallet import Wallet >>> wallet: Wallet = Wallet(network="testnet") >>> wallet.from_entropy("ed0802d701a033776811601dd6c5c4a9") >>> wallet.from_path("m/44'/1'/0'/0/0") >>> wallet.utxos() [{'index': 0, 'hash': '9d60a8b4dd16d4bf02835a21a3e9154e636ba06ad55368f36114eb7e930b35e8', 'output_index': 1, 'amount': 100000, 'script': '76a914e00ff2a640b7ce2d336860739169487a57f84b1588ac'}, {'index': 1, 'hash': '77ecb5ffe0f85454183bcab0cf1e15bfc62dc86cbdeaf374224ba03cb5cd7d29', 'output_index': 0, 'amount': 10000, 'script': '76a914e00ff2a640b7ce2d336860739169487a57f84b1588ac'}, {'index': 2, 'hash': 'e3ed50900a06990c123f3e87187009ce124cb65a46cd45eba5773fb0979fce43', 'output_index': 0, 'amount': 1797372, 'script': '76a914e00ff2a640b7ce2d336860739169487a57f84b1588ac'}]