Wallet

The implementation of Hierarchical Deterministic (HD) wallets generator for Bitcoin blockchain.

class swap.providers.bitcoin.wallet.Wallet(network: str = 'mainnet')

Bitcoin Wallet class.

Parameters

network (str) – Bitcoin network, defaults to mainnet.

Returns

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

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

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

Returns

Wallet – Bitcoin wallet instance.

>>> from swap.providers.bitcoin.wallet import Wallet
>>> wallet = Wallet(network="testnet")
>>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1")
<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 wallet mnemonic.

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

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

Returns

Wallet – Bitcoin wallet instance.

>>> from swap.providers.bitcoin.wallet import Wallet
>>> wallet = Wallet(network="testnet")
>>> wallet.from_mnemonic("indicate warm sock mistake code spot acid ribbon sing over taxi toast")
<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 wallet seed.

Returns

Wallet – Bitcoin wallet instance.

>>> from swap.providers.bitcoin.wallet import Wallet
>>> wallet = Wallet(network="testnet")
>>> wallet.from_seed("baff3e1fe60e1f2a2d840d304acc98d1818140c79354a353b400fb019bfb256bc392d7aa9047adff1f14bce0342e14605c6743a6c08e02150588375eb2eb7d49")
<swap.providers.bitcoin.wallet.Wallet object at 0x040DA268>
from_root_xprivate_key(root_xprivate_key: str)swap.providers.bitcoin.wallet.Wallet

Initialize wallet from root xprivate key.

Parameters

root_xprivate_key (str) – Bitcoin wallet root xprivate key.

Returns

Wallet – Bitcoin wallet instance.

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

Initialize wallet from xprivate key.

Parameters

xprivate_key (str) – Bitcoin wallet xprivate key.

Returns

Wallet – Bitcoin wallet instance.

>>> from swap.providers.bitcoin.wallet import Wallet
>>> wallet = Wallet(network="testnet")
>>> wallet.from_xprivate_key("tprv8kPCFydoWU9ybQunXq7g17Me57ac5gcj8RartGqetP4wAnoDHQAVnLY4RtbYE3WH6xBLHbBJ1VZcRutM712SRQkLFM2PCeoKfsPpndYUajZ")
<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 wallet important format.

Returns

Wallet – Bitcoin wallet instance.

>>> from swap.providers.bitcoin.wallet import Wallet
>>> wallet = Wallet(network="testnet")
>>> wallet.from_wif("cTQpBvBAavuh6VzpeXiutLLTA5Uckr4eAJKuFsBMU1aQXBye1Z9n")
<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 wallet private key.

Returns

Wallet – Bitcoin wallet instance.

>>> from swap.providers.bitcoin.wallet import Wallet
>>> wallet = Wallet(network="testnet")
>>> wallet.from_private_key("adf0218f7e7276ed0f40b6919f2473497dd2bf7dcd4cabff4d4ef0e11948cde7")
<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 wallet path.

Returns

Wallet – Bitcoin wallet instance.

>>> from swap.providers.bitcoin.wallet import Wallet
>>> wallet = Wallet(network="testnet")
>>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1")
>>> wallet.from_path("m/44'/0'/0'/0/0")
<swap.providers.bitcoin.wallet.Wallet object at 0x040DA268>
from_index(index: int, harden: bool = False)swap.providers.bitcoin.wallet.Wallet

Drive Bitcoin wallet from index.

Parameters
  • index (int) – Bitcoin wallet index.

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

Returns

Wallet – Bitcoin wallet instance.

>>> from swap.providers.bitcoin.wallet import Wallet
>>> wallet = Wallet(network="testnet")
>>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1")
>>> wallet.from_index(44, harden=True)
>>> wallet.from_index(0, harden=True)
>>> wallet.from_index(0, harden=True)
>>> wallet.from_index(0)
>>> wallet.from_index(0)
<swap.providers.bitcoin.wallet.Wallet object at 0x040DA268>
clean_derivation()swap.providers.bitcoin.wallet.Wallet

Clean derivation Bitcoin wallet.

Returns

Wallet – Bitcoin wallet instance.

>>> from swap.providers.bitcoin.wallet import Wallet
>>> wallet = Wallet(network="testnet")
>>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1")
>>> wallet.from_path("m/44'/0'/0'/0/0")
>>> wallet.path()
"m/44'/0'/0'/0/0"
>>> wallet.clean_derivation()
<swap.providers.bitcoin.wallet.Wallet object at 0x040DA268>
>>> wallet.path()
None
strength()Optional[int]

Get Bitcoin wallet strength.

Returns

int – Bitcoin wallet strength.

>>> from swap.providers.bitcoin.wallet import Wallet
>>> wallet = Wallet(network="testnet")
>>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1")
>>> wallet.strength()
128
entropy()Optional[str]

Get Bitcoin wallet entropy.

Returns

str – Bitcoin wallet entropy.

