Skip to content

Identity & Verification

Chrono Score is only valuable if it cannot be faked. This page covers how Chronomancy creates verifiable, non-transferable forecasting identity — and defends against the attacks that could undermine it.


Chrono Score is attested on-chain using the Ethereum Attestation Service (EAS) — a tokenless, permissionless attestation protocol with two contracts (SchemaRegistry + EAS). As of early 2025, EAS has 420K+ unique attestors in production across Ethereum and L2s. It is natively integrated into Optimism’s Bedrock.

The CS schema encodes per-wallet:

  • Calibration metrics (Brier score, CS Level)
  • Glicko-2 Rating + RD
  • Domain subscores
  • Attestation timestamp and version

Attestations are updated on-chain after each resolved prediction. The attestation is soulbound — it cannot be transferred or sold.


Milestone achievements (tier upgrades, seasonal rankings, Wizard Duel wins) are issued as ERC-5192 soulbound tokens — a minimal extension of ERC-721 where the transfer function always reverts.

Account recovery (in case of key loss) is handled via ERC-4337 smart account recovery — users can designate a recovery address that can claim a new soulbound token tied to the same CS record.


A Sybil attacker creates many wallets, gets lucky on predictions, and exploits inflated CS for Fast-Forward premiums. The formal threat model:

Attack cost at κ=30 (minimal Bayesian shrinkage):

  • Need ~6 accounts to expect 1 “lucky winner”
  • At $600/account (staking + costs) → $3,600 to get one Premium-tier exploit
  • Not yet economical to prevent

The defense stack layers from cheapest to most friction:

Gitcoin Passport (≥20 score recommended) as the baseline identity gate. World ID available as a premium tier for highest-sensitivity contexts.

Passport ≥20 requires: verified Twitter/GitHub/ENS + on-chain history + optional biometric. Attack cost: ~$300/account for credible fake.

TierStaking RequiredFF Cap
Basic$0$1K
Standard$100 (USDC)$10K
Premium$500$50K

Staking makes attacks unprofitable: at Premium tier, attacking with 33 accounts costs $99K+ — well above exploitable profit from FF margins.

  • 90-day minimum account age before CS access
  • ≥2 predictions/month activity requirement
  • 7-day FF cooldown after large exits

These gates prevent rapid account creation + exploit cycles.

Automated detection pipeline running continuously:

SignalWhat it detects
Funding graphMultiple CS wallets funded from same source
Position correlationN wallets making identical predictions
Behavioral clusteringPrediction timing patterns
CS anomaly detectionCS growth rate inconsistent with prediction volume
Anti-correlationSystematic hedging across wallet cluster

Layer 5 — Difficulty-Weighted CS (Structural Defense)

Section titled “Layer 5 — Difficulty-Weighted CS (Structural Defense)”

The hardest-to-attack defense is the CS formula itself. Easy-market farming (predicting 85%+ markets for cheap CS accumulation) is structurally blocked:

difficulty_weight = 1 - 2 × |p - 0.5|

At p=0.85: weight = 0.30. Three certainty-market predictions count as one real prediction.

Threat LevelAction
SuspiciousWatch: flag wallet, no restriction
ElevatedRestrict: reduce FF caps by 50%
ConfirmedSuspend: freeze CS updates, lock staking
Proven attackSlash: slash staked collateral, ban wallet

To prevent importing inflated Metaculus scores without real forecasting skill, imports use TLSNotary proofs — cryptographic proofs that a specific HTTPS response from the source platform (showing your public prediction record) was genuine.

Import credit caps: 50% of face value from Metaculus/GJP, 30% from Polymarket on-chain history. The imported CS is tagged as “imported” and decays faster unless confirmed by subsequent on-platform performance.

Related: