Round Lifecycle
Each Round lasts exactly 60 seconds. Time is in protocol-UTC.
The four phases
| Phase | Duration | What happens |
|---|---|---|
| Announce | t₀ → t₀+5s | The question q_t is published. Question is selected from the reservoir by `seed_t mod |
| Commit | t₀+5s → t₀+35s | Each participant submits a commit c_i = HMAC-SHA256(s_i ‖ round_t, b_i), where b_i ∈ {0, 1} is the chosen answer and s_i is a 128-bit user secret. The commit hides the answer until reveal. |
| Reveal | t₀+35s → t₀+50s | Participants reveal (s_i, b_i). The Round Engine verifies each commit. Non-revealers are eliminated. |
| Settle | t₀+50s → t₀+60s | The majority `M = argmax_v |
Why two phases (commit + reveal)?
A naive design would let players submit b_i in plaintext. This fails three ways:
- Herding. Players who vote later see the running tally and bandwagon.
- Bot collusion. A coordinated bot fleet can wait for a public signal and then sweep the majority.
- Question leakage. Plain commits let an adversary observe partial answers and infer the question's true distribution before voting.
The cryptographic Commit / Reveal protocol eliminates all three. During Commit, no one can see anyone else's answer. During Reveal, every commit is publicly verifiable against the revealed (s_i, b_i).
See Cryptographic Protocol for the formal specification.
What happens if I don't reveal?
You are eliminated from that Round and earn no Round POP. Your commit is still logged on-chain (as part of the Merkle Root) for audit. Your Reputation Score takes a small Bayesian update toward "unreliable participant."
What happens if the network is laggy?
The Round Engine accepts a 2-second grace window beyond each phase boundary for slow clients. Beyond that, commits and reveals are dropped silently.
How is the question chosen?
The Question Oracle (see Oracle & Randomness) maintains a reservoir of >100,000 pre-generated and pre-calibrated questions. Each question has been processed through:
- Generation by a multi-LLM ensemble.
- Adversarial debiasing to remove demographic and linguistic priming.
- Calibration pretest against a synthetic population to verify ~50/50 expected response. Questions with skewed expected responses are filtered.
The Round seed seed_t selects deterministically from this reservoir, so the choice is unpredictable but fully auditable.
Can rounds tie?
Mathematically, yes (exactly 50/50). When |{b_i=0}| = |{b_i=1}| the prize pool rolls into Round t+1, the question is re-drawn, and both sides survive.