>>> from swap.providers.bitcoin.wallet import Wallet
>>> wallet = Wallet(network="testnet")
>>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1")
>>> wallet.entropy()
"72fee73846f2d1a5807dc8c953bf79f1"
mnemonic()Optional[str]

Get Bitcoin wallet mnemonic.

Returns

str – Bitcoin wallet mnemonic.

>>> from swap.providers.bitcoin.wallet import Wallet
>>> wallet = Wallet(network="testnet")
>>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1")
>>> wallet.mnemonic()
"indicate warm sock mistake code spot acid ribbon sing over taxi toast"
passphrase()Optional[str]

Get Bitcoin wallet passphrase.

Returns

str – Bitcoin wallet passphrase.

>>> from swap.providers.bitcoin.wallet import Wallet
>>> wallet = Wallet(network="testnet")
>>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1", passphrase="meherett")
>>> wallet.passphrase()
"meherett"
language()Optional[str]

Get Bitcoin wallet language.

Returns

str – Bitcoin wallet language.

>>> from swap.providers.bitcoin.wallet import Wallet
>>> wallet = Wallet(network="testnet")
>>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1")
>>> wallet.language()
"english"
seed()Optional[str]

Get Bitcoin wallet seed.

Returns

str – Bitcoin wallet seed.

>>> from swap.providers.bitcoin.wallet import Wallet
>>> wallet = Wallet(network="testnet")
>>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1")
>>> wallet.seed()
"baff3e1fe60e1f2a2d840d304acc98d1818140c79354a353b400fb019bfb256bc392d7aa9047adff1f14bce0342e14605c6743a6c08e02150588375eb2eb7d49"
root_xprivate_key(encoded: bool = True)Optional[str]

Get Bitcoin wallet root xprivate key.

Parameters

encoded (bool) – Encoded root xprivate key, default to True.

Returns

str – Bitcoin wallet root xprivate key.

>>> from swap.providers.bitcoin.wallet import Wallet
>>> wallet = Wallet(network="testnet")
>>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1")
>>> wallet.root_xprivate_key()
"tprv8ZgxMBicQKsPeLxEBy2sJ8CqLdc76FUzeaiY5egrW4JdpM4F9b9A3L6AQhsY1TRsqJAfTdH7DdRAt5hRdcdhn5LnMZPiaGRR7Snrmd8CLqR"
root_xpublic_key(encoded: bool = True)Optional[str]

Get Bitcoin wallet root xpublic key.

Parameters

encoded (bool) – Encoded root xprivate key, default to True.

Returns

str – Bitcoin wallet root xpublic key.

>>> from swap.providers.bitcoin.wallet import Wallet
>>> wallet = Wallet(network="testnet")
>>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1")
>>> wallet.root_xpublic_key()
"tpubD6NzVbkrYhZ4Xoz25chThXrwuf83FafuDtKKNAj9vL72eqK1myxkDpi2aq9PKCbaQEbJZEaQBwiDQvYuMFZSWPNbypVJkNLfDHwvswpn4m4"
xprivate_key(encoded=True)Optional[str]

Get Bitcoin wallet xprivate key.

Parameters

encoded (bool) – Encoded xprivate key, default to True.

Returns

str – Bitcoin wallet xprivate key.

>>> from swap.providers.bitcoin.wallet import Wallet
>>> wallet = Wallet(network="testnet")
>>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1")
>>> wallet.from_path("m/44'/0'/0'/0/0")
>>> wallet.xprivate_key()
"tprv8kPCFydoWU9ybQunXq7g17Me57ac5gcj8RartGqetP4wAnoDHQAVnLY4RtbYE3WH6xBLHbBJ1VZcRutM712SRQkLFM2PCeoKfsPpndYUajZ"
xpublic_key(encoded: bool = True)Optional[str]

Get Bitcoin wallet xpublic key.

Parameters

encoded (bool) – Encoded xprivate key, default to True.

Returns

str – Bitcoin wallet xpublic key.

>>> from swap.providers.bitcoin.wallet import Wallet
>>> wallet = Wallet(network="testnet")
>>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1")
>>> wallet.from_path("m/44'/0'/0'/0/0")
>>> wallet.xpublic_key()
"tpubDH5EQPg3eqqeUswaRUnGQX1ke96YF1odhjBeAnsxJesL1H3yunz5xq9vbzGdsRqx3hnsMwZxn9icChmwC8W2gJEJR29iUaRBtCUbPrE7WXm"
uncompressed()str

Get Bitcoin wallet uncompressed public key.

Returns

str – Bitcoin wallet uncompressed public key.

>>> from swap.providers.bitcoin.wallet import Wallet
>>> wallet = Wallet(network="testnet")
>>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1")
>>> wallet.from_path("m/44'/0'/0'/0/0")
>>> wallet.uncompressed()
"065e8cb5fa76699079860a450bddd0e37e0ad3dbf2ddfd01d7b600231e6cde8ebc4241db8d66eb8085d5805bd2c4dd588ab3b6f9ec50c2ac3da4c557e15eca2e"
compressed()str

