The seed is committed before it is used.
A commitment published before the fact, a seed revealed after it, and an algorithm precise enough to reimplement.
The commitment
published_commitment = SHA-256(server_seed), before any tick under it exists
The seed stays secret until the epoch closes, then is revealed. Anyone can hash it and confirm it matches the commitment published beforehand.
The beacon
epoch.beacon_value = an external, independently-timestamped randomness reading
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.
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
χ² across 10 digits, 1,000,000 ticks, reject at p < 0.01
An instrument that fails this test does not get Digits contracts. The check runs before launch, not after a complaint.
Verify a real price, in your own browser.
The match condition
browser_computed_price === server_reported_price
The verifier recomputes any tick from a revealed seed entirely client-side, then compares it to what we report for the same index.
Open the fairness verifier