Compute Finance is in early access.
The CPI Oracle and public API are live. Register a Compute Finance ID to join the waitlist.
What is the CPI?
The Compute Price Index ("CPI") is a public benchmark that tracks the cost of AI inference across major providers. It produces a single weighted reference price — the Standard Compute Unit ("SCU") — calculated from a basket of twelve models across four providers.
The Problem
LLM inference pricing is fragmented. Every provider quotes pricing differently — per token, per character, per request, per tier. There is no standardized way to benchmark or compare the cost of AI computation across models and providers. You need a verifiable pricing reference you can audit independently.
The Solution
The CPI is a weighted basket of 12 AI models across 4 providers (OpenAI, Anthropic, Google, xAI) that produces a single, verifiable unit of account: the Standard Compute Unit (SCU). The SCU represents the USD cost of a reference workload — 1,000 input tokens + 500 output tokens — averaged across the full basket.
Key Properties
- Verifiable — All prices are published on-chain via the OracleRegistry contract on Base. Anyone can independently verify the basket composition and pricing.
- Diversified — Twelve models across four providers prevent any single provider from dominating the index.
- Outlier-resistant — A per-tier 2× cap on individual model costs prevents one expensive model from distorting the tier average.
- Versioned — Current basket: v1.0 (launched April 7, 2026). The index has tracked AI compute pricing since June 17, 2025 under basket v0. Every reconstitution is recorded on-chain.
- Open methodology — The formula is deterministic and reproducible from public provider pricing.
Basket Composition
The CPI tracks twelve models from four providers, organized into three tiers. One model per provider per tier. The basket is reviewed quarterly and updated with a new version number when models are added, removed, or replaced.
Frontier
30% weight
Highest-capability models. Best reasoning, longest context, most accurate.
Grok 4
Claude Opus 4.7
GPT 5.5
Gemini 3.1 Pro
Standard
40% weight
Balanced cost-performance models. General-purpose workhorses.
Claude Sonnet 4.6
GPT-4.1
Gemini 3 Pro
Grok 3 Mini
Lightweight
30% weight
Fastest, cheapest models. For high-volume, latency-sensitive tasks.
Claude Haiku 4.5
GPT-5 Mini
Grok 4.1 Fast
Gemini 3 Flash
Tier weights reflect real-world usage distribution across capability tiers. Frontier 30% / Standard 40% / Lightweight 30%.
SCU Formula
The Standard Compute Unit is calculated in three steps. The reference workload is fixed at 1,000 input tokens + 500 output tokens, evaluated across all basket models.
Step 1 — Per-Model Cost
For each model in the basket, compute the USD cost of the reference workload using the provider’s published per-token pricing.
Step 2 — Per-Tier Capped Mean
Within each tier, compute the mean cost. Any model whose cost exceeds 2× the tier mean is capped at 2× the mean. This prevents a single expensive model from distorting the tier average.
Step 3 — Weighted Sum
Apply tier weights and sum. Frontier 30%, Standard 40%, Lightweight 30%.
Live Tier Breakdown
| Tier | Weight | Capped Mean | Contribution |
|---|---|---|---|
| Frontier | 30% | $0.013998 | $0.004199 |
| Standard | 40% | $0.006263 | $0.002505 |
| Lightweight | 30% | $0.001800 | $0.000540 |
| Total SCU | $0.007245 |
Anyone with access to provider pricing pages can independently reproduce this number.
Basket Rules
The CPI basket is governed by rules that enforce stability, fairness, and verifiability. Changes are tracked via version numbers and recorded on-chain.
Quarterly Reviews
The basket is reviewed every quarter. During each review, model pricing is updated, tier assignments are reviewed, and models are added or removed as needed. Each review produces a new basket version.
Addition Criteria
- Model must be generally available via a public API for at least 30 days
- Provider must publish verifiable per-token pricing
- Model must fit one of the three tiers (Frontier, Standard, Lightweight)
- Each tier targets one model per provider (4 providers × 3 tiers = 12 models)
Removal Criteria
- Model is deprecated or end-of-lifed by the provider
- Model is superseded by a newer version from the same provider in the same tier
- Provider discontinues verifiable pricing or public API access
Emergency Triggers
An emergency reconstitution is triggered if any model with ≥25% effective weight in its tier changes price by ≥30% within a single day. Emergency updates are published within 24 hours and increment the basket version.
Version Tracking
Every basket change increments the basket_version counter. The full history is available via the GET /v1/oracle/reconstitutions endpoint and exportable as CSV. On-chain, the OracleRegistry contract records each price update with a timestamp.
v0 vs v1.0. The CPI was first deployed on June 17, 2025 as basket v0 — an internal version used to validate the methodology, build version history, and refine basket composition. v1.0 is the public launch basket as of April 7, 2026. The v0 → v1.0 transition carries forward all historical data: anyone querying the API can read the full version history back to inception.
On-Chain Verification
All CPI pricing is recorded on-chain via the OracleRegistry contract on Base. You can independently verify prices without trusting the Compute Finance API.
Contract Address
| Network | Base (Chain ID 8453) |
| Contract | 0xE4FC0d3c388D766362992d6985556CF8907276A6 |
| Deployed | June 17, 2025 (basket v0) |
| Public launch | April 7, 2026 (basket v1.0) |
Read Functions
| Function | Description |
|---|---|
lastRevisionVersion() | Returns the current basket version number |
getLatestRevision() | Returns the full latest version: models, prices, tier weights, workload, and SCU |
getRevision(uint256 version) | Returns a specific version by number |
getModelPrices(string modelKey) | Returns input and output prices (wei per 1M tokens) for a model in the latest version |
getModelPrices(string modelKey, uint256 version) | Returns input and output prices for a model at a specific version |
getRevisionScuWei(uint256 version) | Returns the total SCU value (in wei) for a specific version |
Verification with ethers.js
import { ethers } from "ethers";
const ORACLE_REGISTRY = "0xE4FC0d3c388D766362992d6985556CF8907276A6";
const ABI = [
"function lastRevisionVersion() view returns (uint256)",
"function getLatestRevision() view returns (tuple(uint256,bytes32,uint256,uint16[3],uint32,uint32,uint256,uint256))",
"function getModelPrices(string modelKey) view returns (uint256 input, uint256 output)"
];
const provider = new ethers.JsonRpcProvider("https://mainnet.base.org");
const oracle = new ethers.Contract(ORACLE_REGISTRY, ABI, provider);
// Read latest version
const version = await oracle.lastRevisionVersion();
console.log("Latest version:", version.toString());
// Read model prices (wei per 1M tokens)
const { input, output } = await oracle.getModelPrices("gpt-5.4");
console.log("GPT-5.4 input:", ethers.formatUnits(input, 18), "CT/1M");
console.log("GPT-5.4 output:", ethers.formatUnits(output, 18), "CT/1M");Verification via Basescan
You can also read the contract directly on Basescan:
- Go to Basescan → Read Contract
- Call
getSupportedModels()to see all registered pricing keys - Call
getPrice(model)with any model key to get its price per 1M tokens - Prices are returned in wei (18 decimals). Divide by 10^18 to get the USD amount.
Public API
All oracle endpoints are public and require no authentication. Read access is free and unrestricted. Base URL: https://api.compute.finance
Endpoints
/v1/oracle/scuCurrent SCU value, tier breakdown, methodology/v1/oracle/modelsAll 12 models with tier, provider, and pricing/v1/oracle/model/:keySingle model by pricing key/v1/oracle/tiersTier definitions, weights, and current model assignments/v1/oracle/basketFull basket composition including all models, tiers, weights/v1/oracle/baselineInception SCU snapshot used as the Efficiency Index denominator/v1/oracle/history?range=30dHourly SCU history (step-shaped between basket updates). Range: 24h, 7d, 30d, 90d, 1y, all/v1/oracle/reconstitutionsNamed basket-change events with version, models, SCU delta/v1/oracle/reconstitutions/exportExport full reconstitution history as a downloadable markdown file/v1/oracle/prices/historyPer-model price history with optional date range and model filter/v1/oracle/latestLatest confirmed basket version summary (version, timestamps, SCU, basket size)/v1/oracle/healthLatest basket version number and confirmation timestamp/v1/oracle/statsPublic aggregate protocol statistics (TVL, users, volume)/v1/oracle/activityLive activity feed of recent protocol events (paginated)/v1/oracle/pricingPer-model pricing in $COMPUTE and USD with markupCode Examples
All endpoints are public. No authentication required.
Get Current SCU
curl https://api.compute.finance/v1/oracle/scuList All Models
curl https://api.compute.finance/v1/oracle/modelsGet Single Model
curl https://api.compute.finance/v1/oracle/model/claude-opus-4.7Historical SCU (30 days)
curl "https://api.compute.finance/v1/oracle/history?range=30d"Response Schemas
GET /v1/oracle/scu
{
"scuUsd": 0.006494986,
"breakdown": {
"frontier": 0.003449676375,
"standard": 0.00250519,
"lightweight": 0.000540119625
},
"referenceWorkload": { "inputTokens": 1000, "outputTokens": 500 },
"methodology": "Capped equal-weight across 3 tiers (frontier 30%, standard 40%, lightweight 30%)",
"updatedAt": "2026-04-21T13:54:38.820Z" // example timestamp
}GET /v1/oracle/models
{
"models": [
{
"id": "gpt-5.4",
"displayName": "GPT-5.4",
"provider": "openai",
"tier": "frontier",
"integrated": true,
"ctPricePerMillion": { "input": 378, "output": 2269 },
"usdPricePerMillion": { "input": 2.49858, "output": 14.99809 },
"markedUpCtPricePerMillion": { "input": 396.9, "output": 2382.45 },
"markedUpUsdPricePerMillion": { "input": 2.623509, "output": 15.747995 },
"oracleKeyPrefix": "gpt-5.4"
}
]
}Compute Finance ID
Your Compute Finance ID (CF ID) is your identity across all Compute Finance surfaces. Created on first sign-in via email or wallet, it ties together your profile, points balance, and referral code into a single record.
What CF ID stores
| Field | Description |
|---|---|
cf_id | Public identifier — format: cf_usr_XXXXXXXXXXXX |
email | Used for notifications. Optional for wallet-only sign-in. |
wallet_address | On-chain address on Base. Created via account abstraction or connected externally. |
display_name | User-chosen name. Defaults to a truncated email or wallet address. |
referral_code | Permanent 8-character code — format: cf_ref_XXXXXXXX |
points_balance | Current points total, denormalized from the points ledger |
Sign-in flows
Two sign-in methods, both produce a CF ID:
- Email — Enter your email, receive a 6-digit code, verify. A smart wallet is created on Base and associated with your email. No seed phrase required.
- Wallet — Connect MetaMask, Coinbase Wallet, or any WalletConnect-compatible wallet. Sign a SIWE message. Your wallet address becomes your CF ID's primary identifier.
Both flows converge on the same CF ID record. You can add an email to a wallet-only account later from your settings.
Points
Points track your engagement with Compute Finance — signup, daily logins, oracle interactions, and referrals. As your balance grows, you unlock higher tiers. Points are append-only and recorded in a public ledger per CF ID.
Tiers
| Tier | Min Points |
|---|---|
| Explorer | 0 |
| Starter | 500 |
| Builder | 2,000 |
| Architect | 5,000 |
| Titan | 15,000 |
How points are earned
V1 supports six earning channels. New channels will be added in future versions and announced via the changelog.
| Channel | Amount | Trigger | Frequency |
|---|---|---|---|
| Signup bonus | 100 pts | CF ID created | Once per account |
| Referral (referrer) | 250 pts | Referred user completes signup | Per successful referral |
| Referral (referred user) | 50 pts | User signs up via referral link | Once per account |
| Daily login | 10 pts | User logs in on a new calendar day (UTC) | Once per day |
| 7-day login streak bonus | 50 pts | User logs in 7 consecutive days | Once per streak completion |
| Oracle interaction | 5 pts | User views a unique model’s pricing on the oracle page | Up to 12 per day (one per model) |
Ledger model
The points ledger is an append-only log. No entries are ever updated or deleted. Your canonical points balance is the sum of all your ledger entries. The denormalized points_balance field on your CF ID record is a performance optimization that is reconciled periodically.
| Field | Type | Description |
|---|---|---|
id | UUID | Primary key |
cf_id | String (FK) | The user who earned the points |
type | Enum | One of: signup, referral, referral_welcome, daily_login, streak_bonus, oracle_interaction |
amount | Integer | Points earned (always positive — append-only, no negative entries) |
source | String | Human-readable source descriptor (e.g. referral:cf_usr_a3k9m2x7p1b4, oracle:gpt-5.4) |
created_at | Timestamp | When the points were earned |
The append-only design means: no points can be silently removed or altered, the complete earning history is preserved and queryable, and any future audit can reconstruct the exact points balance at any point in time.
Streaks
Use Compute Finance on consecutive calendar days to build a streak. Longer streaks earn bonus points. Your current streak and longest streak are shown in your profile. Streaks reset if you miss a calendar day (UTC).
Leaderboard
The top 50 users by total points are displayed on the public leaderboard, refreshed hourly. The leaderboard shows display name and points only — no other profile data is exposed.
Non-transferability
Points are non-transferable in V1. They have no monetary value, are not convertible to any token or currency, and cannot be sold, traded, or assigned to another account. A points-to-credits conversion ratio for V2 will be announced before V2 ships, and the append-only ledger ensures all V1 earning history is preserved and can be converted accurately at that time.
API endpoints
Points data is queryable via the following endpoints. Authentication is required for endpoints that return personal data; the leaderboard is public.
/v1/pointsYour points summary (total, tier, current streak, longest streak)/v1/points/historyPaginated points ledger entries for your CF ID/v1/points/leaderboardTop 50 users by total points (public, no auth)Referral Program
Every CF ID includes a unique referral code (8 characters). Share your link to invite new users — both sides earn points. The program uses first-touch attribution with a 30-day cookie window.
Referral rewards
| Event | Points | Who Earns |
|---|---|---|
| New user signs up with your code | 50 pts | New user (welcome bonus) |
| You referred a new user | 250 pts | Referrer |
Sharing your referral link
// Referral URL format
https://compute.finance/r/cf_ref_XXXXXXXXFind your referral code in your Compute Finance ID settings. Share buttons are available for X, LinkedIn, Telegram, and copy-to-clipboard. The link uses a 30-day attribution cookie — referrals count when the referred user creates a CF ID within 30 days of clicking your link.
Attribution model
Referral attribution is first-touch with a 30-day window. The first referral link a user clicks is the one credited if they sign up within the window. Subsequent referral links from other users do not overwrite the original cookie.
How it works step by step:
- A user visits
https://compute.finance/r/cf_ref_XXXXXXXX - The server redirects to
https://compute.financeand sets a cookie:cf_ref=cf_ref_XXXXXXXXwithMax-Age=2592000(30 days),SameSite=Lax,Secure - The click is recorded in the database with the referral code, timestamp, hashed IP address, and user agent
- If the user signs up within 30 days — even if they navigate directly to
https://compute.financewithout the referral link — the cookie is read during CF ID creation and the referral relationship is stored - If the user has already clicked a different referral link, the first-touch cookie is preserved
Anti-gaming rules
The referral program enforces several rules to prevent farming and abuse. None of these rules surface error messages — invalid referrals are silently ignored to avoid leaking information about user accounts.
| Rule | Implementation |
|---|---|
| No self-referral | If the cf_ref cookie matches the signing-up user's own referral code, the referral is silently ignored |
| Email deduplication | One CF ID per email — a user cannot create multiple accounts with the same email to farm referral points |
| IP rate limiting | Maximum 10 CF ID creations per IP address per 24 hours, preventing mass account creation from a single source |
| Click rate limiting | Maximum 100 clicks per referral code per hour. Clicks beyond the limit are not recorded. |
| Disposable email detection | Optional: reject signups from known disposable email domains (mailinator, guerrillamail, etc.) |
Referral dashboard
Your CF ID profile includes a referral dashboard showing:
- Total referral link clicks (all-time)
- Total signups from your referral link
- Conversion rate (signups ÷ clicks)
- Total points earned from referrals
- List of referred users (display name or truncated email, signup date, status: pending or confirmed)
Status transitions
A referral has two possible states. Points are awarded when the status transitions from pending to confirmed:
- pending — The user clicked the referral link but has not yet completed signup
- confirmed — The user has created a CF ID. Points are awarded to both sides within 60 seconds of confirmation.
