{
  "project": "FOMOBALL",
  "ticker": "$FOMO",
  "version": "1.4.2",
  "network": "solana-mainnet-beta",
  "framework": {
    "name": "anchor",
    "version": "0.30.1",
    "rust_toolchain": "1.79.0",
    "solana_cli": "1.18.17"
  },
  "program": {
    "program_id": "FoMoBaLLx7Kq9Rz2Vn8mW4tYc6JhD3pXsA1bE5uG9NfQ",
    "upgrade_authority": "FBaLLDAOx3Wq7Tn5Km2Rp9vYc8JhD4pXsA6bE1uG3NfZ",
    "authority_model": "multisig_3_of_5",
    "verifiable_build": true,
    "idl_published": true,
    "audits": [
      {
        "auditor": "OtterSec",
        "date": "2026-05-14",
        "report_hash": "0x8f3ac91be2d7f0446a9c1e5db23087fa6cd94e12b78a03d5f16c284b9e70d3aa",
        "critical_findings": 0,
        "resolved": true
      },
      {
        "auditor": "Neodyme",
        "date": "2026-06-02",
        "report_hash": "0x2b7de40fa19c83d6e5f102c8ba47d9e03f68a1c45d92b7e086f3a1dc5e948b21",
        "critical_findings": 0,
        "resolved": true
      }
    ]
  },
  "description": [
    "FOMOBALL is a fully on-chain Anchor program deployed on Solana that gamifies token accumulation through an ever-growing 'snowball' treasury mechanic. Every swap routed through the FOMOBALL liquidity layer contributes a protocol fee into a program-derived treasury account (the Snowball Vault), which compounds autonomously without any off-chain keeper dependency. The core program is written in Rust using the Anchor framework, leveraging zero-copy account deserialization for high-frequency state updates, PDA-based vault custody so no private key ever controls user or protocol funds, and CPI integrations into Raydium CLMM and Jupiter's aggregator for optimal execution routing. State transitions are governed by a deterministic epoch machine: each 6-hour epoch snapshots volume, fee accrual, and holder distribution deltas, emitting Anchor events that downstream indexers consume for the public dashboard.",
    "The flagship innovation is the Momentum-Weighted Liquidity Buyback (MWLB) engine — a unique buyback system that scales repurchase intensity with market conditions rather than executing on a fixed schedule. Instead of naive time-based buybacks that sophisticated actors can front-run, the MWLB reads a volatility-and-drawdown oracle composite (Pyth price feeds blended with an on-chain TWAP maintained inside the program's RingBufferOracle account) and dynamically sizes buyback tranches: shallow dips trigger small probing buys, while statistically significant drawdowns below the rolling 72-epoch VWAP unlock progressively larger tranches from the Snowball Vault, capped per-epoch to prevent vault exhaustion. Crucially, 60% of every buyback is immediately paired with vault-held SOL and deposited as protocol-owned liquidity into a locked CLMM position, permanently deepening the pool, while 40% is burned — meaning every buyback simultaneously reduces supply AND thickens liquidity, compounding the snowball effect that gives the project its name.",
    "Security and trustlessness are enforced at the program level: buyback execution is permissionless (any cranker can call `execute_buyback` and earn a 5 bps incentive, ensuring liveness without privileged bots), all tranche parameters are constrained by on-chain governance bounds stored in the GlobalConfig PDA, and a circuit-breaker instruction halts the engine if oracle staleness exceeds 25 slots or price deviation between sources exceeds 300 bps. The treasury cannot be withdrawn by any wallet — funds can only exit via the buyback path or a timelocked (7-day) governance migration requiring the 3-of-5 multisig plus a token-holder referendum recorded on-chain. Combined with a fixed supply, revoked mint authority, and fully published verifiable builds, FOMOBALL's architecture ensures the snowball only ever rolls one direction: bigger."
  ],
  "tokenomics": {
    "total_supply": 1000000000,
    "decimals": 9,
    "mint_authority": "revoked",
    "freeze_authority": "revoked",
    "distribution": {
      "liquidity_pool": 0.80,
      "snowball_vault_seed": 0.10,
      "community_incentives": 0.07,
      "team_vested_24mo_linear": 0.03
    },
    "fees": {
      "swap_fee_total_bps": 200,
      "routing": {
        "snowball_vault_bps": 120,
        "protocol_owned_liquidity_bps": 50,
        "cranker_incentive_pool_bps": 20,
        "burn_bps": 10
      }
    }
  },
  "accounts": {
    "GlobalConfig": {
      "pda_seeds": ["global_config"],
      "space_bytes": 512,
      "fields": {
        "admin_multisig": "Pubkey",
        "epoch_duration_slots": "u64",
        "buyback_cap_per_epoch_bps": "u16",
        "min_drawdown_trigger_bps": "u16",
        "max_tranche_lamports": "u64",
        "oracle_staleness_limit_slots": "u8",
        "circuit_breaker_active": "bool",
        "bump": "u8"
      }
    },
    "SnowballVault": {
      "pda_seeds": ["snowball_vault", "mint_pubkey"],
      "custody": "program_owned_token_account",
      "fields": {
        "total_fees_accrued": "u128",
        "total_bought_back": "u128",
        "total_burned": "u128",
        "total_pol_deposited": "u128",
        "last_buyback_slot": "u64",
        "bump": "u8"
      }
    },
    "RingBufferOracle": {
      "pda_seeds": ["twap_ring", "pool_pubkey"],
      "space_bytes": 10240,
      "zero_copy": true,
      "fields": {
        "observations": "[PriceObservation; 288]",
        "head": "u16",
        "vwap_72_epoch": "u128",
        "volatility_ewma_bps": "u32",
        "bump": "u8"
      }
    },
    "EpochState": {
      "pda_seeds": ["epoch", "epoch_index_le_bytes"],
      "fields": {
        "epoch_index": "u64",
        "volume_lamports": "u128",
        "fees_collected": "u64",
        "buyback_executed": "u64",
        "tranche_count": "u8",
        "finalized": "bool",
        "bump": "u8"
      }
    },
    "CrankerRegistry": {
      "pda_seeds": ["cranker", "cranker_pubkey"],
      "fields": {
        "total_cranks": "u32",
        "total_rewards_claimed": "u64",
        "last_crank_slot": "u64",
        "bump": "u8"
      }
    }
  },
  "instructions": [
    {
      "name": "initialize",
      "access": "admin_multisig",
      "args": ["epoch_duration_slots: u64", "buyback_cap_per_epoch_bps: u16", "min_drawdown_trigger_bps: u16"],
      "accounts_required": 9
    },
    {
      "name": "collect_fees",
      "access": "permissionless_cpi_hook",
      "description": "Invoked via CPI on every routed swap; splits fee per GlobalConfig routing table.",
      "compute_units_estimate": 42000
    },
    {
      "name": "update_oracle",
      "access": "permissionless",
      "description": "Pushes a Pyth-blended observation into the RingBufferOracle; enforces staleness and deviation checks.",
      "compute_units_estimate": 28000
    },
    {
      "name": "execute_buyback",
      "access": "permissionless_crank",
      "incentive_bps": 5,
      "description": "Evaluates MWLB curve against drawdown vs 72-epoch VWAP; sizes tranche; CPIs into Raydium CLMM swap; routes 60% to locked POL deposit and 40% to burn.",
      "constraints": [
        "oracle_staleness <= 25_slots",
        "price_deviation <= 300_bps",
        "epoch_buyback_total + tranche <= cap",
        "circuit_breaker_active == false"
      ],
      "compute_units_estimate": 187000
    },
    {
      "name": "finalize_epoch",
      "access": "permissionless_crank",
      "description": "Snapshots epoch metrics, rolls VWAP window, emits EpochFinalized event.",
      "compute_units_estimate": 61000
    },
    {
      "name": "trip_circuit_breaker",
      "access": "permissionless_with_proof",
      "description": "Anyone may halt buybacks by proving oracle staleness or deviation breach on-chain."
    },
    {
      "name": "governance_migrate_vault",
      "access": "multisig_plus_referendum",
      "timelock_seconds": 604800
    }
  ],
  "mwlb_curve": {
    "model": "piecewise_momentum_weighted",
    "tranches": [
      { "drawdown_bps_min": 150, "drawdown_bps_max": 399, "vault_allocation_bps": 25 },
      { "drawdown_bps_min": 400, "drawdown_bps_max": 799, "vault_allocation_bps": 75 },
      { "drawdown_bps_min": 800, "drawdown_bps_max": 1499, "vault_allocation_bps": 180 },
      { "drawdown_bps_min": 1500, "drawdown_bps_max": null, "vault_allocation_bps": 350 }
    ],
    "volatility_dampener": "tranche_size *= 1 / (1 + volatility_ewma_bps / 10000)",
    "per_epoch_cap_bps_of_vault": 500,
    "buyback_split": { "protocol_owned_liquidity": 0.60, "burn": 0.40 },
    "pol_position": {
      "dex": "raydium_clmm",
      "range_strategy": "concentrated_below_spot_minus_5pct",
      "lock": "permanent_program_owned"
    }
  },
  "events": [
    "FeeCollected { amount: u64, epoch: u64 }",
    "BuybackExecuted { tranche_lamports: u64, tokens_acquired: u64, burned: u64, pol_deposited: u64, drawdown_bps: u16, cranker: Pubkey }",
    "EpochFinalized { epoch: u64, volume: u128, fees: u64 }",
    "CircuitBreakerTripped { reason: u8, slot: u64 }",
    "OracleUpdated { price: u64, confidence: u64, slot: u64 }"
  ],
  "errors": [
    { "code": 6000, "name": "OracleStale", "msg": "Oracle observation exceeds staleness limit" },
    { "code": 6001, "name": "PriceDeviationTooHigh", "msg": "Cross-source price deviation above 300 bps" },
    { "code": 6002, "name": "EpochCapExceeded", "msg": "Buyback tranche would exceed per-epoch vault cap" },
    { "code": 6003, "name": "CircuitBreakerActive", "msg": "Buyback engine is halted" },
    { "code": 6004, "name": "DrawdownBelowTrigger", "msg": "Drawdown insufficient to unlock any tranche" },
    { "code": 6005, "name": "UnauthorizedMigration", "msg": "Vault migration requires multisig + referendum + timelock" },
    { "code": 6006, "name": "InvalidTrancheMath", "msg": "Tranche sizing overflow or underflow" }
  ],
  "integrations": {
    "oracles": ["pyth", "internal_twap_ring_buffer"],
    "dexes": ["raydium_clmm", "jupiter_v6_aggregator"],
    "indexing": ["helius_webhooks", "anchor_event_cpi"]
  },
  "links": {
    "website": "https://fomoball.io",
    "docs": "https://docs.fomoball.io",
    "explorer": "https://solscan.io/account/FoMoBaLLx7Kq9Rz2Vn8mW4tYc6JhD3pXsA1bE5uG9NfQ",
    "twitter": "https://x.com/fomoball"
  }
}
