Rules
What the contracts guarantee, one line each; the mechanism is on how.
a pot
- Append-only: money goes in; it leaves only as a payout, a refund, the numbers it buys, or a take refused twice, moved into the coin's next draw. The vault has no withdraw.
- Nobody, LuckyPad included, edits a pot or picks who wins.
- When it pays out: 99 % to its winners, 1 % to LuckyPad (burnt, in a LuckyPad coin); a spin's fee back and 5× pay whole. Refunds pay no fee.
- Each winner is the wallet a Chainlink VRF number lands on, weighted by bag then — or by bag × time held, where the pot says so.
spins
- Who spins: a buy of a coin whose pot is Every buy, its fee at least 0.00002 Ξ, once the pot holds that fee. Sells, smaller buys and top-ups never spin.
- What it wins: the fee back, 5× the fee, or the pot as it stood after the buy; each only while the pot holds one fee, five, or five and 0.01 Ξ.
- The odds: each win's chance × its size is a fixed share of the buy's fee that joins the pot, set by the coin's table (balanced, the pot or often), which nobody can change.
- Paid: by a Chainlink number after 1 confirmation, credited to the buyer on the coin. Anyone may ask for the number or pay a win out; LuckyPad's keeper does.
- No number 24 h after the ask: the spin's batch is void, never drawn, its stake left in the pot.
who may
- Add: anyone, until the draw is requested.
- Draw: anyone, once its condition holds, a pot on a clock (the coin's own, or any with odds) only in its window; gas only. Again, if Chainlink has not answered in 24 h.
- Pay out: anyone. The creator claims their fee.
- Cancel: only a pot on a coin nobody holds, past its date if dated, or an undated one that can no longer fire: an “if it dumps” pot once the coin graduates, a level unmet a year on, a pot following a cancelled one. Refunds whoever added; never the coin's own pot.
the coin's own pot
- Draw window: on a clock, from each draw hour (picked, or the launch's weekday and hour), 24 hours if weekly, 12 hours if daily; below its floor, it rolls to the next.
- A year on: waiting for a level, it can be drawn at any hour, met or not, once it clears its floor.
- Unpaid: a take its address refuses twice, 90 days apart, anyone may move into the coin's next draw, never to the mover or LuckyPad; no second fee.
the default pot
- Pot fee but no pot: 24 h after launch anyone may add its fallback pot, one winner by bag × time held weekly, at the launch's weekday and hour, fed by its fee.
what the creator cannot do
- 1B fixed · no mint · no pause · no blacklist · metadata frozen · fees fixed at launch, but for one gift of its share to the pot, for good.
- Nor take the pot's fee; the creator may hold the coin and win like anyone.
- Only the wallet that launched the coin claims its fee, and that wallet cannot be changed.
graduation
- Graduation: the last fifth of the coin opens to trading on the same curve and the fee drops to a quarter; the coin's own pot can be drawn once, if it holds its floor — a pot that spins on every buy has no such draw.
fees
- Trade fee: two sliders, together at most 3 %, fixed at launch; a quarter of it once graduated; LuckyPad takes 20 % of each.
- Launch fee: 0.0005 Ξ, at most 0.01 Ξ. Draw cost: 0.0002 Ξ per random number, into LuckyPad's Chainlink subscription, which pays for every number; escrowed on top of a pot anyone adds, paid from the coin's own, and a pot with odds pays each later number itself, at most 0.0001 Ξ.
who holds the keys
No key pauses a coin, a trade or a pot, upgrades, takes a prize, cancels or picks a winner; the owner's can stop new launches. The owner's key can stall every draw by naming a dead Chainlink key; 90 days after a pot's first unanswered ask, anyone may settle it without a number.
The owner has only these:
- LotterysetVrfConfig
- Chainlink subscription, key hash, callback gas 1.5 M to 2.5 M, at least 3 confirmations for a draw (a spin waits 1, whatever the key); the coordinator cannot change.
- LotterysetPostage
- the draw cost, at most 0.01 Ξ, future pots only; the coin's own pays the current one: a raise can roll it.
- FactorysetCurveDefaults
- a new coin's defaults, fees at most 3 % a slider and together, future launches only.
- FactorysetLaunchFee
- at most 0.01 Ξ.
- FactorysetLaunchesStopped
- stops new launches, or reopens them; no coin, trade, fee or pot that exists is reached.
- FeeSplittersetTreasury
- where LuckyPad's share of the fees goes.
- all threetransferOwnership
- two steps; the new owner must accept.
- all threerenounceOwnership
- disabled: a retired Chainlink key or a dead treasury must stay replaceable.
Besides the owner's stop on new launches, the contracts have no pause; in an incident this site can stop its own Buy, Launch and Add-a-pot buttons and hide a coin's name, image and links — selling, claims and refunds never stop, and the contracts answer anyone directly.
LuckyPad's pots
When LuckyPad adds a pot from its own money, it follows this rule, and no other:
- Only a pot by time held, labelled “from LuckyPad”: never a pot by bag and never Every buy, where a wash would harvest it.
- A coin at least 3 days old, with at least 25 wallets that each hold 0.005 Ξ or more of it and have held it for a day.
- One person counts once: not the coin's creator, not a wallet the creator filled, wallets filled by the same wallet count as one, and only a wallet that had already sent a transaction before the coin launched.
- No pick when the five biggest wallets hold more than 50 % of what is held outside the pool; the pot is never more than the other holders' bags are worth.
- No declared LuckyPad wallet launched the coin or holds any of it, checked on chain at the pick and shown on the pot's card.
- Not picked in the last 4 weeks; the pot is at most 10 % of the coin's market cap.
- Among the coins that qualify the pick is at random, from a seed whose sha256 is published 24 hours before the pot is added and revealed with the pick; if none qualifies there is no pick.
- At launch: a pot of at most 1 Ξ each week and one of at most 0.05 Ξ each day, announced 24 hours before it draws, for 4 weeks.
LuckyPad has no pot on Base and declares no address there; they are listed here before its first pot.
Declared on Base Sepolia:
- deployer
- 0x7CA5…61DA (opens the explorer)
- fees (a contract, not a wallet)
- 0xF531…Bd8d (opens the explorer)
- timelock (a contract, not a wallet)
- 0x12f7…f095 (opens the explorer)
On a test chain the same script runs with a lighter rule, so the showcase has pots: a coin at least 1 hour old, at least 3 wallets that each hold 0.0005 Ξ or more of it for 1 hour, no ceiling on the pot, and 3 pots of 0.05 Ξ — none yet: our own wallets launched every coin here, and the rule excludes them.
contracts
To call them from a script or another app, see integrate.
on Base Sepolia
- LaunchpadFactory
- 0xf5c867b4cb9bf7210f9ebb3b18c6ab045ee47cf0 (opens the explorer)
- VRF coordinator (Chainlink)
- 0x5C210eF41CD1a72de73bF76eC39637bB0d3d7BEE (opens the explorer)
- PotHouse (library)
- 0xe7fa3864f2800f6e627c3d18d6de9b1f6089d32f (opens the explorer)
- PotShares (library)
- 0xd48b17def70a95c4b0c39268a6cc91896e3ee5e8 (opens the explorer)
- PotRules (library)
- 0x5a8675fea2123cbbd8cddee815eef54659fd74cc (opens the explorer)
- PotPay (library)
- 0x9712e6ad81591bc637f7680aec87d95503360f9b (opens the explorer)