Join our community: https://t.me/+DOylgFv1jyJlNzM0
Description
The soroban-event-worker.ts file exists but the actual indexing logic is not implemented. The database schema (StreamEvent, IndexerState) is ready, but no on-chain events (CREATED, TOPPED_UP, WITHDRAWN, CANCELLED, COMPLETED) are being written to it. The entire API relies on indexed data — this is the most critical missing piece.
What Needs to Happen
- Connect to Stellar RPC and poll for contract events every 5 seconds (configurable via
POLL_INTERVAL_MS)
- Cursor-based pagination using
IndexerState.lastProcessedLedger
- Parse and map each event type to a
StreamEvent DB record
- Deduplicate events by
transactionHash + eventType + ledger to handle restarts safely
- Update
Stream state in DB on each relevant event (amounts, status)
- Emit SSE broadcast after each successful event batch
Files
backend/src/workers/soroban-event-worker.ts
backend/src/services/indexerService.ts (create)
Acceptance Criteria
Description
The
soroban-event-worker.tsfile exists but the actual indexing logic is not implemented. The database schema (StreamEvent,IndexerState) is ready, but no on-chain events (CREATED, TOPPED_UP, WITHDRAWN, CANCELLED, COMPLETED) are being written to it. The entire API relies on indexed data — this is the most critical missing piece.What Needs to Happen
POLL_INTERVAL_MS)IndexerState.lastProcessedLedgerStreamEventDB recordtransactionHash + eventType + ledgerto handle restarts safelyStreamstate in DB on each relevant event (amounts, status)Files
backend/src/workers/soroban-event-worker.tsbackend/src/services/indexerService.ts(create)Acceptance Criteria