tronz
Connect applications to the TRON network using idiomatic, async-first Rust APIs.
cargo
cargo add tronzAt a glance
use tronz::{ProviderBuilder, TronProvider, TRONGRID_MAINNET};
#[tokio::main]
async fn main() -> anyhow::Result<()> {
// Connect to a TRON gRPC endpoint.
let provider = ProviderBuilder::new().on_grpc(TRONGRID_MAINNET).await?;
// Read the latest block.
let block = provider.get_now_block().await?;
println!("block {} @ {}ms", block.number, block.timestamp);
Ok(())
}use tronz::{LocalSigner, ProviderBuilder, TronProvider, TronSigner, Trx, TRONGRID_NILE};
#[tokio::main]
async fn main() -> anyhow::Result<()> {
let signer = LocalSigner::from_hex("PRIVATE_KEY_HEX")?;
let from = signer.address();
let provider = ProviderBuilder::new()
.with_recommended_fillers()
.with_signer(signer)
.on_grpc(TRONGRID_NILE)
.await?;
// Build, sign, and broadcast in one chain.
let pending = provider.send_trx().to(from).amount(Trx::from_sun(1_000_000)?).send().await?;
let receipt = pending.get_receipt().await?;
println!("status: {:?}", receipt.status);
Ok(())
}use tronz::{ProviderBuilder, TRONGRID_MAINNET};
use tronz::contract::Trc20Ext;
#[tokio::main]
async fn main() -> anyhow::Result<()> {
let provider = ProviderBuilder::new().on_grpc(TRONGRID_MAINNET).await?;
let usdt: tronz::Address = "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t".parse()?;
let token = provider.trc20(usdt);
println!("{} ({})", token.name().await?, token.symbol().await?);
Ok(())
}Features
- TRON-native primitives —
Address(base58checkT...and hex),Trx/sun amounts, andResourceCode. - Builder-style provider — compose a provider with fillers and a signer, then connect over gRPC.
- Lazy transaction builders —
send_trx(),freeze_balance(),delegate_resource(), and more do no I/O until.send(). - Stake 2.0 support — freeze, unfreeze, delegate, undelegate, and claim rewards.
- TRC20 / TRC721 bindings — ABI-compatible with EVM tokens, generated via alloy's
sol!macro. - Reuses alloy —
U256,Bytes, and ABI types come straight fromalloy-primitives/alloy-sol-types.
Crates
| Crate | Description |
|---|---|
tronz | Meta-crate re-exporting all sub-crates |
tronz-primitives | Address, Trx, ResourceCode, signatures |
tronz-signer | TronSigner trait and LocalSigner |
tronz-signer-aws | AWS KMS-backed AwsSigner (optional) |
tronz-provider | Transport, provider, fillers, and domain types |
tronz-contract | TRC20 / TRC721 bindings and the tron_sol! macro |
Community
- Report bugs or request features on GitHub Issues.
- Contributions are welcome — see CONTRIBUTING.md.
