Skip to content

feat: sync Soroban contract events to database closes #179#191

Merged
ogazboiz merged 1 commit intoLabsCrypt:mainfrom
dannyy2000:feat/179-soroban-event-sync
Feb 26, 2026
Merged

feat: sync Soroban contract events to database closes #179#191
ogazboiz merged 1 commit intoLabsCrypt:mainfrom
dannyy2000:feat/179-soroban-event-sync

Conversation

@dannyy2000
Copy link
Copy Markdown
Contributor

closes #179

Add a background worker that polls the Stellar Soroban RPC for FlowFi
stream contract events and keeps the PostgreSQL database in sync with
on-chain state.

- New `SorobanEventWorker` (`src/workers/soroban-event-worker.ts`)
  polls `SorobanRpc.Server.getEvents` on a configurable interval and
  processes StreamCreatedEvent, StreamToppedUpEvent, TokensWithdrawnEvent,
  and StreamCancelledEvent
- Cursor-based pagination via paging tokens prevents re-processing events
  across restarts; falls back to `startLedger` on first run
- Each event is decoded from XDR (symbol topics + contracttype struct body)
  and written to PostgreSQL inside a Prisma transaction, then broadcast
  to connected SSE clients via the existing SSEService
- New `IndexerState` Prisma model + migration persists the last processed
  ledger and cursor
- Worker starts after the HTTP server is ready and is gracefully shut down
  on SIGTERM / SIGINT
- `@stellar/stellar-sdk` added as a runtime dependency
- Worker is disabled gracefully when STREAM_CONTRACT_ID is not set
@ogazboiz ogazboiz merged commit 9706b29 into LabsCrypt:main Feb 26, 2026
0 of 3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Backend Worker: Sync Soroban Events to Database

2 participants