Incentive Mechanism
VRAM HUB uses a two-stage incentive pipeline: (1) loss-delta scoring evaluated inside a TEE, and (2) OpenSkill Bayesian rating that converts per-window scores into stable reward weights.
Miner Contribution: Loss Delta
For each miner $i$ evaluated in window $t$, a Nautilus enclave computes:
$$s_i^t = L(\theta^t;, D_i) - L(\theta^t + \delta_i;, D_i)$$
where:
- $\theta^t$ — model parameters at the start of window $t$ (the anchored checkpoint)
- $D_i$ — miner $i$'s deterministically assigned data batch
- $\delta_i$ — miner $i$'s compressed gradient
- $L$ — cross-entropy loss
A positive $s_i^t$ means miner $i$'s gradient improved the model on their assigned batch. A negative value means it hurt.
Data Assignment
Each miner receives a unique but reproducible data subset:
$$\text{seed} = \text{SHA256}(\text{uid} ,|, \text{window})$$ $$\text{pages} = \text{Sample}(\text{dataset},, \text{seed},, \text{batch_size})$$
Validators use the same seed to verify which data was assigned — making the evaluation deterministic and independent of the miner's self-reported assignment.
Gradient Compression
Miners apply momentum accumulation before compression:
Momentum buffer update:
$$m_i^{t+1} = \gamma \cdot m_i^t + \eta \cdot g_i^t$$
Weight decay:
$$\theta^{t+1} = (1 - \lambda),\theta^t$$
Top-k DCT compression:
$$\tilde{g}_i^t = \text{TopK}!\left(\text{DCT}(m_i^{t+1}),; k\right)$$
where $k$ is set by the topk_compression hyperparameter. Only the top $k$ DCT coefficients (by magnitude) are transmitted, dramatically reducing upload bandwidth.
OpenSkill Rating
Raw per-window loss deltas are noisy. VRAM HUB uses the Plackett-Luce OpenSkill model to convert noisy window scores into stable Bayesian skill estimates $(\mu_i, \sigma_i)$.
Rating Update (Per Window)
Miners are ranked by their loss delta $s_i^t$. The OpenSkill update is:
Team performance scale:
$$c = \sqrt{\sum_i \sigma_i^2 + \beta^2 + n\beta^2}$$
Omega factor (rank-weighted gradient):
$$\omega_i = \frac{1}{c}!\left(1 - \sum_{q=0}^{r_i} \frac{e^{\mu_i/c}}{A_q}\right), \quad A_q = \sum_{j:,\text{rank}(j),\geq, q} e^{\mu_j/c}$$
Mu update:
$$\mu_i^{t+1} = \mu_i^t + \sigma_i^2 \cdot \omega_i$$
Sigma update:
$$\sigma_i^{t+1} = \sigma_i^t \cdot \sqrt{1 - \sigma_i^2 \cdot \delta_i}$$
Ordinal (conservative lower bound):
$$\text{ord}_i = \mu_i - 3\sigma_i$$
The ordinal represents a conservative estimate: even accounting for uncertainty, the miner is expected to be at least this good.
Why Bayesian Ratings?
Simple averaging of per-window scores is vulnerable to:
- Noise amplification — a single anomalous window dominates
- New miner disadvantage — new miners need many windows to establish reputation
OpenSkill addresses both:
- New miners start with high $\sigma$ (high uncertainty), which shrinks as more data accumulates
- A consistently good miner has high $\mu$ and low $\sigma$, producing a high ordinal
- A miner that was good but has degraded will see $\mu$ decay via the drift term $\tau$
Reward Distribution
Rewards are distributed proportional to squared ordinals (normalized):
$$w_i = \frac{(\text{ord}i - \text{ord}{\min})^2}{\sum_j (\text{ord}j - \text{ord}{\min})^2}$$
The squaring amplifies the gap between top and median performers — incentivizing sustained high performance rather than mediocrity.
Each window, reward_distributor.move emits tokens distributed by $w_i$.
Validator Incentives
Validators earn a share of the per-window validator allocation in proportion to their stake and submission completeness. Validators that submit scores for fewer miners receive proportionally less.
This ensures validators are incentivized to evaluate all registered miners, not just the cheapest ones.
VRAM Token Emission Schedule
Token: VRAM · Hard cap: 21,000,000 VRAM · Decimals: 9
Window cadence: 10 minutes → ~52,596 windows/year
Genesis emission: 70 VRAM/window → 10,080 VRAM/day
The emission schedule follows a supply-based halving model — halving triggers when cumulative mining tokens issued cross fixed thresholds (not time-based):
| Phase | Trigger (mining tokens issued) | Emission/Window | Miner (7143 BPS) | Validator (2857 BPS) |
|---|---|---|---|---|
| 1 (Genesis) | 0 → 7M issued | 70 VRAM | 50 VRAM | 20 VRAM |
| 2 | 7M → 10.5M issued (cap) | 35 VRAM | 25 VRAM | 10 VRAM |
Total mining + validation cap: 10,500,000 VRAM (50% of supply)
The mining allocation exhausts when 10.5M tokens are issued (HALVING_TRIGGER_2 == MINING_ALLOCATION); Phase 3 is unreachable — can_emit() returns false before it would be entered.
Testnet vs. Mainnet split:
| Mode | miner_bps |
validator_bps |
treasury_bps |
Notes |
|---|---|---|---|---|
| Testnet | 10,000 | 0 | 0 | 100% to miners as contribution points; validators earn nothing |
| Mainnet | 7,143 | 2,857 | 0 | Treasury 30% pre-minted at TGE — no per-window treasury cut |
The mainnet BPS split activates at TGE via governance (update_bps in hparams.move).
Token Distribution
Total supply: 21,000,000 VRAM
| Bucket | % | Amount | Vesting |
|---|---|---|---|
| Mining & Validation Rewards | 50% | 10,500,000 | Continuous emission, supply-based halving |
| Treasury | 30% | 6,300,000 | Pre-minted at TGE. 6-month cliff, 48-month linear vest |
| Team | 8% | 1,680,000 | Pre-minted at TGE. 12-month cliff, 36-month linear vest |
| Liquidity | 7% | 1,470,000 | Pre-minted at TGE. 100% unlocked — seeds VRAM/SUI pool on Cetus/DeepBook |
| Community Airdrop | 5% | 1,050,000 | Pre-minted at TGE. Converts from testnet contribution points |
Pre-minted allocations (50% = 10.5M VRAM) are minted in a single atomic premint_tge_allocations call at TGE and transferred to the deployer multisig for vesting distribution.
Anti-Gaming Properties
| Attack | Why It Fails |
|---|---|
| Upload a gradient that minimizes loss on your data but hurts others | Other miners' data is different; your score is only on your assigned batch |
| Copy another miner's gradient | Loss delta is evaluated on your assigned data — copying another miner's gradient for their data produces zero or negative delta on yours |
| Submit a pre-computed gradient from a prior window | Checkpoint hash is checked; gradients computed from a stale checkpoint will produce wrong loss |
| Collude with a validator | Validator cannot forge enclave signatures; signed scores must come from the registered enclave |
| Sybil — split one miner into many wallets | Each shard trains on a different data subset; unless shards produce identical gradients (which scores zero) the split earns at most the same total reward, not a multiple |