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
- Creation: Factory deploys new PredictionMarket contract
- Initial Trade: Creator places first trade, creating position tokens
- Matching: Someone matches on opposite side, activating market
- Trading: Users buy position tokens with USDC
- Resolution: Admin resolves market, setting outcome
- 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