Query Chain State
Use client.chain for read-only Cosmos gRPC queries and dYdX protocol module
queries. These calls read node state directly instead of going through the
indexer.
from dydx import Dydx
address = 'dydx1...'
async with Dydx.testnet(public=True) as client:
account = await client.chain.auth.account(address)
balances = await client.chain.bank.all_balances(address)
dydx_metadata = await client.chain.bank.denom_metadata('adydx')
print(account, balances, dydx_metadata)
List endpoints also expose paged wrappers that use Cosmos continuation keys:
from dydx import Dydx
address = 'dydx1...'
async with Dydx.testnet(public=True) as client:
balances = await client.chain.bank.all_balances_paged(address, limit=100)
async for page in client.chain.staking.validators_paged(limit=50):
print(page)
dYdX trading state is organized by subaccounts:
from dydx import Dydx
address = 'dydx1...'
async with Dydx.testnet(public=True) as client:
subaccount = await client.chain.subaccounts.subaccount(address, 0)
collateral_pool = await client.chain.subaccounts.collateral_pool_address(0)
print(subaccount, collateral_pool)
Protocol metadata is grouped by module:
from dydx import Dydx
async with Dydx.testnet(public=True) as client:
clob_pair = await client.chain.clob.clob_pair(0)
all_pairs = await client.chain.clob.clob_pairs()
price = await client.chain.prices.market_price(0)
perpetual = await client.chain.perpetuals.perpetual(0)
assets = await client.chain.assets.assets()
print(clob_pair, all_pairs, price, perpetual, assets)
Other chain modules expose staking, distribution, fee-tier, reward, affiliate,
and revenue-share reads under client.chain.staking, client.chain.distribution,
client.chain.feetiers, client.chain.rewards, client.chain.affiliates, and
client.chain.revshare.