V1 Documentation

Pons Lottery

A token-backed ticket lottery on the open pons v2 factory. Trading fills an ETH pot, holders deposit $LOTTERY for 1:1 redeemable tickets, and Dice selects one weighted winner onchain.

Overview

What this is.

A normal creator wallet can withdraw trading revenue for itself. $LOTTERY sets its creator fee to 5%, and Pons Lottery changes the destination: the creator-fee recipient is a contract that turns those revenues into recurring holder prizes. The rules are enforced by the controller and ticket vault instead of depending on a creator to distribute funds manually.

The short version

Trade $LOTTERY. Creator fees fill the pot. Deposit tokens for tickets. One weighted ticket holder wins 70% after the Dice fee.

01
Deposited lottery tokens protected as ticket principal
Principal stays separate

Deposited $LOTTERY backs tickets 1:1 and never becomes prize or protocol revenue.

02
Ticket balances translated into transparent weighted odds
Odds stay readable

Your chance is your ticket balance divided by the total live ticket supply.

03
Onchain randomness selecting one weighted lottery winner
Selection stays onchain

A sortition-sum tree chooses one exact winner without scanning every participant.

Contracts

What runs the system.

The controller and persistent ticket vault belong to this project. Pons supplies token launch and fee escrow; Dice supplies authenticated randomness. The addresses below are read from the configured controller, not copied into this page.

Pons Lottery architecture: users deposit LOTTERY into the ticket vault, Dice resolves the weighted draw, and creator-fee ETH is split 70 percent to the winner and 30 percent to the protocol
ContractWhat it doesAddress
PonsTicketLotteryPons Lottery

Runs cadence, claims creator ETH, requests randomness, and accounts for the 70/30 split.

PonsTicketVaultPons Lottery

Holds deposited $LOTTERY 1:1, issues nontransferable tickets, and stores the weighted tree.

Loading from controller…
$LOTTERY tokenExternal dependency

The Pons ERC-20 deposited for tickets and returned 1:1 on redemption.

Loading from controller…
pons v2 factoryExternal dependency

Creates the token and records the lottery controller as creator-fee recipient.

Loading from controller…
pons fee escrowExternal dependency

Holds already-swept creator ETH until the lottery claims it at draw start.

Loading from controller…
Dice V10External dependency

Stores the paid randomness request and authenticates the callback that resolves one winner.

Loading from controller…
Dice providerExternal dependency

Commits to and reveals the hash-chain randomness used by the configured Dice oracle.

Loading from controller…

Controller migration does not move ticket principal. A compatible successor takes over the same vault, while recorded claims remain reserved in the controller that created them.

Creator fees

How the pot fills.

The launch is configured with a 5% creator fee and points its recipient at PonsTicketLottery. Fees first accrue inside the active Pons trading path. After Pons sweeps them, the lottery receives a claimable ETH credit in Pons escrow. The dashboard keeps pending Pons rewards and the next-draw pot separate so you can see both stages.

  1. 1
    Trading creates fees

    Bonding-curve or graduated-pool activity accrues fees under the token's Pons launch policy.

  2. 2
    Pons sweeps the trading path

    The trusted Pons sweep path converts or collects the creator share and credits its escrow.

  3. 3
    The draw claims escrow

    startDraw() claims all already-swept creator ETH into the lottery before calculating the prize.

  4. 4
    The pot is reserved

    The exact Dice fee is paid first. The remaining ETH becomes 70% winner prize and 30% protocol revenue.

Tickets

One token in. One ticket out.

Deposit $LOTTERY into PonsTicketVault and receive the same number of nontransferable ticket units. Tickets persist into every later round until you redeem them. Holding duration does not matter: a ticket deposited immediately before a round lock has the same weight as any other ticket.

Your winning chanceyour ticket balance / total ticket supply
  • Every ticket remains backed by one deposited $LOTTERY token.
  • Tickets cannot be transferred or traded; redeem them to recover the underlying token.
  • Deposits and redemptions pause only while a Dice request has locked the current round.
  • The immutable minimum nonzero position prevents dust-sized tree entries.
  • The weighted tree updates logarithmically, so winner selection does not loop through all wallets.
