/wallet — TRON HTTP API (full node operations including transactions)
/walletsolidity — TRON HTTP API (confirmed data from solidity node)
gRPC — high-performance binary protocol for efficient data access (see available services)
TRON nodes are deployed in archive mode — for TRON, this means the complete block and transaction history from genesis, not historical state. See Historical data availability.
TRON’s /jsonrpc endpoint provides limited Ethereum compatibility for read operations only. Methods required for transaction submission (eth_sendRawTransaction, eth_getTransactionCount) are not available.This means Ethereum-native tools like Foundry, Hardhat, and web3.py cannot deploy contracts or send transactions to TRON directly. For write operations, use TronWeb.js with the /wallet endpoint.You can still use Foundry or Hardhat for compilation and testing, then deploy with TronWeb.js. See the hybrid workflow section.
TRON nodes currently do not support WebSocket connections for event subscriptions. If you need to subscribe to events, please vote and follow the feature request at TRON event plugin support.
TRON nodes on Chainstack run in archive mode. For TRON, archive means the complete block and transaction history — not historical state. Unlike EVM archive nodes, java-tron has no state-at-block queries; this is a protocol limitation (java-tron#6289), not a Chainstack one. Billing is independent of the node mode — every TRON request is billed as full (1 RU); see Request units.Available on your node:
Complete block and transaction history from genesis — block and transaction methods accept any historical block, for example /wallet/getblockbynum and eth_getBlockByNumber
Historical TRX balances — /wallet/getaccountbalance and /wallet/getblockbalance with a block_identifier
Not available on any TRON node:
Historical contract or account state, beyond the TRX balance lookups above — eth_getBalance, eth_call, eth_getCode, and eth_getStorageAt accept only the latest block parameter and return QUANTITY not supported, just support TAG as latest for anything else; triggerconstantcontract always runs against current state. java-tron tracks archive-node support in java-tron#6289.
TRON nodes on Chainstack support gRPC for high-performance access. gRPC uses HTTP/2 and Protocol Buffers for efficient binary serialization, making it ideal for high-throughput applications and data indexing.
The TRON proto files define several gRPC services. Here’s what a Chainstack TRON node currently serves:
Service
Status on Chainstack
protocol.Wallet
Available — the full node API: accounts, blocks, contracts, and transaction operations
protocol.Database
Available — block metadata helpers
protocol.WalletSolidity
Not available yet
protocol.WalletExtension
Not available yet
protocol.Monitor
Not available yet
Calling a service that isn’t currently served returns the gRPC UNIMPLEMENTED status (Method not found). Note that this is different from setups that expose a separate solidity gRPC port (for example, port 50061 on a self-hosted java-tron node) — on Chainstack, use the Wallet stub in your generated client. For solidified (confirmed) data, use the HTTP /walletsolidity API on the same node endpoint — see TRON methods for availability.
The endpoint supports gRPC server reflection, and the reflection list includes every service from the TRON protos, including services that are not yet served. Don’t infer availability from reflection or from the proto definitions; the table above reflects actual behavior.
The endpoint supports server reflection for discovery, but to generate typed clients you need the protocol buffer definitions. Get them from the official TRON protocol repository:
where YOUR_X_TOKEN is your authentication token from the Chainstack console.For the full list of available gRPC methods, see the official TRON gRPC documentation.
Use the HTTPProvider to connect to your node endpoint and get the latest block number.
from web3 import Web3web3 = Web3(Web3.HTTPProvider('YOUR_CHAINSTACK_ENDPOINT'))print(web3.eth.block_number)
where YOUR_CHAINSTACK_ENDPOINT is your node HTTPS endpoint with the /jsonrpc postfix, protected either with the key or password.See also node access details.
Hardhat can only perform read operations on TRON through the /jsonrpc endpoint. For contract deployment, use the hybrid workflow or TronWeb.js directly.
Configure Hardhat to compile contracts and perform read operations through your TRON nodes.
where YOUR_CHAINSTACK_ENDPOINT is your node HTTPS endpoint with the /jsonrpc postfix, protected either with the key or password. See node access details.
Compile your contracts with npx hardhat compile, then deploy using TronWeb.js.