Skip to main content

Smart Contracts Overview

Beforehand markets are implemented as smart contracts on an EVM-compatible blockchain. Currently EVM compatible, network undecided.

Contract Architecture

Each market is a separate smart contract instance, created by the MarketFactory. This design provides:

  • Isolation: Each market is independent
  • Upgradeability: New markets can use updated contract logic
  • Gas efficiency: Only active markets consume resources

Core Contracts

PredictionMarket

The main market contract that handles:

  • Trading (buying YES/NO positions)
  • Pool management
  • Market resolution
  • Token redemption

CollateralToken

ERC20 tokens representing positions:

  • yUSDC: YES position tokens
  • nUSDC: NO position tokens

Each market has its own pair of these tokens.

MarketFactory

Factory contract that:

  • Deploys new market contracts
  • Manages market creation
  • Handles admin resolution

CommunityRegistry

On-chain registry for community ownership and permissions:

  • Community ownership
  • Voting rights management
  • Community-specific market controls

How Markets Work On-Chain

  1. Creation: Factory deploys new PredictionMarket contract
  2. Initial Trade: Creator places first trade, creating position tokens
  3. Matching: Someone matches on opposite side, activating market
  4. Trading: Users buy position tokens with USDC
  5. Resolution: Admin resolves market, setting outcome
  6. Redemption: Winners redeem position tokens for USDC

Token Model

Instead of tracking positions in a database, Beforehand uses ERC20 tokens:

  • Each YES trade mints yUSDC tokens
  • Each NO trade mints nUSDC tokens
  • Token balance = position size
  • Redemption exchanges tokens for USDC based on outcome

This model is:

  • Transparent: Token balances are public
  • Transferable: Tokens could be transferred (though UI doesn't support this)
  • Standard: Uses standard ERC20 interface