Wallet

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

class swap.providers.xinfin.wallet.Wallet(network: str = 'mainnet', provider: str = 'http')

XinFin Wallet class.

Parameters
  • network (str) – XinFin network, defaults to mainnet.

  • provider (str) – XinFin network provider, defaults to http.

Returns

Wallet – XinFin wallet instance.

Note

XinFin has only two networks, mainnet, apothem and testnet.

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

Master from Entropy.

Parameters
  • entropy (str) – XinFin wallet entropy.

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

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

Returns

Wallet – XinFin wallet instance.

>>> from swap.providers.xinfin.wallet import Wallet
>>> wallet: Wallet = Wallet(network="testnet")
>>> wallet.from_entropy(entropy="ed0802d701a033776811601dd6c5c4a9")
<swap.providers.xinfin.wallet.Wallet object at 0x040DA268>
from_mnemonic(mnemonic: str, language: Optional[str] = None, passphrase: Optional[str] = None) swap.providers.xinfin.wallet.Wallet

Master from Mnemonic.

Parameters
  • mnemonic (str) – XinFin wallet mnemonic.

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

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

Returns

Wallet – XinFin wallet instance.

>>> from swap.providers.xinfin.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.xinfin.wallet.Wallet object at 0x040DA268>
from_seed(seed: str) swap.providers.xinfin.wallet.Wallet

Master from Seed.

Parameters

seed (str) – XinFin wallet seed.

Returns

Wallet – XinFin wallet instance.

>>> from swap.providers.xinfin.wallet import Wallet
>>> wallet: Wallet = Wallet(network="testnet")
>>> wallet.from_seed(seed="1cfd5df8a523d53a36cee369a93fac4e9efab5e4e138d479da2fb6df730697574409d572fe8325ec22e8ed25dea7495f498c3f5235fe6ae6d47b989267b6777c")
<swap.providers.xinfin.wallet.Wallet object at 0x040DA268>
from_xprivate_key(xprivate_key: str, strict: bool = True) swap.providers.xinfin.wallet.Wallet

Master from Root XPrivate Key.

Parameters
  • xprivate_key (str) – XinFin root xprivate key.

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

Returns

Wallet – XinFin wallet instance.

>>> from swap.providers.xinfin.wallet import Wallet
>>> wallet: Wallet = Wallet(network="testnet")
>>> wallet.from_xprivate_key(xprivate_key="xprv9s21ZrQH143K3Y3pdbkbjreZQ9RVmqTLhRgf86uZyCJk2ou36YdUJt5frjwihGWmV1fQEDioiGZXWXUbHLy3kQf5xmhvhp8dZ2tfn6tgGUj")
<swap.providers.xinfin.wallet.Wallet object at 0x040DA268>
from_xpublic_key(xpublic_key: str, strict: bool = True) swap.providers.xinfin.wallet.Wallet

Master from Root XPublic Key.

Parameters
  • xpublic_key (str) – XinFin root xpublic key.

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

Returns

Wallet – XinFin wallet instance.

>>> from swap.providers.xinfin.wallet import Wallet
>>> wallet: Wallet = Wallet(network="testnet")
>>> wallet.from_xpublic_key(xpublic_key="xpub661MyMwAqRbcG28HjdHc6zbHxBFzBJBC4ecFvVKBXXqiucEBe5wirgQ9hzY2WQMjnurVjJbTjMWRskHi7jnSRkJdj4oRu4Vdh7Ln1F83mLJ")
<swap.providers.xinfin.wallet.Wallet object at 0x040DA268>
from_wif(wif: str) swap.providers.xinfin.wallet.Wallet

Master from Wallet Important Format (WIF).

Parameters

wif (str) – XinFin wallet important format.

Returns

Wallet – XinFin wallet instance.

>>> from swap.providers.xinfin.wallet import Wallet
>>> wallet: Wallet = Wallet(network="testnet")
>>> wallet.from_wif(wif="L1rYHjuxQtgTeU4qMUP6qnGqW9nstFt5drQktRuFGFSuGcCpZoJq")
<swap.providers.xinfin.wallet.Wallet object at 0x040DA268>
from_private_key(private_key) swap.providers.xinfin.wallet.Wallet

Master from Private Key.

Parameters

private_key (str) – XinFin private key.

Returns

Wallet – XinFin wallet instance.

