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 instance.

Note

Bitcoin has only two networks, mainnet and mainnet.

from_entropy(entropy: str, language: str = 'english', passphrase: Optional[str] = None) swap.providers.bitcoin.wallet.Wallet

Initialize wallet from entropy.

Parameters
  • entropy (str) – Bitcoin entropy.

  • language (str) – Bitcoin language, default to english.

  • passphrase (str) – Bitcoin passphrase, default to None.

Returns

Wallet – Bitcoin 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

Initialize wallet from mnemonic.

Parameters
  • mnemonic (str) – Bitcoin mnemonic.

  • language (str) – Bitcoin language, default to english.

  • passphrase (str) – Bitcoin passphrase, default to None.

Returns

Wallet – Bitcoin 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

Initialize wallet from seed.

Parameters

seed (str) – Bitcoin seed.

Returns

Wallet – Bitcoin 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_root_xprivate_key(xprivate_key: str, strict: bool = True) swap.providers.bitcoin.wallet.Wallet

Master from Root XPrivate Key.

Parameters
  • xprivate_key (str) – Bitcoin XPrivate key.

  • strict (bool) – Strict for must be root xprivate key, default to True.

Returns

Wallet – Bitcoin 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_root_xpublic_key(xpublic_key: str, strict: bool = True) swap.providers.bitcoin.wallet.Wallet

Master from Root XPublic Key.

Parameters
  • xpublic_key (str) – Bitcoin XPublic key.

  • strict (bool) – Strict for must be root xprivate key, default to True.

Returns

Wallet – Bitcoin instance.

>>> from swap.providers.bitcoin.wallet import Wallet
>>> wallet: Wallet = Wallet(network="testnet")
>>> wallet.from_root_xpublic_key(xpublic_key="tpubD6NzVbkrYhZ4XpK9BpGhJuvfHJMeAggFcHCZH3NKsSbcetttiJnp184yx2cp2uJyapPQLt7LGTLUZvnKWbdgKBkvnfYjab9sH4wBmEpTZhJ")
<swap.providers.bitcoin.wallet.Wallet object at 0x040DA268>
from_xprivate_key(xprivate_key: str) swap.providers.bitcoin.wallet.Wallet

Initialize wallet from root xprivate key.

Parameters

xprivate_key (str) – Bitcoin root xprivate key.

Returns

Wallet – Bitcoin instance.

>>> from swap.providers.bitcoin.wallet import Wallet
>>> wallet: Wallet = Wallet(network="testnet")
>>> wallet.from_xprivate_key(xprivate_key="tprv8kqWVfMdSgo9WhUAxbmL6GNW4ivePvEZBu8QiiRfMXbVDgnHx16vndnAsv7Uds4iFvjMpdJiB6q6hhh753fRb89XFjHGjYJ8BsMZGv3RTKz")
<swap.providers.bitcoin.wallet.Wallet object at 0x040DA268>
from_xpublic_key(xpublic_key: str) swap.providers.bitcoin.wallet.Wallet

Initialize wallet from XPrivate key.

Parameters

xpublic_key (str) – Bitcoin XPrivate key.

Returns

Wallet – Bitcoin instance.

>>> from swap.providers.bitcoin.wallet import Wallet
>>> wallet: Wallet = Wallet(network="testnet")
>>> wallet.from_xprivate_key(xprivate_key="tpubDHXYe5Psb4UpQAVxrFRvVg2cdkSaZFRTmCjC1ETxmoPt4B34aPvWy8Q343tUsTaCQCiSJVpzgyP1NQ3mffY7oF6u6cJ6Csx3AhgFFLVoUBu")
<swap.providers.bitcoin.wallet.Wallet object at 0x040DA268>
from_wif(wif: str) swap.providers.bitcoin.wallet.Wallet

Initialize wallet from wallet important format (WIF).

Parameters

wif (str) – Bitcoin important format.

Returns

Wallet – Bitcoin 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

Initialize wallet from private key.

Parameters

private_key (str) – Bitcoin private key.

Returns

Wallet – Bitcoin 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 from path.

Parameters

path (str) – Bitcoin path.

Returns

Wallet – Bitcoin 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 index.

  • hardened (bool) – Use harden, default to False.

Returns

Wallet – Bitcoin 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 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'}]