Draw lifecycle

Anyone starts it. Dice resolves it.

ReadyCheck time and pot

The cadence window, minimum winner prize, ticket supply, and bounded Dice fee must all pass.

LockedFreeze ticket weights

The vault records total weight and participant count, then blocks every mint and redemption.

PendingRequest Dice V10

The controller pays the exact fee and stores the authenticated request ID and reserved allocations.

ResolvedCredit one winner

The callback draws one tree leaf, unlocks the vault, and records pull-based winner and protocol balances.

Why prizes are claimed, not pushed

A callback only records liabilities. The winner later calls claimPrize(recipient), avoiding a failed receiver from blocking resolution. Unclaimed prizes stay reserved and cannot enter a later pot.

Economics and cadence

Fast at launch. Fixed after.

Winner70%

Of creator ETH remaining after the exact Dice request fee.

Protocol30%

Reserved for the current protocol owner and claimable separately.

Launch15 min

Draw spacing during the first 48 hours.

Growth30 min

Draw spacing from day 3 through day 7.

Mature60 min

Permanent spacing after the first seven days.

A scheduled time makes a draw eligible; it does not execute a transaction automatically. Any address must still call startDraw().

Permissions and parameters

Public where possible. Bounded where necessary.

Start a ready drawAnyone
Refund a stalled Dice requestAnyone, when Dice allows
Expire an overdue vault lockAnyone, after its immutable deadline
Claim a winner prizeOnly that winning wallet
Claim protocol revenueProtocol owner

What the owner can change

While the controller is paused and no draw is pending, the owner may update bounded Dice configuration, Pons infrastructure, and the minimum prize, or migrate control to a compatible successor. Changes take effect immediately; there is no timelock.

What the owner cannot change

The owner cannot move user principal, edit ticket balances or tree weights, choose a winner, spend a recorded claim, change the token or 1:1 redemption rate, or alter the fixed cadence and 70/30 split inside a deployed controller.

Security model

Know what is guaranteed.

  • Principal solvency. Vault token balance must always cover total redeemable tickets.
  • Frozen randomness set. No ticket mint, burn, deposit, or redemption can occur while a round is locked.
  • Authenticated callback. Only the configured Dice contract and provider can resolve the matching request.
  • Separated liabilities. Pending prizes, winner claims, and protocol claims are excluded from every future pot.
  • Principal liveness. Anyone can release an expired vault lock even if the oracle or controller stalls.
  • Persistent custody. Controller migration changes operations without moving the ticket vault's deposited tokens.

The system reuses pinned PoolTogether-style 1:1 ERC-4626 custody and a pinned Kleros V2 sortition tree, but upstream review does not automatically audit this integration or its local adaptations.

Limits and caveats

Things worth knowing first.

  • Depositing creates custody. You exchange wallet-held $LOTTERY for a nontransferable vault ticket until redemption.
  • Just-in-time deposits count fully. There is no loyalty or time-weighted advantage.
  • Pons sweep timing is external. Trading fees may exist before they become claimable ETH in Pons escrow.
  • Dice has liveness risk. Its provider can delay or withhold a reveal; refund and lock-expiry paths recover liveness but do not force a scheduled result.
  • Oracle fees can change. Draws stop if Dice quotes above the configured maximum until the owner explicitly updates it.
  • No trade means no new pot. The lottery distributes creator revenue; it does not mint rewards.
  • Audit status. The contracts are extensively tested, including a live-chain fork and large participant benchmarks, but have not completed an independent production audit.
  • Legal status varies. Token lotteries may be regulated as gambling, promotions, securities, or consumer products depending on jurisdiction.
Never share your seed phrase.

Pons Lottery only asks your wallet to approve tokens, deposit, redeem, start or recover a draw, and claim your own prize. Review the chain, contract, and transaction preview before signing.

Next steps

See the rules working.