Context:
Trades happen on-chain with latency. Users need real-time updates on transaction status from pending → confirmed → settled.
Problem:
Build a system that monitors Stellar transactions, updates trade status, and notifies users of outcomes.
What Done Looks Like:
- Background job polling Horizon for tx status
- Trade status updates (PENDING → CONFIRMED → SETTLED)
- WebSocket notifications to frontend
- Retry mechanism for failed transactions
- Transaction receipt generation
Folder Structure:
src/
├── trades/
│ ├── services/
│ │ └── tx-monitor.service.ts
│ ├── jobs/
│ │ └── monitor-transactions.job.ts
│ └── entities/
│ └── transaction.entity.ts
Implementation Guidelines:
- Use Bull queue for background monitoring
- Poll Horizon every 5 seconds for pending txs
- Update trade status based on Horizon response
- Emit WebSocket event on status change
- Store transaction details (ledger, fees paid)
- Handle failure cases (resubmit or mark failed)
Transaction Statuses:
- PENDING: Submitted to network
- CONFIRMED: Included in ledger
- SETTLED: Trade completed on SDEX
- FAILED: Transaction rejected
Edge Cases:
- Transaction stuck in pending
- Network timeout during monitoring
- Ledger reorganization
Validation:
- Status updates in real-time
- WebSocket events emitted
- Failed txs handled correctly
Context:
Trades happen on-chain with latency. Users need real-time updates on transaction status from pending → confirmed → settled.
Problem:
Build a system that monitors Stellar transactions, updates trade status, and notifies users of outcomes.
What Done Looks Like:
Folder Structure:
Implementation Guidelines:
Transaction Statuses:
Edge Cases:
Validation: