Data Synchronization
Beforehand maintains consistency between on-chain contracts and off-chain database.
Sync Strategy
Market Creation
- Contract deployed on-chain
- Contract address stored in database
- Market metadata stored in database
- Status set to "pending_match"
Trading
- Trade executes on-chain
- Position tokens minted
- Database updated via:
- Contract event listeners
- Frontend queries token balances
- Periodic sync jobs
Resolution
- Admin resolves on-chain
- Contract emits resolution event
- Database updated with outcome
- Status set to "resolved"
Sync Mechanisms
Event Listening
Frontend can listen to contract events:
- MarketCreated
- Trade
- MarketResolved
Polling
Frontend periodically queries:
- Token balances (positions)
- Pool sizes
- Market status
Real-time Updates
Supabase Realtime can push updates:
- Market status changes
- New trades (from database)
- Resolution notifications
Data Sources
On-Chain (Source of Truth)
- Market status (isActive, isResolved)
- Position sizes (token balances)
- Pool sizes (yesPool, noPool)
- Outcome (YES, NO, CANCELLED)
Off-Chain (Metadata)
- Market question and description
- User profiles
- Community data
- Voting records
Handling Discrepancies
If on-chain and off-chain data differ:
- On-chain is authoritative for financial data
- Database is updated to match contract state
- Frontend merges both sources for display