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.2.tar.gz
(13.8 kB
view details)
Built Distribution
File details
Details for the file xchainpy_binance-0.2.2.tar.gz
.
File metadata
- Download URL: xchainpy_binance-0.2.2.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.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.8.10
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | ac027eeb6fd51b41f667eee4a7c25404a281fc1d433b3272436382d1e36c784e |
|
MD5 | fb433c0ed34a480731406e047a3ddb37 |
|
BLAKE2b-256 | 456da078962b7db0ba528cbd615dad0c83a59ee6b2ba5676b2a5ad43121d7afb |
File details
Details for the file xchainpy_binance-0.2.2-py3-none-any.whl
.
File metadata
- Download URL: xchainpy_binance-0.2.2-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.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.8.10
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 880bc9c9bbfc46c94a100ebdc0286f1f997dd719a85fcb1bac10ae77e5f1ecb1 |
|
MD5 | a7607973bac5c9edcc36ddeffe5faefc |
|
BLAKE2b-256 | a72ae7036e65be49371934370aae55ba3f83c93b763a0b67fe460e83c276d679 |