Skip to main content

Data Synchronization

Beforehand maintains consistency between on-chain contracts and off-chain database.

Sync Strategy

Market Creation

  1. Contract deployed on-chain
  2. Contract address stored in database
  3. Market metadata stored in database
  4. Status set to "pending_match"

Trading

  1. Trade executes on-chain
  2. Position tokens minted
  3. Database updated via:
    • Contract event listeners
    • Frontend queries token balances
    • Periodic sync jobs

Resolution

  1. Admin resolves on-chain
  2. Contract emits resolution event
  3. Database updated with outcome
  4. 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