Luckotto V1

Choose a future boundary and cap the edge.

Each immutable stake interval targets one of the next ten exact Ethereum blocks divisible by 10,000. Different future rounds can accept positions at the same time.

1. Choose any open boundary

The next boundary is the earliest valid choice, not the only one. This makes recurring entries practical without reserving bankroll weeks in advance.

earliestRound = floor(block.number ÷ 10,000) + 1
targetBlock = chosenRound × 10,000
position range = [aggregateBefore, aggregateAfter)

2. Request a payout and cap its edge

For final aggregate A, settlement bankroll B, requested target Tᵢ, and maximum edge Eᵢ:

requested = max(A, Tᵢ)
maximumGap = floor(B × Eᵢ ÷ 2^32)
gap Gᵢ = min(requested − A, maximumGap)
payout Pᵢ = A + Gᵢ
actual edge = Gᵢ ÷ B

The target is aspirational; the edge cap is binding. If bankroll falls, payout falls instead of charging more edge.

3. Commit bankroll capital

Investments may increase bankroll and earlier round outcomes may change it, but bankrollers cannot divest while betting is active. At a positioned target, investment pauses through settlement or explicit expiry so settlement bankroll cannot change after the draw becomes knowable. Later-round quotes remain indicative without exposing bettors to discretionary bankroller withdrawals.

4. Combine two entropy sources

The target block fixes prevRandao. Thirty minutes later, Quicknet publishes the derived round's BLS signature. The contract verifies the RLP header through EIP-2935 and the signature against its pinned Quicknet key.

5. Select one candidate and apply its gates

A stake-weighted point selects exactly one stored interval. Independent coverage and bankroll-risk gates give that candidate an expected gross return equal to its stake times 1 − actualEdge. The resolver supplies the candidate index, so settlement stays O(1).

Winner deadline and expiry

invest() mints transferable ERC-20-compatible LUCKOTTO shares, but divestment opens only during wind-down. Secondary sales move unresolved exposure and may trade far from bankroll value. A winning proof must be submitted within 8,191 blocks after the target; afterward, anyone can expire the round and move its stake into the bankroll.

Renewable wind-down

The owner may freeze at any time. Otherwise, anyone may freeze after the renewable one-year sunset. Existing rounds continue, and divestment opens when every pending round finalizes. Claims remain available, but one year after freezing the owner may drain all cash to a selected external recipient without clearing outstanding accounting.