Get Bitcoin wallet compressed public key.

Returns

str – Bitcoin wallet compressed public key.

>>> from swap.providers.bitcoin.wallet import Wallet
>>> wallet = Wallet(network="testnet")
>>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1")
>>> wallet.from_path("m/44'/0'/0'/0/0")
>>> wallet.compressed()
"02065e8cb5fa76699079860a450bddd0e37e0ad3dbf2ddfd01d7b600231e6cde8e"
chain_code()str

Get Bitcoin wallet chain code.

Returns

str – Bitcoin wallet chain code.

>>> from swap.providers.bitcoin.wallet import Wallet
>>> wallet = Wallet(network="testnet")
>>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1")
>>> wallet.from_path("m/44'/0'/0'/0/0")
>>> wallet.chain_code()
"33a1c82cd13444724d0d217da8be96a8dcf663c8289ba870231c5f60e31accc5"
private_key()str

Get Bitcoin wallet private key.

Returns

str – Bitcoin wallet private key.

>>> from swap.providers.bitcoin.wallet import Wallet
>>> wallet = Wallet(network="testnet")
>>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1")
>>> wallet.from_path("m/44'/0'/0'/0/0")
>>> wallet.private_key()
"adf0218f7e7276ed0f40b6919f2473497dd2bf7dcd4cabff4d4ef0e11948cde7"
public_key(private_key: Optional[str] = None)str

Get Bitcoin wallet public key.

Returns

str – Bitcoin wallet public key.

>>> from swap.providers.bitcoin.wallet import Wallet
>>> wallet = Wallet(network="testnet")
>>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1")
>>> wallet.from_path("m/44'/0'/0'/0/0")
>>> wallet.public_key()
"02065e8cb5fa76699079860a450bddd0e37e0ad3dbf2ddfd01d7b600231e6cde8e"
path()Optional[str]

Get Bitcoin wallet path.

Returns

str – Bitcoin wallet path.

>>> from swap.providers.bitcoin.wallet import Wallet
>>> wallet = Wallet(network="testnet")
>>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1")
>>> wallet.from_path("m/44'/0'/0'/0/0")
>>> wallet.path()
"m/44'/0'/0'/0/0"
address()str

Get Bitcoin wallet address.

Returns

str – Bitcoin wallet address.

>>> from swap.providers.bitcoin.wallet import Wallet
>>> wallet = Wallet(network="testnet")
>>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1")
>>> wallet.from_path("m/44'/0'/0'/0/0")
>>> wallet.address()
"mkFWGt4hT11XS8dJKzzRFsTrqjjAwZfQAC"
wif()str

Get Bitcoin wallet important format (WIF).

Returns

str – Bitcoin wallet important format.

>>> from swap.providers.bitcoin.wallet import Wallet
>>> wallet = Wallet(network="testnet")
>>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1")
>>> wallet.from_path("m/44'/0'/0'/0/0")
>>> wallet.wif()
"cTQpBvBAavuh6VzpeXiutLLTA5Uckr4eAJKuFsBMU1aQXBye1Z9n"
hash()str

Get Bitcoin wallet public key/address hash.

Returns

str – Bitcoin wallet public key/address hash.

>>> from swap.providers.bitcoin.wallet import Wallet
>>> wallet = Wallet(network="testnet")
>>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1")
>>> wallet.from_path("m/44'/0'/0'/0/0")
>>> wallet.hash()
"33ecab3d67f0e2bde43e52f41ec1ecbdc73f11f8"
p2pkh()str

Get Bitcoin wallet public key/address p2pkh.

Returns

str – Bitcoin wallet public key/address p2pkh.

>>> from swap.providers.bitcoin.wallet import Wallet
>>> wallet = Wallet(network="testnet")
>>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1")
>>> wallet.from_path("m/44'/0'/0'/0/0")
>>> wallet.p2pkh()
"76a91433ecab3d67f0e2bde43e52f41ec1ecbdc73f11f888ac"
balance()int

Get Bitcoin wallet balance.

Returns

int – Bitcoin wallet balance (SATOSHI amount).

>>> from swap.providers.bitcoin.wallet import Wallet
>>> wallet = Wallet(network="testnet")
>>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1")
>>> wallet.from_path("m/44'/0'/0'/0/0")
>>> wallet.balance()
67966
utxos(limit: int = 15)list

Get Bitcoin wallet 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(network="testnet")
>>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1")
>>> wallet.from_path("m/44'/0'/0'/0/0")
>>> wallet.utxos()
[{'index': 0, 'hash': '98c6a3d4e136d32d0848126e08325c94da2e8217593e92236471b11b42ee7999', 'output_index': 1, 'amount': 67966, 'script': '76a91433ecab3d67f0e2bde43e52f41ec1ecbdc73f11f888ac'}]