>>> from swap.providers.xinfin.wallet import Wallet
>>> wallet: Wallet = Wallet(network="testnet")
>>> wallet.from_private_key(private_key="8a4bc8131e99a5d1064cdbca6949aa2ec16152967b19f2cee3096daefd5ca857")
<swap.providers.xinfin.wallet.Wallet object at 0x040DA268>
from_path(path: str) swap.providers.xinfin.wallet.Wallet

Drive XinFin wallet from path.

Parameters

path (str) – XinFin derivation path.

Returns

Wallet – XinFin wallet instance.

>>> from swap.providers.xinfin.wallet import Wallet
>>> wallet: Wallet = Wallet(network="testnet")
>>> wallet.from_entropy(entropy="ed0802d701a033776811601dd6c5c4a9")
>>> wallet.from_path(path="m/44'/550'/0'/0/0")
<swap.providers.xinfin.wallet.Wallet object at 0x040DA268>
from_index(index: int, hardened: bool = False) swap.providers.xinfin.wallet.Wallet

Drive XinFin wallet from index.

Parameters
  • index (int) – XinFin derivation index.

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

Returns

Wallet – XinFin wallet instance.

>>> from swap.providers.xinfin.wallet import Wallet
>>> wallet: Wallet = Wallet(network="testnet")
>>> wallet.from_entropy(entropy="ed0802d701a033776811601dd6c5c4a9")
>>> wallet.from_index(44, harden=True)
>>> wallet.from_index(550, harden=True)
>>> wallet.from_index(0, harden=True)
>>> wallet.from_index(0)
>>> wallet.from_index(0)
<swap.providers.xinfin.wallet.Wallet object at 0x040DA268>
clean_derivation() swap.providers.xinfin.wallet.Wallet

Clean derivation XinFin wallet.

Returns

Wallet – XinFin wallet instance.

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

Get XinFin wallet strength.

Returns

int – XinFin wallet strength.

>>> from swap.providers.xinfin.wallet import Wallet
>>> wallet: Wallet = Wallet(network="testnet")
>>> wallet.from_entropy(entropy="ed0802d701a033776811601dd6c5c4a9")
>>> wallet.strength()
128
entropy() Optional[str]

Get XinFin wallet entropy.

Returns

str – XinFin wallet entropy.

>>> from swap.providers.xinfin.wallet import Wallet
>>> wallet: Wallet = Wallet(network="testnet")
>>> wallet.from_entropy(entropy="ed0802d701a033776811601dd6c5c4a9")
>>> wallet.entropy()
"ed0802d701a033776811601dd6c5c4a9"
mnemonic() Optional[str]

Get XinFin wallet mnemonic.

Returns

str – XinFin wallet mnemonic.

>>> from swap.providers.xinfin.wallet import Wallet
>>> wallet: Wallet = Wallet(network="testnet")
>>> wallet.from_entropy(entropy="ed0802d701a033776811601dd6c5c4a9")
>>> wallet.mnemonic()
"unfair divorce remind addict add roof park clown build renew illness fault"
passphrase() Optional[str]

Get XinFin wallet passphrase.

Returns

str – XinFin wallet passphrase.

>>> from swap.providers.xinfin.wallet import Wallet
>>> wallet: Wallet = Wallet(network="testnet")
>>> wallet.from_entropy(entropy="ed0802d701a033776811601dd6c5c4a9", passphrase="meherett")
>>> wallet.passphrase()
"meherett"
language() Optional[str]

Get XinFin wallet language.

Returns

str – XinFin wallet language.

>>> from swap.providers.xinfin.wallet import Wallet
>>> wallet: Wallet = Wallet(network="testnet")
>>> wallet.from_entropy(entropy="ed0802d701a033776811601dd6c5c4a9")
>>> wallet.language()
"english"
seed() Optional[str]

Get XinFin wallet seed.

Returns

str – XinFin wallet seed.

>>> from swap.providers.xinfin.wallet import Wallet
>>> wallet: Wallet = Wallet(network="testnet")
>>> wallet.from_entropy(entropy="ed0802d701a033776811601dd6c5c4a9")
>>> wallet.seed()
"1cfd5df8a523d53a36cee369a93fac4e9efab5e4e138d479da2fb6df730697574409d572fe8325ec22e8ed25dea7495f498c3f5235fe6ae6d47b989267b6777c"
root_xprivate_key(encoded: bool = True) Optional[str]

Get XinFin wallet root xprivate key.

Parameters

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

Returns

