🦀 tronic
A modular, type-safe, async-first Rust client for the Tron blockchain — inspired by Alloy and built for real-world smart contract interaction.
Features
Core Infrastructure
- Typed Smart Contract Calls — Powered by
alloy-sol-typesmacros for compile-time safety - Dual Protocol Support — Both gRPC (via
tonic) and JSON-RPC providers (WIP) - Pluggable Signers — Local, or custom async signing backends
- Async-First — Built on Tokio for high-performance blockchain interaction
Account Management
- Multi-Signature Support — Complete workflow for threshold signatures
- Permission Management — Modify account permissions programmatically
- Resource Delegation — Handle bandwidth/energy freezing/unfreezing (WIP)
Smart Contract Interaction
- TRC-20 — Type-safe token transfers with
alloy-style builders - Contract ABI Codegen — Generate types from Solidity ABIs (need to implement a wrapper by hand currently)
- Event Filtering — Rich event subscription and historical querying
- Transaction Estimation — Precise energy & bandwidth calculation with fallback modes
Advanced Transaction Features
- Transaction Batching — Group multiple operations atomically (WIP)
- Deadline Handling — Automatic/manual transaction expiration management
Quickstart
use Client;
use AutoSigning;
use TronAddress;
use GrpcProvider;
use LocalSigner;
use trx;
// Construct a client with a signing backend
let client = builder
.provider
.signer
.build;
// Send transaction
let txid = client
.send_trx
.to
.amount
. // Uses automatic signing strategy
.await?
.broadcast
.await?;
Learn by Example
Explore practical usage scenarios in our examples directory:
Multisig- Multi-signature USDT transferEvent listener- Real-time USDT transfer monitoringTrx transfer- Simple trx transfer example
TODO
- Implement batching
- Unit & integration testing
- More examples
- Prepare documentation