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()
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
xchainpy_binance-0.2.1.tar.gz
(13.8 kB
view details)
Built Distribution
File details
Details for the file xchainpy_binance-0.2.1.tar.gz
.
File metadata
- Download URL: xchainpy_binance-0.2.1.tar.gz
- Upload date:
- Size: 13.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.2 importlib_metadata/3.7.3 pkginfo/1.7.0 requests/2.25.0 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.8.10
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7c94f8eff300141894e0074d741bd56e983c788d5dd02debd4c55bcc69d7de5e |
|
MD5 | 8082060599cb47969eb2bb1c99b014cb |
|
BLAKE2b-256 | 89ca303792478d1f0c3b01baf3e317a38a3044695bc55c4fb0bb88fbf143fe42 |
File details
Details for the file xchainpy_binance-0.2.1-py3-none-any.whl
.
File metadata
- Download URL: xchainpy_binance-0.2.1-py3-none-any.whl
- Upload date:
- Size: 15.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.2 importlib_metadata/3.7.3 pkginfo/1.7.0 requests/2.25.0 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.8.10
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9672536eaba3d2c1d82ac84964ee6275730b1c687c24f116db49ba9be1e93bb4 |
|
MD5 | 8fe81e17efdcb7a2c0261d07a90e49e6 |
|
BLAKE2b-256 | 161c0c2064d5acd6a4c4e1106025b3971d85228cdd751c087d8efdd5d92e0e57 |