Provably fair
Every price is locked in before you trade.
We commit to the secret behind every price before trading starts and reveal it afterwards, so anyone can check that nothing was changed.
Fairness in 30 seconds
-
01
Locked in first
Before trading begins, we publish a fingerprint of the secret seed that will drive prices.
-
02
Revealed after
When the period ends, the seed itself is published. It must match the fingerprint.
-
03
Checked by you
Our verifier recomputes any price from the seed in your browser and compares it with ours.
The commitment
The seed stays secret until the epoch closes, then is revealed. Anyone can hash it and confirm it matches the commitment published beforehand.
published_commitment = SHA-256(server_seed), before any tick under it exists
The beacon
Recorded alongside the commitment, from a source neither we nor you controlled at the time. A second anchor that the commitment existed when we say it did.
epoch.beacon_value = an external, independently-timestamped randomness reading
The algorithm, precisely.
What the verifier below recomputes, in your browser, with no request back to us for the answer.
- 01 SHA-256(server_seed) must equal the published commitment.
- 02 msg = "tick:{instrument_code}:{tick_index}"
- 03 digest = HMAC-SHA256(key = server_seed, message = msg), as hex
- 04 u = int(first 13 hex characters of digest, base 16) / 2^52
- 05 z = clamp(inverse_normal_cdf(u), −8.0, +8.0)
- 06 σ_tick = σ_annual / sqrt(seconds_per_year / interval_seconds)
- 07 ln S(n+1) = ln S(n) + σ_tick · z(n) − (σ_tick² / 2)
- 08 price(n) = round(exp(ln S(n)) / pip_size) × pip_size
Uniformity, checked
An instrument that fails this test does not get Digits contracts. The check runs before launch, not after a complaint.
χ² across 10 digits, 1,000,000 ticks, reject at p < 0.01
Verify a real price, in your own browser.
The verifier recomputes any tick from a revealed seed entirely client-side, then compares it to what we report for the same index.
The match condition
browser_computed_price === server_reported_price