How QuoPull works
QuoPull is a token funded pack raffle protocol on Robinhood Chain. Trading fees fund onchain prize games, and a fixed supply NFT (the Art Pass) is your seat at the table. This page is the plain language reference for every moving part, drawn straight from the contracts.
What QuoPull is
Everything hangs off one loop: people mint Art Passes and trade the token, a trade tax funds three prize games, and winners are paid a prize token. Once the pool is seeded, no team key can move the liquidity. Before that, the mint proceeds pass through team controlled addresses, as described under Art Passes.
$QPULL is the fair launch token you trade: fixed 1,000,000,000 supply, ownerless, 100% paired into the locked liquidity pool. $QUOTRON is the separate prize token the Treasury buys with the trade tax and pays to game winners. You trade QPULL; you win QUOTRON.
Three properties define the design:
- Provably fair randomness. Every rarity roll and every draw is seeded by a time locked Drand BLS beacon that does not exist yet when the outcome is committed, verified onchain. Anyone can recompute a roll.
- Fully onchain art. Art Pass images and metadata live in the contract itself (SSTORE2), no IPFS, no server that can go dark.
- Locked liquidity. The launch pool position is added once into a lock with no removal code anywhere. It cannot be pulled, because the function to pull it does not exist.
Participant FAQ
Short answers to the questions people ask before they buy, rip or claim. Every answer describes what the contracts do. Where a number is a setting the owner can change, the answer gives the rule and the app shows the live figure. A game day is a 24 hour period on the game clock, which starts at the scheduled launch time; it is not a calendar day.
01Buying QPULL at launch
Can I buy in the first hour?
Only if the wallet that signs the buy holds at least one Art Pass. For the first hour after the pool is created, the pool checks the pass balance of the wallet that signed the transaction, and a buy from a wallet with no pass is refused. Nothing is swapped and you pay only gas.
A pass anywhere else does not count: not in another wallet you own, not in a cold wallet or vault you do not sign the buy with, not in a Safe or other smart contract wallet, and not one you have only delegated. Move one pass into the wallet you will buy from before launch, or wait for the hour to end.
I minted through delegation. Can my hot wallet buy in the first hour?
Yes. A delegated mint sends the passes to the hot wallet that did the minting, so that wallet holds them and can buy. The vault wallet that granted the delegation does not hold those passes.
What limits apply during the first hour?
Two, on top of the pass check, and both follow the wallet that signs:
- Cooldown. At least 2 minutes between two buys from the same wallet.
- Size cap. Each buy can spend at most a fixed amount of ETH until that wallet has spent 10 times that amount during the hour. After that its buys are uncapped. Only ETH actually spent counts (the tax included), so a string of tiny buys does not use the cap up.
The cap is written into the pool's hook when it is deployed and can never be changed. The swap screen shows the exact figure and how much of your capped budget is left. None of these limits apply to sells.
Can I move my passes after buying in the first hour?
Not until the hour is over. Once a wallet has bought during the hour, no pass can be transferred out of that wallet until the hour ends. Passes can still be sent into it, and wallets that did not buy during the hour can move passes as normal. This stops one pass being passed around to unlock several buying wallets.
What changes when the hour ends?
Anyone can buy from any wallet, with no pass, no cooldown and no size cap, and the pass transfer lock switches off. This happens by itself; nobody has to turn it on. The higher sell tax is on its own clock and keeps stepping down for 48 hours (see Tax and swaps).
Can I use a smart contract wallet, a Safe, or a gasless or relayed wallet?
Use a normal wallet, where the account you connect is the account that signs and sends the transaction. Packs and leaderboard points are credited to the account that signed the transaction, not to the wallet the tokens come from. With a Safe that is the owner key that executed it. With a gasless or relayed wallet it is the relayer, and packs can never be moved to you afterwards.
During the first hour the pass check, the cooldown and the size cap also look at that signing account, so a Safe's passes do not count, and everyone who uses the same relayer shares one cooldown and one cap.
02Tax and swaps
How much tax do buys and sells pay?
Buys pay 4%. Sells pay 20% for the first 12 hours, then 16%, 12% and 8%, one step every 12 hours, and 4% from 48 hours on. The clock starts when the pool is created, the same moment the first hour starts.
The tax is always taken in ETH (as WETH), never in QPULL, and it is the stated percent of the ETH side of the trade, rounded by at most one wei. Plain QPULL transfers between wallets are not taxed; only swaps in the official QPULL/WETH pool are, and only buys in that pool earn packs and points.
Where does the tax go?
All of it goes to the Treasury contract. Each time the Treasury converts a batch, 20% goes to team + operations (kept as WETH) and 80% is turned into $QUOTRON for prizes: 61.25% of all tax to the daily raffle vault, 12.5% to the weekly leaderboard vault and 6.25% to the weekly holder draw vault. Those percentages are fixed in the contract, and where each share is sent is locked at launch.
What happens if the price moves, or my transaction runs short of gas?
- Price moves. Every swap from this site carries a minimum amount you will receive. If the price moves past it, the whole swap is cancelled and you pay only gas.
- Slow to confirm. Every swap from this site also carries a 10 minute deadline. If it is not mined in time, it cancels itself and you pay only gas.
- Not enough liquidity. A buy from this site, or any buy that names the exact ETH it spends, is cancelled as a whole if the pool cannot fill it completely, never half filled, and so is a sell made from this site. A buy made in another app that names the exact QPULL it wants to receive has no such check.
- Too little gas. A buy that runs out of gas while its packs or points are being recorded is cancelled as a whole, so a low gas limit cannot make you pay the tax and miss your packs. Send it again with more gas. The site already sets a generous gas limit on buys.
Do "exact amount out" swaps pay less tax?
No. Some swap apps let you name the exact amount you want to receive instead of the amount you pay. Those swaps pay the true rate too: an exact output buy pays 4% of all the ETH it spends, and an exact output sell pays the full current sell rate on its gross ETH. The swap on this site always uses the amount you pay.
What happens to QPULL sent to the Treasury?
The tax itself arrives as ETH, so the only QPULL the Treasury ever holds is QPULL someone sent to it. When the Treasury converts, it sells that QPULL into the pool in limited slices without paying the trade tax, and the ETH it gets follows the same 20% / 80% split. A small balance waits until it reaches the minimum batch size before it is sold.
03Packs and the daily raffle
How many packs does a buy give me?
One pack for every ticket price of ETH you spend, the tax included. Whatever is left over is banked and counts toward your next buy. The count depends on the ETH you spend, not on the QPULL you receive, so slippage never changes it.
One buy mints at most the per-buy pack limit. Value above that is not lost: it stays banked and mints on your later buys. The limit starts at 100 packs and the owner can change it, never above 200. The ticket price is an ETH amount the owner re-pegs to stay near $10, by at most 25% and at most once a day. The swap screen estimates your packs from the live values before you buy.
Do I need to do anything to enter the daily draw?
No. Every pack you buy is entered automatically in each draw it is eligible for. You only act to claim a win, to rip packs that did not win, and to pledge Art Passes for free entries.
Does a rarer pack have a better chance to win?
No. Every live pack in a draw has exactly the same chance. The draw never looks at a pack's rarity. Rarity only decides which prize bucket a winning pack is paid from: Super rare 45% of the day's pot, Rare 25%, Uncommon 20%, Common 10%, each bucket split equally between that day's winners of that rarity. A bucket with no winner that day pays nothing and its share stays in the vault for later pots.
Packs reveal as Common 80% of the time, Uncommon 15%, Rare 4% and Super rare 1%, from a Drand beacon that did not exist when you bought, so anyone can recompute every roll.
Can I transfer or sell a pack?
No. Packs are not tokens. Each pack is recorded to the wallet that made the buy, and there is no function to move it. Its prize claim and its rip XP can only ever go to that wallet.
How long does a pack stay in the draw?
Packs bought on a game day are in the draws for the next 7 game days, one draw per day, so a pack gets 7 chances unless it wins first. A pack that wins leaves the draw.
Each day's draw can be run during the following game day, by anyone. If it is not run in that time, that day is skipped for good and its pot simply stays in the vault. If the vault is too small to pay a day's pot, that day does not draw yet and no pack is used up.
How big is the daily pot, and how many winners are there?
Each daily draw pays a percentage of the raffle vault's free balance, capped at a maximum pot, to a set number of winners (never more than 200). Those three, and the minimum pot, are owner settings: each change is limited to 25% up or down (a very small value can still rise by one) and to once a day, a change only applies from the next game day, and the percentage can never be more than half the vault. The pot is only ever what the vault actually holds, so no prize amount is guaranteed.
When is the first draw?
There are no draws in the first 2 game days while packs and the prize pot build up. After that, a one time opening draw picks 5 winners from the packs bought in those 2 days, and only then do the daily draws begin. Packs from the first 2 days also stay in the daily draws for the rest of their 7 days.
If the prize vault is still too small to pay the opening, it waits. From one day later it can be deliberately skipped instead; then nobody is paid by it, no pack is used up, and the money stays in the vault for the daily draws.
Why would a draw wait?
Every pack's rarity is sealed to a future Drand beacon, and a draw is not allowed to run while any pack in it is still unrevealed. If a reveal beacon has not been posted on chain yet, the draw simply waits, nothing is used up, and it runs once the beacon is posted. Daily draws should never have to wait, because packs reveal shortly after their buying day ends, before their first draw. The opening draw can wait for the last reveals.
How do I collect a prize, and how long do I have?
A win does not pay automatically. It writes a claim for the winning wallet, which you collect from the app (one transaction can collect many). Only the winning wallet can collect it, and you have 30 days from the draw. After that the claim expires, and anyone can return the unclaimed $QUOTRON to its prize vault's pot, where it funds future draws. The same applies to holder draw and leaderboard prizes.
04Ripping and the leaderboard
What does ripping a pack give me?
A pack that finishes its 7 draws without winning can be ripped for leaderboard XP. A rip banks 1.8% of the pack's ticket price times its rarity weight: Common 1, Uncommon 2, Rare 4, Super rare 10, so a Super rare banks 18% of its ticket price. The ticket price used is the lowest one paid for any pack bought on that same game day. Packs that won, and free Art Pass entries, bank no rip XP.
When can I rip, and what if I miss it?
Ripping opens once the window for a pack's last draw has closed, and stays open for 7 game days. If you do not rip in that window, that pack's XP is gone. Ripping is always your choice; nothing rips on its own, and only the wallet that owns the pack can rip it.
Packs bought in the first 2 game days can be ripped only after the one time opening draw has run or been skipped. If that has still not happened when their rip window closes, those packs bank no XP. They never lose a prize because of this.
How does the weekly leaderboard pay?
Your points for a week are the ETH you spent on buys that week (the tax included) plus the rip XP you banked that week. Selling never adds or removes points.
The 25 wallets with the most points are on the board. Each of them is paid the week's pot times its points, divided by all points earned that week by every wallet, on the board or not. The share belonging to wallets that are not on the board is not handed to the board: it stays in the vault for later weeks. So splitting the same buying across several wallets earns nothing extra. A wallet only joins a full board by beating the lowest score on it.
How big is the weekly pot, and when is a week settled?
A week pays the smaller of the leaderboard vault's free balance and the week's pot cap, which the owner can move by at most 25% once a week, taking effect from the next week. Anything above the cap stays for later weeks.
Leaderboard weeks run from Sunday 00:00 UTC to the next Sunday 00:00 UTC. A week is settled during the following week, by anyone, normally right after it ends. If it is not settled within that following week it is skipped, and its pot stays in the vault. A pot below the minimum payout waits for more funding within that week rather than paying out dust. Prizes are claims with the same 30 day window.
05Holder draw and Art Passes
Who can win the weekly holder draw?
Wallets holding 4 or more Art Passes. Nothing to opt into. Each week the draw picks 5 different passes at random from all minted passes and pays the owner of each one fifth of the pot, so more passes means more chances, and one wallet can win several of the five shares.
A picked pass only counts if its owner has held 4 or more passes without a break since before that week ended, still does when the draw runs, and has held that exact pass since before the week ended too. Otherwise the pick is skipped and re-rolled to another pass. The check happens when the draw runs, not when the week ends, so selling below 4 before the draw loses that week.
The owner can also exclude specific addresses from winning (it is meant for protocol and escrow wallets). An exclusion, or lifting one, only applies from the following week, so it can never change a week that has already ended.
When does the holder draw run?
Holder weeks are 7 day periods on the game clock (not the leaderboard's Sunday weeks). A week is drawn during the following week, once its random beacon is published about 4.5 days after the week ends; anyone can run it. The pot is the smaller of the holder vault's free balance and its pot cap, which has a hard ceiling fixed at deploy. If a week is not drawn by the end of the following week, it is skipped and the pot stays in the vault. Winners collect within 30 days.
What happens if I move a pass?
A pass that changes wallets after a week has ended cannot win that week, for the sender or the receiver; if it is picked, the pick is re-rolled. If a transfer takes your wallet below 4 passes, your wallet stops qualifying at once, including for a week that has ended but has not been drawn yet, and once it is back at 4 or more it qualifies again only for weeks that end after that moment. Buying passes after a week has ended never helps for that week.
Do Art Passes get free entries in the daily raffle?
Yes, once the daily draws have started (the opening draw is packs only).
- Super rare passes enter every daily draw automatically, with weight 8, after a one time registration that anyone can do, you included, from the app.
- Common, Uncommon and Rare passes enter only on game days you pledge them in the app, with weight 1, 2 or 4. A pledge covers that game day's draw only.
All free entries together are limited to 10% of the paid packs in that day's draw, however many passes enter. That share is a slice of the paid draw, not a pool of its own, so it moves with how many packs were bought: a day whose draw holds fewer than 10 paid packs has no free entries at all, because ten percent of nine rounds down to nothing. Pledging more passes never enlarges the share, it only divides the same slice among more passes. A pass only counts if its current owner held it before that game day ended. A free win is paid from a freshly rolled prize bucket, not from the pass's own rarity, and banks no rip XP.
What if I move a pledged pass?
Its pledge stops counting. A pledge belongs to the wallet that made it, so after a transfer the pass is skipped in that day's draw unless its new owner pledges it again, and even then it counts only if the new owner held it before that game day ended. Moving a Super rare after a game day has ended gives up that pass's free seats in that day's draw.
06Safety and trust
Can the liquidity be pulled?
No. The launch liquidity is added once, by a lock contract that has no function to remove it, withdraw it or collect its fees, and the pool itself refuses every liquidity removal from anyone. The entire QPULL supply is sent to that lock and paired into the pool at launch: there is no presale, no team token allocation and no tokens held back.
Who holds the prize money?
Contracts, not people. The trade tax sits in the Treasury contract until it is converted, and prizes sit as $QUOTRON in three prize vault contracts. A prize vault has no withdrawal function for anyone: $QUOTRON leaves a vault only when a winner collects a prize written for them. Prizes are always paid in $QUOTRON.
The team does run the keeper that converts the tax, and sets the size and slippage limits for those conversions. Once routing is locked at launch it cannot change where the money goes or the split.
How do I check what I am signing?
Every contract address is published in Contracts. Before you sign a mint, delegation, swap, approval, claim, rip, pledge or pass registration, the app shows the contract it is about to call, with a link to the block explorer, so you can compare it with the published address. A delegation is a transaction to the delegate.xyz registry, not to QuoPull, and that registry's address is listed in Contracts too. QuoPull never asks for your seed phrase, and never asks for an unlimited token approval.
Art Passes
The Art Pass is a fixed supply ERC721 (MAX_SUPPLY = 3,500) sold for 0.0075 ETH per pass in a tiered, time boxed sale that the team starts with one action and that then closes itself on the clock. Every mint pays the exact price and is split on the spot; you receive a plain sealed pass whose rarity nobody knows yet.
| Window | Who can mint | Per wallet cap | Duration |
|---|---|---|---|
| GTD | Allowlist only (proof) | 3 (guaranteed) | 6 h |
| Overflow | Allowlist only (proof) | 8 cumulative | 18 h |
| Public | Everyone (open + proof) | 20 cumulative | 24 h |
The cap is cumulative and rises over time: one wallet can take 3 in GTD, top up to 8 in overflow, then to 20 in public. There is one counter per wallet across every window. Payment must be exact (price × quantity) and each mint splits into 80% liquidity / 10% prize seed / 10% team + operations, held in onchain buckets and withdrawn later in a separate permissionless step. Withdrawal pays each bucket to an address the team set before the mint started. Those are team controlled wallets, not locked contracts: the liquidity bucket goes to the deploy key, and the launch script refuses to seed the pool unless it adds that whole bucket (plus any declared top up) to the permanent lock.
Starting and closing
The team calls openAllowlistMint() once. That single stamp starts the clock; there is no second start action and it can never be rewound or reopened. The total sale is a fixed ~48 hours. If demand is heavy in the last minutes of overflow, an auction soft close nudges the overflow window later (up to +6 h) so late allowlisters are not cut off.
The cap is cumulative, not additive. It is one counter per wallet that rises 3 → 8 → 20, so the most any wallet can ever mint is 20, not 3 + 8 + 20. And the soft close does not extend the sale: the final close is fixed at start + 48 h, so a late overflow surge shortens the public window rather than pushing the end out.
Rarity and reveal
Rarity is not chosen at mint. After the sale, finalizeLaunch() seals the whole collection to one future Drand round, at least an hour ahead. Once Drand publishes that round and its beacon is posted on chain (the team posts it as soon as it is out, and anyone can), every pass reveals its tier at the same instant and the onchain art flips from sealed to tier art. If the team ever vanished, a 30 day backstop lets anyone finalize.
| Tier | Odds | Entry weight |
|---|---|---|
| Common | 70% | 1× |
| Uncommon | 20% | 2× |
| Rare | 8% | 4× |
| Super rare | 2% | 8× |
Each pass rolls independently, so tier counts are approximate, not fixed quotas. A pass's rarity sets its entry weight in the daily raffle, that is how many draw seats it competes for, not a fixed share of any prize. When a pass wins, the amount it pays is a separate roll over the raffle prize buckets described below.
Allowlist & delegation
The GTD and overflow windows are gated to a community allowlist. Eligibility is a merkle root set on the contract; each wallet proves membership with a merkle proof (leaf = keccak256(abi.encodePacked(wallet)), verified with OpenZeppelin MerkleProof). The root is frozen the instant the mint starts, so the allowlist must be final before launch.
Who is eligible
The allowlist is snapshotted from real holders of partner communities and built offchain into the root plus a public proofs file the site serves. The current baseline:
| Community | Rule | Wallets |
|---|---|---|
| QUOTRONS | All holders | 932 |
| StonkBrokers | Top 50 + ties | 51 |
| identity.md | Top 50 + ties | 51 |
| Gloombles mythics | Full list | 94 |
| Cncptl Prspctv | All members | 101 |
| Added by the team | Hand additions | 5 |
| Combined (deduped) | 1,213 |
A merkle allowlist is a photograph at one block, not a live feed. A wallet that sells after the snapshot stays eligible; a wallet that buys in after is not. To shrink that gap, all five lists were refreshed on 16 September 2026, the day before delegation opens: the three onchain snapshots (QUOTRONS, StonkBrokers, identity.md) were read again, and the Gloombles mythics and Cncptl Prspctv lists are fresh exports. There is no live cross chain balance check, because the sources span Robinhood Chain, Ethereum, and offchain lists.
Delegated minting (keep your cold wallet cold)
An eligible wallet does not have to connect to mint. Using the delegate.xyz v2 registry, a valuable "vault" wallet A delegates a fresh hot wallet B, scoped to the Art Pass contract, in one transaction that goes to the registry (not to QuoPull, no token approval, nothing moves). Then B calls delegatedAllowlistMint(qty, proof, A): the contract checks A's merkle proof and asks the registry whether B is delegated by A. The passes mint to B and the ETH is paid by B, but the cap is keyed to the vault A, so several hot wallets of one vault share A's single allocation and can never multiply it.
That flow, with an eligibility checker and a scoped by default delegate button, ran on the Art Pass page while the mint was open. The mint is closed and the art is revealed, so the section above is a record of how it worked rather than something you can still do.
Treasury reserve
Before the mint opens, the team may take a one time treasury reserve: reserveMint(qty, to) mints up to 25 passes (ids 1..N) to the treasury, free of charge and skipping the per wallet cap, but counting against the 3,500 supply (so at most 3,475 are left to sell). It is one shot and can only run before the mint starts, so the reserved passes are always the very first ids.
By design the reserved passes are full participants: all super rares are registered and they enter the daily raffle like any other pass (excluding them would distort the raffle odds for everyone else), and they are eligible for the weekly holder draw. Any winnings simply recycle to the treasury.
Daily Raffle
Buying the token is how you get raffle tickets. Every buy mints whole "packs," one per ticket price of ETH you spend (the owner re-pegs it to stay near $10), up to a per-buy limit that starts at 100 and can never exceed 200, with leftover value banked toward your next buy. Ticket price is based on the ETH going in, not the QPULL you receive, so slippage never changes what you earn. Each pack is sealed to a future Drand round; when it publishes (about an hour after the day closes) the pack reveals a rarity and anyone can verify the roll.
| Tier | Pack odds | Prize bucket |
|---|---|---|
| Common | 80% | 10% |
| Uncommon | 15% | 20% |
| Rare | 4% | 25% |
| Super rare | 1% | 45% |
Every live pack has the same chance of being drawn. The draw never reads a pack's tier; the tier only decides which prize bucket a winning pack is paid from. Rarer packs are not more likely to win.
Once a day the raffle takes a share of the prize vault as the pot, splits it into those tier buckets, and draws a set number of winners (never more than 200). Winners in a tier split that bucket equally. A tier with no winner is not paid: its slice stays in the vault and grows later pots. A pack stays in the running for 7 days (7 shots), and a day is drawable only on the following day, or it voids and its funds roll forward. Launch has a 2 day warm up, then a one time opening draw of 5 winners.
Art Passes enter for free
If you hold an Art Pass you enter the daily raffle without buying: a super rare pass is auto entered (weight 8) and Common/Uncommon/Rare passes opt in each day by "pledging" (weights 1/2/4). The whole free block is capped at 10% of that day's paid field, and a pass only counts if you held it before the day's cutoff, so nobody can snipe entries once the winning seed is knowable.
Claiming and ripping
Winning does not auto pay: the raffle writes you a claim and you have 30 days to claim your $QUOTRON (unclaimed rolls back into future pots). Packs that reveal as non winners and finish their 7 day run can be ripped within a one week window to bank rarity weighted XP into the leaderboard. A rip banks 1.8% of the lowest ticket price paid on the day the pack was bought, times its rarity weight (Common 1x, Uncommon 2x, Rare 4x, Super rare 10x), in the same points the leaderboard counts for buys. Winners never bank rip XP.
Packs bought in the first two days are the candidates for the one time opening draw, so they cannot be ripped until that draw has run. If the opening draw has not run by the time their one week rip window closes, those packs bank no rip XP; they never lose a prize to this rule.
Weekly Holder draw
The holder draw is a weekly jackpot for pass holders, funded by 6.25% of the trade tax. Once a week it picks 5 distinct winning passes at random from the whole minted range and pays each winner an equal one fifth of the pot in $QUOTRON. Because it picks passes, not wallets, holding more eligible passes gives you proportionally more chances, and one wallet can win several of the five shares.
- You must hold 4+ passes (
MIN_HOLD) without a break from before the week's freeze instant (the moment the week ends) until that week's draw runs. The draw runs during the following week, once the week's random beacon is public, about 4.5 to 7 days after the week ends, and it checks your wallet again at that moment: dropping below 4 at any point before then loses that week, and buying back does not restore it. Topping up after the week ends buys you nothing for that week. Note the gap against the mint caps: the guaranteed allowlist allocation is 3 passes, one below this threshold, so a wallet that mints only its guaranteed amount does not qualify for the holder draw until it reaches 4. The launch window access and the free daily raffle entries are unaffected and work from your first pass. - Move a pass after the freeze and it cannot win that week, for neither the seller nor the buyer; the slot rerolls to a third party. This is the deliberate cost of having no gas heavy snapshot: eligibility reads the NFT's ownership stamps in O(1) when the draw runs, so there is no stored list of eligible holders to be locked into.
- Winners have 30 days to claim; unclaimed or unfilled shares roll forward. A week not drawn in the following week voids and rolls forward.
- The owner can exclude addresses (
setExcluded, meant for protocol and escrow wallets): a pass owned by an excluded address is re-rolled like any other ineligible pick. Excluding or un-excluding an address only takes effect from the following week, never for a week that has already ended.
Weekly Leaderboard
The leaderboard is a weekly activity race funded by 12.5% of the trade tax. You earn XP two ways: by buying $QPULL (points equal to the ETH value of your buy) and by ripping non winning packs (1.8% of the lowest ticket price on the day the pack was bought, times Common 1x, Uncommon 2x, Rare 4x, Super rare 10x). The 25 wallets on the weekly board are paid; a week pays at most the vault's free balance or the week's pot cap, whichever is smaller, and anything above the cap rolls forward.
Your cut is pro rata by your share of all points earned that week, not just the top 25's, so a whale earns proportionally but can never corner the whole pot, and splitting your activity across wallets gains you nothing. Weeks run from Sunday 00:00 UTC to the next Sunday, and each week is settled during the following week, normally right after it ends. Selling never earns points, only buys and rips do.
$QPULL & $QUOTRON
QuoPull uses two tokens with different jobs.
| $QPULL | $QUOTRON | |
|---|---|---|
| Role | The token you trade | The token you win |
| Supply | 1,000,000,000 fixed | Prize inventory bought with tax |
| Where it goes | 100% paired into the locked pool | Into the 3 prize vaults, out to winners |
| Controls | Ownerless: no mint, burn, pause, or blocklist | Held and routed by the Treasury |
The 4% trade tax deliberately lives in the pool's hook, not in the QPULL token. A transfer tax token breaks Uniswap v4's settlement accounting, so plain transfers (wallets, vaults, claims) stay untaxed and only swaps in the canonical pool are taxed.
Liquidity & tax
The locked pool
All liquidity lives in one canonical QPULL/WETH Uniswap v4 pool. Its launch position is added exactly once into QpullLiquidityLock, which contains no remove, withdraw, collect, sweep, owner, or setter path of any kind. The guarantee is the absence of code, not a permission gate: removal is not restricted, it does not exist. The pool's own 0.30% LP fee accrues to the locked position and is never collected.
The trade tax
The hook takes a tax inside every swap on the canonical pool and sends it to the Treasury. Buys are a flat 4%. Sells decay from 20% down to 4% over the first 48 hours (stepping 4 points every 12 hours) as an anti dump measure.
The tax is always taken in ETH (as WETH), never in QPULL, and it is exactly the stated percent of the ETH side of the trade. That holds for every kind of swap, including exact output trades: an exact output sell pays the true 20/16/12/8/4% of its gross ETH, not a smaller effective rate.
| Slice | Destination | Share of tax |
|---|---|---|
| Team + operations | Team pay plus operations: the keeper bots, Drand transactions, RPC and API, and hosting. Kept as WETH. | 20% |
| Daily raffle | Raffle vault | 61.25% |
| Leaderboard | Leaderboard vault | 12.5% |
| Holder draw | Holder vault | 6.25% |
A keeper periodically calls convert(): the tax already arrives as WETH (only QPULL donated to the Treasury needs swapping to WETH first), and it sends 20% to team + operations (the keeper bots, Drand transactions, RPC and API, hosting, the running stack), turns the 80% into $QUOTRON, and splits it into the three prize vaults. Conversion is keeper only, capped per call and floored against a slippage quote, which limits but does not rule out sandwiching, and a stuck vault send is retried only to that same vault, never redistributed.
Launch protections
For the first window after the pool opens, the hook applies anti sniper rules, all keyed to the account that signs the transaction (see which wallet counts):
- Holder gate: for the first hour, only wallets holding an Art Pass can buy, and the pass must be in the wallet that signs the buy (see the FAQ).
- Cooldown: at least 2 minutes between one wallet's buys.
- Size cap: each buy is capped at a fixed amount of ETH, written into the hook at deploy, until the wallet has spent 10 times that amount in the launch window; after that, its buys are uncapped. Small buys do not use the cap up, only spend does. The swap screen shows the exact figure.
- Transfer lock: while the gate window is open, a wallet that made a launch buy cannot transfer its pass, so one NFT cannot be passed around to unlock many buying wallets.
- Pool control: the hook lets only the protocol's liquidity lock create the canonical pool and add liquidity to it, once, at launch, and it refuses every liquidity removal from anyone, the protocol included. That closes the untaxed LP side door (an outsider seeding off spot and withdrawing at 0%). The lock itself also has no function to remove the launch liquidity (see Liquidity & tax).
After 1 hour the holder gate, the cooldown, the size cap, and the transfer lock switch off automatically. Two protections are not time limited: the pool control (only the protocol's lock adds liquidity, once, and nobody, the protocol included, can remove it) is permanent, and the elevated sell tax keeps stepping down toward the 4% floor across the first 48 hours (see Liquidity & tax).
Contracts
Every QuoPull contract is live on Robinhood Chain and listed below, each linking to the block explorer. Source is verified on Sourcify. Delegations are written to the delegate.xyz v2 registry, an external contract that is not part of QuoPull, at 0x00000000000000447e69651d841bD8D104Bed493.
| Contract | Responsibility |
|---|---|
| NFTCollection | The Art Pass ERC721: tiered mint, reserve, allowlist + delegated mint, onchain rarity reveal.0xE423E4565EC9196f5B3e1319Aa7175a82A00D858 |
| PassArtRenderer | Fully onchain SVG art and metadata via SSTORE2; sealed and per tier images.0x9120aFC176d7c1C203E8B436dF7618F462975dCa |
| QPULLToken | The ownerless fixed supply ERC20 that fills the liquidity pool.0x648bf8a42d4546fdb9c840cb6ed78379e80bb0dd |
| QpullTaxHook | Uniswap v4 hook: the 4% trade tax, launch gate, throttle, and pool control.0x3536e961b166254e678ddF9f602cbc94D9009Acc |
| QpullLiquidityLock | Holds the launch LP position permanently, with no removal path in bytecode.0x44b61a265b4097460326e2b6f54575aa3f36c668 |
| QpullSwapRouter | The site's buy and sell: swaps ETH and $QPULL in the one pool, taxed like any other swap, with a minimum output and a deadline. It has no owner and keeps no user funds between swaps.0xdc22999a6d351a1a352244c981297ef98fbd5e03 |
| Treasury | Converts tax to $QUOTRON and splits it to the three prize vaults.0x920f5eb39614ce49a7fad4115f2073819c0e49e8 |
| PackRegistry | Packs, pledges, super rare entries, and rip XP for the daily raffle.0x6f43970503692b8cc01ed555ab0495c04abb5bd8 |
| RaffleEngine | Runs the daily draw and writes winner claims.0xd0845c29d63553c34ed65e6fac2b92bfaef5fcb3 |
| HolderDrawEngine | The weekly 5 winner holder jackpot over eligible passes.0xfadda86ec16cec391ee5519e7d14d51dc5a5bc60 |
| LeaderboardEngine / Registry | Weekly top 25 pro rata activity payout and the points ledger.0xbc2ae4e263b565b6b3e6449fcdd9a45f53c316730x1953810e50145ea88ffe3ee734f662aebf5780ec |
| ClaimManager | Pull payment claims for every game, one vault bound per engine.0xc5f3098b2fd814ae7534b156b3bdba2d7fe978ec |
| PrizeVault | Holds the daily raffle pot in $QUOTRON. Only the ClaimManager can move it.0x41E3ff80643324d73094457DB8Ab84e3c03814BC |
| LeaderboardVault | Holds the weekly leaderboard pot. Only the ClaimManager can move it.0x0199E675290b718fAA40F6023dA84001374346EF |
| HolderVault | Holds the weekly holder draw pot. Only the ClaimManager can move it.0xb986d75E9cc2A91DCa4c2A67c614814498641A6D |
| QpullWethAdapter | Swaps donated $QPULL to WETH for the Treasury, through the one pool.0x4EAa09ecD37FCd27301d74e10032b25271A04787 |
| QuotronRouterAdapter | Buys $QUOTRON with WETH through Quotron's canonical router.0x3992181C787ca159A26Af47ade183Fca301D2c18 |
| BlsDrandOracle | Verifies Drand BLS beacons onchain.0x9056699c00c414dAFA256CcDe8ee1756EcD23A0E |
Launch order
The sequence from mint to a live, tradeable market. Each step follows the one before it.
- 1NFT saleThe tiered Art Pass mint opens and runs its window. This is the raise that funds the launch liquidity.
- 2NFT revealOnce the sale is finalized and the Drand round it was sealed to (at least an hour later) is posted on chain, every pass reveals its tier at once, and the onchain art flips from sealed to tier art.
- 3Token launch and poolThe canonical QPULL/WETH pool is created and seeded, the liquidity is locked, and trading opens with the hook live. The first hour is a holders only window (Art Pass holders buy first, with a size cap and cooldown, and a wallet that buys cannot transfer its pass), then the pool opens to everyone.
- 4DexScreenerThe pool goes live on DexScreener, so price, liquidity, and volume are trackable in real time.
- 5Games backend goes liveThe prize engine comes online and the trade tax starts funding the game vaults. The daily raffle takes its first draw after a 48 hour warmup, then runs daily; the holder draw and leaderboard settle weekly.