aiothornode
This is a simple Python library to access THORChain nodes. It is asynchronous and uses aiohttp.
Important
v.0.1.0 breaking changes:
- NamedTuples instead of DataClasses for Thor entities
- Environments were renamed
- No more consensus features
v.0.0.21 is hotfix. Port 1317 was disabled, so it is an emergency upgrade to save this lib. More news will be later...
Features:
- Now it is just a convenient wrapper for THORNode API
Supported endpoints:
- Constants
- Mimir
- Nodes (node accounts)
- Current TX queue length
- Pools (current and at arbitrary height)
- Tendermint block at height
- Inbound addresses and other chain info
- Asgard & Yggdrasil vaults (new!)
- Balance of THOR account
Installation
python -m pip install git+https://github.com/tirinox/aiothornode
Quick start
The following code is quite self-documenting:
import random
from aiothornode.connector import *
from aiothornode.env import *
import asyncio
import aiohttp
def delim():
print('-' * 100)
async def main():
env = MAINNET.copy()
# env = ThorEnvironment(...) # custom
async with aiohttp.ClientSession() as session:
connector = ThorConnector(env, session)
genesis = await connector.query_genesis()
print(f'Chain ID = {genesis["chain_id"]}')
delim()
chains = await connector.query_chain_info()
chains = list(chains.values())
print('Chain info:', chains)
delim()
print('Tendermint Block:')
tender_block = await connector.query_tendermint_block_raw(100001)
block_header = tender_block['result']['block']['header']
print(f'{block_header["height"] = } and {block_header["time"] = }')
delim()
constants = await connector.query_constants()
print(f'Constants: {constants}')
delim()
mimir = await connector.query_mimir()
mimir_1 = mimir.get('MINIMUMBONDINRUNE')
print(f'Mimir: {mimir}, MINIMUMBONDINRUNE = {mimir_1}')
delim()
queue = await connector.query_queue()
print(f'Queue: {queue}')
delim()
node_accounts = await connector.query_node_accounts(consensus=False)
print(f'Example node account: {random.sample(node_accounts, 1)[0]}')
delim()
pool = await connector.query_pool('BNB.BUSD-BD1', height=8218339)
print(pool)
delim()
pools = await connector.query_pools()
print(pools[0])
print(f'Total {len(pools)} pools')
delim()
bank = await connector.query_balance('thor1dheycdevq39qlkxs2a6wuuzyn4aqxhve4qxtxt')
print(f'Balance of {bank.address} is {bank.runes_float} Rune')
delim()
if __name__ == '__main__':
asyncio.run(main())
Testing
Install PyTest and an async plugin for it:
pip install pytest
pip install pytest-asyncio
Then run
pytest test
Metadata
Release files for aiothornode 0.1.7
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| aiothornode-0.1.7.tar.gz | 15.0 kB | Without provenance | Details for aiothornode-0.1.7.tar.gz |
Release files / aiothornode-0.1.7.tar.gz
| Download URL | aiothornode-0.1.7.tar.gz |
|---|---|
| Size | 15.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
33dcb40758cb3c519c1fb986dd4c856d361737e4c73ef4d1d555df059c49c494
|
|
BLAKE2b-256 checksum How to use checksums |
0916292af8096430e6f62a5156f4fdf2bdf5c6c8142fb6875eda84848482cf1d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.8.9
|
Security for aiothornode 0.1.7
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.