NateRich.net Docs Lab Tools

Blocks & Time

Ethereum doesn't measure time in seconds; it measures it in blocks, each one about twelve seconds long. Every transaction lands in some block, and that block's number is permanent. The lottery uses block numbers — not clock time — for every deadline, and the deadline itself is driven by how full the pot is. This page covers both: the block clock, the fullness-driven countdown, and the states a round passes through on its way to the draw.

Why Blocks

Smart contracts can read block numbers directly. That makes block counts a natural on-chain clock for deadlines, draw requests, and draw execution windows.

Deadline

The deadline is the block after which an armed round can move into the draw process. Before the deadline, the round is still waiting.

The deadline isn't fixed — it moves sooner as the pot fills. A fuller pot means a shorter wait. See Fullness below for how that compression works.

Target Block

After a draw is requested, the contract waits for a future target block. That delay prevents the draw requester from knowing the result at request time.

Estimated Time

The UI estimates time using about 12 seconds per Ethereum block. It is only an estimate. Real block timing can drift, so the block number is the source of truth.

No Oracle

An "oracle" is the bridge a blockchain uses to ask the outside world a question — what's the price of ETH, who won the game, what's the next random number. Most online lotteries hire one (and pay it every draw) to deliver random numbers.

Quintile doesn't need one. Every Ethereum block already carries a random-looking number that hundreds of validators have mixed together to produce. When a draw is requested, the contract picks a block a little ways into the future and uses the number from that block as the seed. Nobody — including the person who triggered the draw — knows what it will be ahead of time.

No oracle. No subscription. No third party to trust or bribe. Just the network.

Fullness

A Quintile round doesn't run on a fixed timer. It runs on how full the pot is. A nearly-empty round can sit open for days; a pot filling toward the brim draws within minutes. The simple rule: the fuller the pot, the sooner the draw.

Arming: when the clock starts

A fresh round has no deadline at all. It's unarmed. The clock only starts once a round clears both of two bars at the same time:

Hit both and the round arms: a deadline block appears and the countdown begins. Until then, there's no pressure — buy and donate at your leisure.

The countdown compresses

The moment a round arms, its deadline is set based on how full the pot is — and every new ticket or donation that grows the pot pulls the deadline sooner. It never pushes it later.

A quiet round gives everyone time to notice and join. A pot that's catching fire resolves quickly, before anyone can sit on information. The deadline only ever moves in your favor as a spectator: it can't be stretched back out.

The exact compression curve, with knees and quadratic leg, is in Simulator > Math.

The cap: when a round is full

Every round has a ceiling — its cap. The pot can't grow past it. Once the pot is at the cap, the round shows a full state and the Buy button stops accepting new tickets (a buy that would push past the cap is refused). Donations behave a little differently — see below. A full pot is also a maximally-compressed pot, so a full round is on the verge of drawing anyway.

Donations past the cap roll forward

Donations have their own ceiling, just under the pot cap. Donate more than fits and the overflow isn't lost or refunded — it rolls into the next round's starting pot. The same thing happens to leftover dust from prize splits. Value entered into the system stays in the system; it just waits for the next round if this one is full.

The stall valve

What if a round gets 40 tickets but never reaches its minimum pot — and just sits there? After about a month, the owner can force-arm it so it can finally draw and the players who bought in aren't stuck forever. This is the only schedule-related power anyone holds, and it's tightly fenced: it needs 40+ tickets, a pot still under the minimum, and a full month elapsed. It can't change who wins, touch the pot, or rush a healthy round. It's a safety valve, not a lever.

By the numbers

The hard limits that bound a round. Values shown are for the canonical Ether game; the mini and token games scale these down proportionally, but the roles are identical everywhere.

The design target is not infinite scale. Quintile is meant to still work with a tiny crowd — even under 100 people — while remaining clean into 1,000+ ticket rounds. The contract ceiling is deliberately finite: 8,400 tickets in the canonical Ether game, and a round cannot even arm below 40 tickets. With no donations at all, the canonical Ether round reaches its Ξ1 arming pot at about 203 tickets; donations lower that practical threshold.

LimitCanonical valueWhat it does
Minimum tickets40A round can't arm or draw below this many tickets.
Minimum potΞ1The pot floor a round must reach to arm.
Protocol fee1%Skimmed from ticket spend only — never from donations. The sole owner-withdrawable amount, kept separate from the pot.
Pot capΞ42The pot can't exceed this. Buys that would overshoot are refused.
Donation capΞ41Donations beyond this roll into the next round.
Max tickets / round8,400Pot cap ÷ ticket price — the most one round can hold.
Draw delay~51 minThe gap between requesting and executing a draw, so the requester can't know the result. (~26 min on the mini games.)
Win rate~1 in 5The share of tickets that win a prize in any round.

Curious how these interact? The simulator lets you push a round all the way to its cap and watch the math.

States

Each lottery card has a small colored pill near the top — the state pill. It tells you what the round is doing right now. The block count beside it counts down to the next thing that has to happen.

Unarmed

The round is not ready to draw yet. Tickets and donations may still be available, depending on the specific lottery state.

Armed

The round has enough activity to become drawable after its deadline. When the deadline block is reached, anyone can request the draw.

Draw Commit

A draw has been requested. The contract has committed to a future target block, so the result cannot be known at the moment the request is made.

Execute Draw

After the target block arrives, the draw can be executed. Executing the draw finalizes winners and credits claimable prizes.

Draw Expired

If the draw is not executed within the allowed window after the target block, it expires. A new draw request is needed.