Tracking blockchain transactions is essential for verifying user deposits and withdrawals. This guide explains how to monitor TRON blocks programmatically using HTTP APIs—without relying on SDKs.
Core Workflow
- Fetch the latest block via
getnowblock
API - Iterate through subsequent blocks using
getblockbynum
- Analyze transactions and match them against user addresses
var blockNumber = 0; // Tracks current block height
while (true) {
var stopWatch = new Stopwatch();
stopWatch.Start();
try {
string responseString;
if (blockNumber == 0) {
const string url = "https://api.trongrid.io/wallet/getnowblock";
responseString = HttpClientHelper.Get(url);
} else {
const string url = "https://api.trongrid.io/wallet/getblockbynum";
var requestBody = new { num = blockNumber + 1 };
responseString = HttpClientHelper.Post(url, JsonConvert.SerializeObject(requestBody), Encoding.UTF8);
}
var responseObject = JsonConvert.DeserializeObject(responseString);
if (responseObject?.blockID == null || responseObject.block_header == null)
throw new ThreadSleepException();
blockNumber = (int)responseObject.block_header.raw_data.number;
var blockHash = (string)responseObject.blockID;
Console.WriteLine($"Block #{blockNumber}\tHash: {blockHash}");
if (responseObject.transactions != null) {
foreach (var transaction in responseObject.transactions) {
// Transaction validation and processing logic
}
}
} catch (Exception ex) {
// Error handling
}
Thread.Sleep(2500); // Syncs with TRON's 3-second block time
}
Key Components
1. Transaction Types Handled
- TRX Transfers (
TransferContract
) - TRC-20 Tokens (e.g., USDT via
TriggerSmartContract
) - Resource Delegation (
DelegateResourceContract
)
👉 Learn how TRON's smart contracts work
2. Redis Integration
Used to compare transactions against registered user addresses:
public class RedisProvider {
private readonly IDatabase _database = ConnectionMultiplexer.Connect("127.0.0.1:6379").GetDatabase();
public bool KeyExists(string key) => _database.KeyExists(key);
}
3. HTTP Client Setup
Includes TRON Grid API authentication:
req.Headers.Set("TRON-PRO-API-KEY", "your-api-key");
Best Practices
Block Synchronization
- Checks every 2.5 seconds to account for network delays
Error Handling
- Retries failed requests with exponential backoff
Scalability
- Processes 100+ transactions per block efficiently
👉 Explore blockchain monitoring tools
FAQ
Q1: Can I monitor multiple TRC-20 tokens?
A1: Yes! Modify the contract address in TriggerSmartContract
.
Q2: Why use Redis?
A2: Fast read/writes for address matching—alternatives like PostgreSQL work too.
Q3: How to handle API rate limits?
A3: Implement request queuing or use premium TRON Grid plans.
Q4: Is historical data available?
A4: Yes, via getblockbynum
with past block numbers.
Dependencies
Install-Package Newtonsoft.Json
Install-Package StackExchange.Redis
Install-Package TronNet.Wallet -Version 1.0.1
By following this approach, you’ll build a reliable TRON transaction monitor for real-time deposit/withdrawal tracking.