Exchange and Market
TRON exposes two native TRC10 trading systems:
| System | Model | Primary operations |
|---|---|---|
| Exchange | Legacy Bancor-style liquidity pool | Create, inject, withdraw, trade |
| Market | Native order-book DEX | Place, query, and cancel limit orders |
Both APIs are provider extension traits:
use tronz::providers::ext::{ExchangeApi as _, MarketApi as _};Exchange pools
Create a TRX/TRC10 pool:
let receipt = provider
.exchange_create()
.first_token_id("_")
.first_token_balance(1_000_000)
.second_token_id(asset_id)
.second_token_balance(1_000)
.send()
.await?
.require_success()
.get_receipt()
.await?;Once you know the exchange ID, liquidity and trades use the same lazy-builder pattern:
provider
.exchange_inject()
.exchange_id(exchange_id)
.token_id("_")
.quant(100_000)
.send()
.await?;
provider
.exchange_withdraw()
.exchange_id(exchange_id)
.token_id("_")
.quant(10_000)
.send()
.await?;
provider
.exchange_trade()
.exchange_id(exchange_id)
.token_id("_")
.quant(10_000)
.expected(1)
.send()
.await?;Query pools with:
let all = provider.list_exchanges().await?;
let page = provider.get_paginated_exchange_list(0, 20).await?;
let exchange = provider.get_exchange_by_id(exchange_id).await?;get_exchange_by_id returns None when the ID does not exist.
See the runnable exchange lifecycle example.
Market orders
Place and cancel an order:
let pending = provider
.market_sell()
.sell_token_id(asset_id)
.sell_token_quantity(10)
.buy_token_id("_")
.buy_token_quantity(1_000)
.send()
.await?;
provider
.market_cancel()
.order_id(order_id)
.send()
.await?;The read API covers individual orders, account orders, pair order books, price levels, and active pairs:
let order = provider.get_market_order_by_id(order_id).await?;
let account_orders = provider.get_market_order_by_account(owner).await?;
let prices = provider.get_market_price_by_pair(asset_id, "_").await?;
let orders = provider.get_market_order_list_by_pair(asset_id, "_").await?;
let pairs = provider.get_market_pair_list().await?;get_market_order_by_id returns None for a missing order. This includes
java-tron nodes that report "order not found in store" as an internal gRPC
status; tronz normalizes that response into the same Option semantics.
See the runnable market query example.
