Custom Binance client and utilities used by XChainPY clients
Project description
xchainpy/xchainpy_binance
Binance Module for XChainPy Clients
Modules
client- Custom client for communicating with binance_chainmodels- model wrapper for binance_chain typesutil- Utitilies for using binance_chain
Following dependencies have to be installed into your project
secp256k1Crypto - py-binance-chain - pywallet - mnemonic
pip install xchainpy_binance
Binance Client module
Initialize a client
from xchainpy_client.models.types import Network, XChainClientParams
from xchainpy_binance.client import Client
# Note: This phrase is created by https://iancoleman.io/bip39/ and will never been used in a real-world
phrase = 'rural bright ball negative already grass good grant nation screen model pizza'
client = Client(XChainClientParams(network=Network.Mainnet, phrase=phrase))
# if you want to change phrase after initialize the client
client.set_phrase('wheel leg dune emerge sudden badge rough shine convince poet doll kiwi sleep labor hello')
# if you want to change network after initialize the client
await client.purge_client()
client.set_network(Network.Mainnet)
# get python-binance-chain client
client.get_bnc_client()
# when you are done with the client, call this
await client.purge_client()
Address methods
from xchainpy_client.models.types import Network, XChainClientParams
from xchainpy_binance.client import Client
phrase = 'rural bright ball negative already grass good grant nation screen model pizza'
client = Client(XChainClientParams(network=Network.Mainnet, phrase=phrase))
address = client.get_address()
is_valid = client.validate_address(address) # bool
print(address)
print(is_valid)
Fees
from xchainpy_client.models.types import Network, XChainClientParams
from xchainpy_binance.client import Client
phrase = 'rural bright ball negative already grass good grant nation screen model pizza'
client = Client(XChainClientParams(network=Network.Mainnet, phrase=phrase))
fees = await client.get_fees()
multi_send_fees = await client.get_multi_send_fees()
single_and_multi_fees = await client.get_single_and_multi_fees()
print(f'''fees:
average: {fees.average}
fast: {fees.fast}
fastest: {fees.fastest}\n''')
print(f'''multi_send_fees:
average: {multi_send_fees.average}
fast: {multi_send_fees.fast}
fastest: {multi_send_fees.fastest}\n''')
print(f'''single_and_multi_fees:
single:
average: {single_and_multi_fees['single'].average}
fast: {single_and_multi_fees['single'].fast}
fastest: {single_and_multi_fees['single'].fastest}
multi:
average: {single_and_multi_fees['single'].average}
fast: {single_and_multi_fees['single'].fast}
fastest: {single_and_multi_fees['single'].fastest}''')
Balance
from xchainpy_client.models.types import Network, XChainClientParams
from xchainpy_binance.client import Client
phrase = 'rural bright ball negative already grass good grant nation screen model pizza'
client = Client(XChainClientParams(network=Network.Testnet, phrase=phrase))
address = client.get_address()
account = await client.get_account(address=address)
balances = await client.get_balance(address=address)
for balance in balances:
print(f'asset: {balance.asset}, amount: {balance.amount}')
Transactions and Transaction_data
from xchainpy_client.models.types import Network, XChainClientParams
from xchainpy_binance.client import Client
from xchainpy_client.models.tx_types import TxHistoryParams
phrase = 'rural bright ball negative already grass good grant nation screen model pizza'
client = Client(XChainClientParams(network=Network.Testnet, phrase=phrase))
address = client.get_address()
params = TxHistoryParams(address=address, limit=1)
transactions = await client.get_transactions(params)
# type of transactions is xchainpy_client.models.tx_types.TxPage
t = transactions.txs[0]
print(t.asset)
print(t.tx_from[0].amount)
print(t.tx_from[0].address)
print(t.tx_to[0].amount)
print(t.tx_to[0].address)
print(t.tx_date)
print(t.tx_type)
print(t.tx_hash)
transaction = await client.get_transaction_data(t.tx_hash)
# transaction object is equal by t object
Transfer
from xchainpy_client.models.types import Network, XChainClientParams
from xchainpy_binance.client import Client
from xchainpy_client.models.tx_types import TxParams
from xchainpy_util.asset import AssetBTC
phrase = 'rural bright ball negative already grass good grant nation screen model pizza'
client = Client(XChainClientParams(network=Network.Testnet, phrase=phrase))
address = client.get_address()
params = TxParams(asset=AssetBNB, amount=0.0001, recipient=address, memo='memo')
tx_hash = await client.transfer(params)
print(tx_hash)
Explorer url
from xchainpy_client.models.types import Network, XChainClientParams
from xchainpy_binance.client import Client
from xchainpy_client.models.tx_types import TxParams
phrase = 'rural bright ball negative already grass good grant nation screen model pizza'
client = Client(XChainClientParams(network=Network.Testnet, phrase=phrase))
print(client.get_explorer_url())
print(client.get_explorer_address_url('testAddressHere'))
print(client.get_explorer_tx_url('testTxHere'))
await client.purge_client()
client.set_network(Network.Mainnet)
print(client.get_explorer_url())
print(client.get_explorer_address_url('testAddressHere'))
print(client.get_explorer_tx_url('testTxHere'))
Crypto module
from py_binance_chain.environment import BinanceEnvironment
from xchainpy_binance import crypto
# Note: This phrase is created by https://iancoleman.io/bip39/ and will never been used in a real-world
phrase = 'rural bright ball negative already grass good grant nation screen model pizza'
env = BinanceEnvironment.get_testnet_env()
seed = crypto.mnemonic_to_seed(mnemonic=phrase)
print(seed)
private_key = crypto.mnemonic_to_private_key(mnemonic=phrase, index=0, env=env)
print(private_key)
public_key = crypto.private_key_to_public_key(private_key=private_key)
print(public_key)
address = crypto.private_key_to_address(private_key=private_key, prefix='tbnb')
print(address)
address = crypto.public_key_to_address(public_key=public_key, prefix='tbnb')
print(address)
is_valid = crypto.check_address(address=address, prefix='tbnb')
print(is_valid)
Tests
These packages needed to run tests:
- pytest
pip install pytest - pytest-asyncio
pip install pytest-asyncio
How to run test ?
$ python -m pytest xchainpy/xchainpy_binance/tests
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file xchainpy_binance-0.2.3.tar.gz.
File metadata
- Download URL: xchainpy_binance-0.2.3.tar.gz
- Upload date:
- Size: 13.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
950486964a47f788cdd65be661f7d1c94e919004c73d1bea61bb6535736178d9
|
|
| MD5 |
5565e8c4371d3dbe7f2d2936078db800
|
|
| BLAKE2b-256 |
efaf4b1740d6ed50201d2202e9c2f4ae20db04d118f826041af87b4b15fc9010
|
File details
Details for the file xchainpy_binance-0.2.3-py3-none-any.whl.
File metadata
- Download URL: xchainpy_binance-0.2.3-py3-none-any.whl
- Upload date:
- Size: 15.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
411c241b268c4ab1afda9aa78302a6c844e8cffb79234d6fec5fd2d14f157719
|
|
| MD5 |
6b2998b2c7a8aa463bc1f06444232462
|
|
| BLAKE2b-256 |
887bf8a758df4879ec78a4455284c83bfd6ca41eca023e98ea9105968d60f5dd
|