TRON
| Slug | tron |
| Address format | Base58Check, T… |
| Account path | m/44'/195'/0' — its own, not shared |
| Cloud stores | xpub |
| Derivation | ✅ M/0/{i} — public, no Edge required |
| Confirmations | 20 |
| Tokens | TRC-20 |
| Explorer | https://tronscan.org/#/transaction/{txid} · https://tronscan.org/#/address/{address} |
Coin type 195, not 60
TRON is secp256k1 like the EVM chains, and it is not on the same derivation path. Coin type
195', its own extended public key, its own addresses.
This matters more than it looks. An aliasing defect in a key-derivation library once made TRON's extended public key byte-identical to Ethereum's, which would have monitored TRON deposits at a key derived for a different chain — funds arriving at addresses whose keys nobody held. There is now a contract test asserting both that ETH/BSC/Polygon share a key and that TRON and XRP do not, because "these three are the same and those two are not" is exactly the kind of invariant that decays silently.
Practically: issue a TRON address separately from your EVM address. They are different addresses for the same customer.
Confirmations
Twenty. TRON is DPoS with three-second blocks, so twenty confirmations is about one minute. Its finality is faster than the count suggests.
Fees — energy and bandwidth
TRON does not have gas. It has two separate resources, and this is the chain where the fee model will surprise you.
fee = energy × energyPrice + bandwidthCost
| Field | |
|---|---|
energy | Computational units, for smart-contract execution (TRC-20 transfers) |
energyPriceSun | Price per energy unit, in sun (1 TRX = 1,000,000 sun) |
bandwidth | Bytes of the transaction |
bandwidthCostSun | Cost of that bandwidth |
Both resources can be obtained in two ways:
- Freeze TRX (stake it) to receive a daily allowance of energy or bandwidth. The TRX is not spent, only immobilised, and the allowance regenerates.
- Burn TRX at the point of use, if you have no allowance.
An address that has frozen nothing pays every fee by burning TRX. That works and it is materially more expensive than the frozen route — a TRC-20 transfer from an unfrozen address commonly costs several TRX, against a fraction of that from an address with an energy allowance.
What this means for your integration
Budget TRX at deposit addresses, or accept the burn. A TRC-20 deposit address holds USDT and no
TRX, so a withdrawal from it is INSUFFICIENT_GAS in exactly the way it is on an EVM chain — the
"gas" is just TRX for energy rather than ETH.
A small free bandwidth allowance exists per address per day. It covers a plain TRX transfer and does not cover a TRC-20 transfer, so it is not something to plan around.
Staking is an optimisation you can make later. If your sweep volume is high enough that burned TRX becomes material, freezing TRX against your treasury address and delegating energy to deposit addresses is the standard answer. ChainOS does not manage that for you; it is a treasury operation against your own addresses.
TRC-20 tokens
Monitored contracts on mainnet:
| Token | Contract | Decimals |
|---|---|---|
| USDT | TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t | 6 |
| USDC | TEkxiTehnzSmSe2XqrBj4w32RUN966rdz8 | 6 |
| USDD | TXDk8mbtRbXeYuMNS83CfKPaYYT8XWv9Hz | 18 |
TRON-USDT is one of the highest-volume stablecoin markets in the world and is often what a retail customer means by "USDT" — the fees are lower than Ethereum's and the settlement is faster. Expect it to dominate your TRON traffic.
Branch on tokenContract, not tokenSymbol. The contract addresses are Base58 rather than hex,
which makes an accidental cross-chain comparison less likely than on the EVM chains, but the rule is
the same.
Balances
{ "confirmed": "1000000", "available": "1000000", "reserved": "0", "decimals": 6 }
available == confirmed for the purposes of a send. Frozen TRX is a separate concept from a reserve
— it is staked, not locked against a minimum — and it does not reduce what a transfer may move.
Operational notes
- Addresses are Base58Check with a
Tprefix. They are also representable in hex (41…), and some tools display that form. ChainOS accepts and returns Base58. A hex address in a withdrawal request fails validation, which is the safe outcome. - Validate destinations.
POST /v1/addresses/validatechecks the Base58 checksum. TRON addresses are long and visually similar, and a send to a valid-but-wrong address is irreversible. - An unactivated TRON address can receive. Unlike XRP, there is no minimum first deposit — the first transfer creates the account and the sender pays a small activation cost.
bandwidthCostSunon a fee estimate can look surprisingly high for a large transaction. It is proportional to transaction bytes, so a multi-input send costs more bandwidth. This is the TRON analogue of Bitcoin's per-input premium.- TRON is one of the six chains with no configured RPC endpoint in the current deployment.
Derivation works; balances, fees and broadcast return
503 CHAIN_UNAVAILABLE. TRON also needs a gRPC endpoint alongside the HTTP one; confirm both at onboarding.