str – XinFin wallet root xprivate key.

>>> from swap.providers.xinfin.wallet import Wallet
>>> wallet: Wallet = Wallet(network="testnet")
>>> wallet.from_entropy(entropy="ed0802d701a033776811601dd6c5c4a9")
>>> wallet.root_xprivate_key()
"xprv9s21ZrQH143K3Y3pdbkbjreZQ9RVmqTLhRgf86uZyCJk2ou36YdUJt5frjwihGWmV1fQEDioiGZXWXUbHLy3kQf5xmhvhp8dZ2tfn6tgGUj"
root_xpublic_key(encoded: bool = True) Optional[str]

Get XinFin wallet root xpublic key.

Parameters

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

Returns

str – XinFin wallet root xpublic key.

>>> from swap.providers.xinfin.wallet import Wallet
>>> wallet: Wallet = Wallet(network="testnet")
>>> wallet.from_entropy(entropy="ed0802d701a033776811601dd6c5c4a9")
>>> wallet.root_xpublic_key()
"xpub661MyMwAqRbcG28HjdHc6zbHxBFzBJBC4ecFvVKBXXqiucEBe5wirgQ9hzY2WQMjnurVjJbTjMWRskHi7jnSRkJdj4oRu4Vdh7Ln1F83mLJ"
xprivate_key(encoded=True) Optional[str]

Get XinFin wallet xprivate key.

Parameters

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

Returns

str – XinFin wallet xprivate key.

>>> from swap.providers.xinfin.wallet import Wallet
>>> wallet: Wallet = Wallet(network="testnet")
>>> wallet.from_entropy(entropy="ed0802d701a033776811601dd6c5c4a9")
>>> wallet.from_path(path="m/44'/550'/0'/0/0")
>>> wallet.xprivate_key()
"xprvA3QFrUVTkKpfRhqjgPq897uDFAYtt9VhMdDuZVbPboVf9uPMcMmr7W8sTsrd8nFCsVGSBCpGC3jreRpu8Zs1xsG5U98GZL24AqXYNPuo1rg"
xpublic_key(encoded: bool = True) Optional[str]

Get XinFin wallet xpublic key.

Parameters

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

Returns

str – XinFin wallet xpublic key.

>>> from swap.providers.xinfin.wallet import Wallet
>>> wallet: Wallet = Wallet(network="testnet")
>>> wallet.from_entropy(entropy="ed0802d701a033776811601dd6c5c4a9")
>>> wallet.from_path(path="m/44'/550'/0'/0/0")
>>> wallet.xpublic_key()
"xpub6GPcFz2MahNxeBvCnRN8WFqwoCPPHcDYir9WMt11A92e2hiW9u66fJTMKAB81ns7kpAT3vsKi4QHWVSNt7V6crGXc8ie3yjn1GvD1inKxEw"
uncompressed() str

Get XinFin wallet uncompressed public key.

Returns

str – XinFin wallet uncompressed public key.

>>> from swap.providers.xinfin.wallet import Wallet
>>> wallet: Wallet = Wallet(network="testnet")
>>> wallet.from_entropy(entropy="ed0802d701a033776811601dd6c5c4a9")
>>> wallet.from_path(path="m/44'/550'/0'/0/0")
>>> wallet.uncompressed()
"33fbc2f498d145a1827ee894a2ed5f14928523712047ad9fffc59cdda7d314e6707f731cc5b9a5018878fdfd503a8502c6d714a2cef1161603a002845b83310f"
compressed() str

Get XinFin wallet compressed public key.

Returns

str – XinFin wallet compressed public key.

>>> from swap.providers.xinfin.wallet import Wallet
>>> wallet: Wallet = Wallet(network="testnet")
>>> wallet.from_entropy(entropy="ed0802d701a033776811601dd6c5c4a9")
>>> wallet.from_path(path="m/44'/550'/0'/0/0")
>>> wallet.compressed()
"0333fbc2f498d145a1827ee894a2ed5f14928523712047ad9fffc59cdda7d314e6"
chain_code() str

Get XinFin wallet chain code.

Returns

str – XinFin wallet chain code.

>>> from swap.providers.xinfin.wallet import Wallet
>>> wallet: Wallet = Wallet(network="testnet")
>>> wallet.from_entropy(entropy="ed0802d701a033776811601dd6c5c4a9")
>>> wallet.from_path(path="m/44'/550'/0'/0/0")
>>> wallet.chain_code()
"ba8572f00241c17616903b07fed8ddcc1442677fa54ccd38e85049eee2310246"
private_key() str

