Decentralized prediction markets for Starknet ecosystem analytics
Cairox is a prediction market protocol built on Starknet that allows users to trade on real-world and on-chain ecosystem metrics (DAU, TVL, transaction counts) using data from the Growthepie API.
- Overview
- Tech Stack
- Architecture
- Smart Contracts
- Getting Started
- Project Structure
- Data Integration
- Running Tests
- Deployment
- License
Cairox enables permissionless prediction markets for Starknet ecosystem metrics:
- Binary Markets - YES/NO outcomes (e.g., "Will Starknet exceed 1M DAU?")
- Categorical Markets - Multiple outcomes (e.g., "Which L2 will have highest TVL?")
- Comparative Markets - Ranked outcomes
Markets are resolved using objective ecosystem data from Growthepie, eliminating oracle manipulation risks.
| Component | Technology | Version |
|---|---|---|
| Smart Contracts | Cairo | 2.8.0 |
| Package Manager | Scarb | 2.8.0 |
| Testing Framework | Starknet Foundry (snforge) | Latest |
| Local Devnet | Starknet Devnet | Latest |
| Oracle Agent | Python | 3.10+ |
| HTTP Client | requests | >=2.28.0 |
| Starknet SDK | starknet-py | >=0.5.0 |
| Indexer | Python | 3.10+ |
| Indexer SDKs | starknet-py, aiohttp | >=0.20.0 |
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β User Interface β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Smart Contracts (Starknet) β
β βββββββββββββββ ββββββββββββββ ββββββββββββββββββββββββ β
β β Market β β Collateralβ β Outcome Tokens β β
β β Factory β β Vault β β (ERC-1155) β β
β βββββββββββββββ ββββββββββββββ ββββββββββββββββββββββββ β
β βββββββββββββββ ββββββββββββββ ββββββββββββββββββββββββ β
β β LMSR β β Oracle β β Resolution β β
β β Market Makerβ β β β Verifier β β
β βββββββββββββββ ββββββββββββββ ββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Off-Chain Services β
β βββββββββββββββββββ βββββββββββββββββββββββββββ β
β β Oracle Agent β β Indexer β β
β β (Growthepie API)β β (Event Processing) β β
β βββββββββββββββββββ βββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Data Sources β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Growthepie API β β
β β (https://api.growthepie.com/v1) β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
The Cairox protocol consists of 12 core contracts:
| Contract | Purpose |
|---|---|
MarketFactory |
Creates and manages prediction markets |
Market |
Core market logic (minting, redemption, resolution) |
CollateralVault |
Holds collateral deposits |
OutcomeToken |
ERC-1155 tokens representing market outcomes |
Oracle |
Stores data commitments from oracle agent |
OptimisticOracle |
Challenge/response oracle workflow |
ResolutionVerifier |
Verifies multi-user resolution claims |
LMSRMarketMaker |
Automated market maker using LMSR pricing |
LMSRMulti |
Multi-outcome LMSR implementation |
Arbitration |
Dispute resolution for contested outcomes |
LaunchConfig |
Configuration for market creation parameters |
PriceOracle |
Price feed adapter for collateral |
Stablecoin |
Protocol stablecoin for collateral and bonds |
- Permissionless Market Creation: Anyone can create a market with collateral
- Complete Set Minting: Users deposit collateral to mint equal amounts of all outcomes
- LMSR Bonding Curve: Automated price discovery with constant liquidity
- Deterministic Resolution: Markets resolve based on Growthepie data
- Insolvency Prevention: Total collateral always covers outstanding tokens
- Rust (for Scarb)
- Python 3.10+ (for oracle agent and indexer)
- Docker (for local devnet)
# Clone the repository
git clone https://github.com/the-axmc/Cairox.git
cd Cairox
# Build contracts
cd contracts
scarb build
# Run tests
make test
# Start local devnet
make devnet-up
# Deploy contracts locally
make deploy-localcd oracle-agent
# Create virtual environment
python -m venv venv
source venv/bin/activate
# Install dependencies
pip install -r requirements.txt
# Configure environment
cp ../.env.sample .env
# Edit .env with your values
# Run oracle agent
python src/agent.pyCairox/
βββ contracts/ # Cairo smart contracts (Scarb package)
β βββ Scarb.toml # Package manifest
β βββ config.json # Deployment/config inputs
β βββ scripts/ # Deployment/helpers
β βββ src/ # Contract source code
β β βββ lib.cairo # Module declarations
β β βββ market.cairo
β β βββ market_factory.cairo
β β βββ collateral_vault.cairo
β β βββ outcome_token.cairo
β β βββ oracle.cairo
β β βββ optimistic_oracle.cairo
β β βββ price_oracle.cairo
β β βββ lmsr_market_maker.cairo
β β βββ lmsr_multi.cairo
β β βββ arbitration.cairo
β β βββ resolution_verifier.cairo
β β βββ launch_config.cairo
β β βββ stablecoin.cairo
β β βββ dummy_market.cairo
β β βββ dummy_oracle.cairo
β βββ tests/ # Integration tests
β βββ contracts/
β βββ test_cairox.cairo
βββ oracle-agent/ # Python oracle for market resolution
β βββ src/
β β βββ agent.py # Main agent logic
β β βββ growthepie.py # Growthepie API client
β β βββ resolver.py # Resolution logic
β β βββ contracts.py # Starknet bindings
β βββ scripts/
β βββ specs/
β βββ requirements.txt
βββ indexer/ # Off-chain event indexer
β βββ src/
β βββ scripts/
β βββ tests/
β βββ requirements.txt
βββ bot/ # Oracle feeder bot
β βββ oracle_feeder.py
βββ scripts/ # Utility scripts
β βββ e2e_testnet_daa_cycle.py
β βββ oracle_run_once.py
βββ specs/ # Market specifications
βββ docs/ # Documentation
β βββ DEPLOYMENT.md
β βββ MARKET_SPEC.md
β βββ INVARIANTS.md
β βββ THREAT_MODEL.md
βββ zk/ # ZK tooling and circuits
βββ .github/workflows/ # CI/CD
β βββ ci.yml
βββ Makefile
βββ README.md
βββ SETUP.md
βββ DEVNET.md
Cairox uses the Growthepie API for objective ecosystem metrics:
Base URL: https://api.growthepie.com/v1
Available Endpoints:
/v1/master.json- Chain metadata/v1/fundamentals.json?metric={metric}&chain={chain}- Historical metrics/v1/export/{metric}.json- Metric exports
Supported Metrics:
daa- Daily Active Addressestvl- Total Value Lockedtxcount- Transaction Countgas_per_second- Gas usage
Supported Chains:
- Ethereum, Starknet, Arbitrum, Base, Optimism
- zkSync Era, Linea, Scroll, Mantle, and others
curl "https://api.growthepie.com/v1/fundamentals.json?metric=daa&chain=starknet"cd contracts
make testOr directly with snforge:
cd contracts
snforge testcd oracle-agent
source venv/bin/activate
pytestmake devnet-up
make deploy-localSee DEPLOYMENT.md for detailed instructions.
Mainnet deployment requires:
- External oracle (Growthepie API access)
- Treasury multisig
- Token bridge integration
The project uses GitHub Actions for continuous integration:
- Contract Compilation: Scarb build verification
- Tests: snforge unit tests
- Formatting: Cairo format checks
Workflow runs on:
- Push to
master - Pull requests to
master - Manual dispatch
- Market Specification - Market types and resolution rules
- Deployment Guide - Testnet and mainnet deployment
- Invariant Specs - Protocol invariants
- Threat Model - Security considerations
MIT License - See LICENSE for details.
- Website: https://cairox.io (coming soon)
- GitHub: https://github.com/the-axmc/Cairox
- Discord: https://discord.gg/cairox (coming soon)
- Growthepie API Docs: https://docs.growthepie.com