cricket
On chain

Relays and the clock

Relays

drand publishes rounds through HTTP relays. The ones this site uses, in order, with a 6 second timeout each:

https://api.drand.sh
https://api2.drand.sh
https://api3.drand.sh
https://drand.cloudflare.com
GET /52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971/public/latest
GET /52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971/public/<round>

Each answers { round, randomness, signature }. They send open CORS headers, so a browser can call them directly. A relay can lie, but not undetectably: you verify the signature yourself.

The current round

round = floor((unixSeconds - 1692803367) / 3) + 1
publishedAt(round) = 1692803367 + (round - 1) * 3

Both are in CricketBeacon.roundAt and timeOfRound and in the engine (roundAt, timeOfRound). The bar at the bottom of every page uses the same formula with your clock, and nudges itself forward if a relay announces a newer round than your clock thinks exists.

If a round is late

Rounds are produced on a schedule, but a relay can lag by a second or two. The draw page retries every 1.5 seconds for about 40 seconds. On chain, reveal simply waits until someone submits the signature: nothing expires, and a late reveal is as valid as an early one.

If the network stops

If drand stopped signing, draws committed to later rounds would stay unrevealed. There is no emergency exit by design (no admin to abuse). Choose rounds with that in mind, and for high stakes combine this with a refund path in your own contract.

ROUND --
next --
$CRICKET 0xb11e...bb13 X