Get XinFin wallet private key.

Returns

str – XinFin wallet private key.

>>> from swap.providers.xinfin.wallet import Wallet
>>> wallet: Wallet = Wallet(network="testnet")
>>> wallet.from_entropy(entropy="ed0802d701a033776811601dd6c5c4a9")
>>> wallet.from_path(path="m/44'/550'/0'/0/0")
>>> wallet.private_key()
"8a4bc8131e99a5d1064cdbca6949aa2ec16152967b19f2cee3096daefd5ca857"
public_key() str

Get XinFin wallet public key.

Returns

str – XinFin wallet public key.

>>> from swap.providers.xinfin.wallet import Wallet
>>> wallet: Wallet = Wallet(network="testnet")
>>> wallet.from_entropy(entropy="ed0802d701a033776811601dd6c5c4a9")
>>> wallet.from_path("m/44'/550'/0'/0/0")
>>> wallet.public_key()
"0333fbc2f498d145a1827ee894a2ed5f14928523712047ad9fffc59cdda7d314e6"
path() Optional[str]

Get XinFin wallet path.

Returns

str – XinFin wallet path.

>>> from swap.providers.xinfin.wallet import Wallet
>>> wallet: Wallet = Wallet(network="testnet")
>>> wallet.from_entropy(entropy="ed0802d701a033776811601dd6c5c4a9")
>>> wallet.from_path(path="m/44'/550'/0'/0/0")
>>> wallet.path()
"m/44'/550'/0'/0/0"
address() str

Get XinFin wallet address.

Returns

str – XinFin wallet address.

>>> from swap.providers.xinfin.wallet import Wallet
>>> wallet: Wallet = Wallet(network="testnet")
>>> wallet.from_entropy(entropy="ed0802d701a033776811601dd6c5c4a9")
>>> wallet.from_path(path="m/44'/550'/0'/0/0")
>>> wallet.address()
"xdc2224caA2235DF8Da3D2016d2AB1137D2d548A232"
wif() str

Get XinFin wallet important format (WIF).

Returns

str – XinFin wallet important format.

>>> from swap.providers.xinfin.wallet import Wallet
>>> wallet: Wallet = Wallet(network="testnet")
>>> wallet.from_entropy(entropy="ed0802d701a033776811601dd6c5c4a9")
>>> wallet.from_path(path="m/44'/550'/0'/0/0")
>>> wallet.wif()
"L1rYHjuxQtgTeU4qMUP6qnGqW9nstFt5drQktRuFGFSuGcCpZoJq"
hash(private_key: Optional[str] = None) str

Get XinFin wallet public key/address hash.

Returns

str – XinFin wallet public key/address hash.

>>> from swap.providers.xinfin.wallet import Wallet
>>> wallet: Wallet = Wallet(network="testnet")
>>> wallet.from_entropy(entropy="ed0802d701a033776811601dd6c5c4a9")
>>> wallet.from_path(path="m/44'/550'/0'/0/0")
>>> wallet.hash()
"dc8f505fccd7cb6f6ba93fd3795174f97efb43ae"
balance(unit: str = 'Wei') Union[Wei, int, float]

Get XinFin wallet balance.

Parameters

unit (str) – XinFin unit, default to Wei.

Returns

Wei, int, float – XinFin wallet balance.

>>> from swap.providers.xinfin.wallet import Wallet
>>> wallet: Wallet = Wallet(network="testnet")
>>> wallet.from_entropy(entropy="ed0802d701a033776811601dd6c5c4a9")
>>> wallet.from_path(path="m/44'/550'/0'/0/0")
>>> wallet.balance(unit="XDC")
96.96263982
xrc20_balance(token_address: str) Tuple[int, str, str, int, str]

Get XinFin HTLC XRC20 balance.

Parameters

token_address (str) – XinFin XRC20 token address.

Returns

tuple – XinFin HTLC XRC20 balance and decimal.

>>> from swap.providers.xinfin.htlc import HTLC
>>> htlc: HTLC = HTLC(contract_address="0x94c4B5f13392AcD2A6E59C9A180758fB386631C3", network="testnet", erc20=True)
>>> htlc.xrc20_balance(token_address="0xDaB6844e863bdfEE6AaFf888D2D34Bf1B7c37861")
(99999999999999999999999999998, 18)