1.4 KiB
1.4 KiB
TRON Backend Proxy Design
Problem
Frontend calls TronGrid API directly from the browser. This causes:
- 429 rate-limit errors (API key passed as query param, not recognized properly)
- API key exposed in
NEXT_PUBLIC_env var (visible to clients) - CORS issues possible depending on browser/TronGrid config
Solution
Route TRON balance requests through the backend API proxy, matching the existing relay-proxy pattern.
Architecture
Browser -> GET /api/tron/account/:address -> Express API -> GET https://api.trongrid.io/v1/accounts/:address
Header: TRON-PRO-API-KEY: <key>
Changes
Backend
-
New file:
apps/api/src/routes/tron-proxy.routes.tsGET /account/:address- proxies to TronGrid/v1/accounts/:address- Validates address format (starts with T, 34 chars, base58)
- Sends
TRON-PRO-API-KEYheader (correct TronGrid auth method) - 10s timeout with AbortController
- Returns TronGrid JSON response as-is
-
apps/api/src/config/env.ts- addtronApiKeyfield -
apps/api/src/app.ts- register/api/tronroute
Frontend
apps/web/src/lib/balances/trx-balances.ts- call own API instead of TronGridapps/web/src/lib/env.ts- removetronApiUrlandtronApiKeyapps/web/.env.local- removeNEXT_PUBLIC_TRON_*vars
Config
.env- addTRON_API_KEY=b874d775-4adc-4273-965b-cd6be5f66d68