Docs
How Punt launches tokens, where the money sits, and how a trade finds its way through the pools on Robinhood Chain.
Launching
A launch mints a fixed-supply ERC20 and pairs the supply into a real Uniswap V4 pool in the same transaction. There is no bonding curve, no presale and no graduation step: the token trades on a public pool from its first block, at the same address any aggregator or block explorer would read.
The standard token has no owner, no mint function, no burn and no pause. Nothing can be added to the supply after launch, and no key can freeze a holder’s balance, because the code to do it does not exist in the contract.
Creators may instead bring their own contract, or several deployed together in one transaction — a token with a vault, a distributor, a game. Only the token is tradeable; the rest are recorded on chain and listed on the token’s page, because they are the part a buyer cannot discover any other way.
Supply held back from the pool
A standard launch puts every token in the pool. A launch that brings its own contracts may hold back up to 20% of the supply — a team allocation, an ecosystem fund, a staking reserve — and the remaining 80% or more opens the pool. The cap is enforced by the factory, which reverts the launch above it, and nothing can raise it afterwards.
Held-back supply can only go to a contract deployed by the same transaction. It cannot go to a wallet. That does not make an allocation trustworthy — a creator can write a contract that forwards everything to themselves — but it makes it inspectable: the recipient is screened, its address and the exact amount it received are recorded on chain, and both appear on the token’s page before anybody can trade. An allocation to an arbitrary address would be a pre-mine with nothing attached to read.
Amounts are measured after the transfer rather than assumed from the percentage, so the figure shown is what the contract actually holds.
For the common case — supply vesting to the team — the launchpad deploys TokenVesting, so it is not a contract the creator writes or the buyer has to take on faith. It has no owner, no pause, no way to change the beneficiary and no way out early. The beneficiary, the start and the duration are fixed at construction; release is permissionless and can only ever pay the beneficiary; and tokens sent to it later vest on the same schedule rather than arriving unlocked. It is the same contract for every launch that uses it.
Where a launch uses it, the token’s page shows the schedule in words — when releasing starts, how long it takes, who it pays. That claim is made by comparing the deployed bytecode against the launchpad’s own build, not by asking the contract what it is, so it cannot be produced by a contract that merely answers like a vest. Anything else holding an allocation is shown as what it is: a contract nobody vetted, for you to read.
Creator-supplied contracts are screened at launch for mint authority, transfer taxes, blocklists, delegatecall, and functions that can destroy a balance the caller does not own. The result is recorded on chain and shown to buyers. A screen that could not be read is reported as unknown rather than as clean, and the launchpad screens the token it gates — contracts deployed alongside it are screened and disclosed, not vetted.
Baskets
A launch can open a pool against up to 7 assets at once — stocks and crypto in the same basket — so whoever holds any of them can buy it without converting first. Each pool is an ordinary Uniswap V4 pool from that transaction onward, visible to every scanner, and locked exactly like a single-pair launch.
Every pool opens at the same dollar price, and that is the whole design. Two pools of one token opening at different prices is not a rounding problem, it is free money: an arbitrageur buys the cheap one and sells the dear one until they agree, and the difference comes out of the liquidity the creator just locked forever. So the creator names one opening valuation in dollars, and each pool’s price is derived from it and that asset’s own price.
Supply splits by weight, chosen by the creator. What that costs is depth: one supply across seven pools is a seventh of the depth in each, and a pool can only ever pay a seller the asset its own buyers put in. That is a real cost, it is why the limit is 7 rather than fifty, and the create form says so before anyone signs.
A token trading in several pools is shown one price: the pools’ prices weighted by how much supply each still holds. A pool holding most of the supply is where most of the next trade will land, so it dominates; a pool bought nearly dry is a real market but a thin one, and weighting it equally would let it drag the headline number around.
Liquidity
Every pool’s LP position is minted directly into a locker contract that has no transfer, no withdraw, no decreaseLiquidity, no owner and no upgrade path. The liquidity is not locked by a promise or a timer — there is no code path that could remove it, and the deployed bytecode is the proof.
The one thing the locker can do is collect, and on V4 that is a stranger phrase than it sounds: fees are taken by removing zero liquidity from the position, which leaves the position untouched and pays out what it has earned. Nothing the locker can call reduces the liquidity itself.
Since the fee hook arrived, the position earns nothing anyway — the pool charges no fee, so there is nothing accruing to collect. The trade fee is taken by the hook and delivered separately. The locker still holds the position permanently, which is the part that matters, and its collect path remains for launches opened before the change.
Fees
A trade costs 1%, and nothing else. No transfer tax, no curve fee, nothing on top — that one percent is the entire revenue model, for the creator and the protocol alike.
It is charged by a hook rather than by the pool, and always in the asset the launch is priced in. That distinction is worth a sentence because it changes what a seller receives. A Uniswap pool charges its fee in whatever was paid in, so selling a coin used to pay the launch its own coin — which then had to be sold back into the same pool to become money, moving the price to do it. Here both sides of every trade pay in ETH, or in whatever the launch is quoted against, and the coin is never taken as a fee at all.
The pool’s own fee is therefore zero. Anything reading it off the pool will say a trade is free; it is not, and this is where the one percent went.
- Trade fee
- 1% — charged by the hook, in the quote asset
- Creator share
- 50% — paid out, or burned
- Protocol share
- 50% of collected fees
- Collection
- Permissionless — anyone may trigger it
The creator’s half is a choice, made at launch
A creator decides, in the transaction that creates the launch, whether their share is paid to them or given to whoever holds the coin. The choice is recorded by the locker and can never be changed. That is deliberate: a creator who could switch it afterwards could advertise a coin whose fees buy it back, let it trade on that, and then take the fees. It is part of what the launch is, and anyone can check it on chain before buying.
Given to holders means bought and burned, not distributed. A launch begins with its entire supply inside its own locked pool, so paying holders pro rata would send nearly all of it to the pool — to a position nobody can withdraw, which is to say to nobody — and would need a snapshot, a claim, and gas from every holder to collect dust. Buying the coin off its own market and burning it reaches every holder at once, in proportion, with no claim and no gas.
There is no fee to convert first. A Uniswap pool charges in whatever was paid in, so a launch used to earn its own coin whenever somebody sold — which then had to be sold back into the same pool to become money, moving the price on the way. The hook charges in the quote asset on both sides instead, so what arrives is already the thing the buyback spends.
The contract that does it has no owner, no keeper, and no way to be pointed anywhere else. It buys through a pool it derives from the pair and checks against the launchpad’s own registry, sends what it buys to a burn address, and can spend only what that launch is owed. Anyone may trigger it; nobody can redirect it.
Collection is open to anyone. Both destinations are fixed when the locker is deployed, so a caller chooses the timing and nothing else; making it owner-only would only mean fees sat uncollected whenever nobody with the key was paying attention.
The protocol’s half
Where a creator chooses what happens to their share, the protocol’s is already decided: it buys punt and burns it. Every launch’s protocol fee and every flat launch fee goes to one contract, which spends them on one coin and sends what it buys somewhere with no key.
It is built the same way as the creator-side burn and answers to nobody either — no owner, no keeper, no rescue, no timelock. The coin it burns is named once, when it is deployed, and cannot be changed afterwards by anyone including whoever deployed it. Until that name is set the fees simply accumulate, and nothing on earth can move them.
Pricing
A basket needs one dollar price per asset to open its pools at a single valuation. Those come from Chainlink where a feed exists, which is most of the curated list, and cannot be moved by anyone inside a transaction.
Staleness is judged per asset, because the honest bound differs. Feeds here have a 24-hour heartbeat, so a crypto price older than about a day is suspect — but an equity feed does not update while the market is shut, so on a Sunday its last answer is three days old and perfectly correct. One bound tight enough for ETH would refuse every weekend launch of a stock-paired token.
Assets Chainlink does not carry are priced from their own deepest USDG pool, behind a liquidity floor. That price is weaker and the interface says so— those assets are tagged in the create form. Whoever launches can push the reference pool inside their own transaction and open at a price nobody advertised, paying the pool’s fees for it, affecting only their own launch.
A price that is missing, stale, negative, or from a round that was never answered is refused rather than guessed at, and the launch reverts instead of opening at a number nobody stands behind.
Routing
Launch pools are searched alongside the standard tiers, and they are not one of them: they charge no pool fee and name this launchpad’s hook, so a key built the ordinary way describes a different pool entirely. Routing that enumerated only the usual combinations would find none of the coins launched here.
This chain runs both Uniswap V3 and V4, and they hold completely different liquidity. A pair often exists on several fee tiers across both. Choosing between them badly is not a small error: it is the difference between a fair price and losing most of a trade.
Routes are chosen by pool size, never by quoted price. That distinction is the whole of it. A quoter reports what a pool’s price curve says, and a pool holding nothing still has a price curve — so ranking candidates by who quotes best systematically rewards whichever pool is furthest from reality. One tokenised equity here has a near-empty pool quoting a sale at 172× what its real pool pays. Ranked on price that pool wins every time. Ranked on what it holds, it loses.
The rule is applied at both levels of the decision:
- Which pool, within a pair — the one holding the most, read from the pool’s own balances rather than from Uniswap’s
liquidityfigure. That figure measures depth at the current price, not inventory, and the two come apart far enough to pick a pool holding a hundredth as much. - Which pair, ETH or USDG — whichever pool holds more of the token itself. Counting the token is what makes that comparison legal, since it means the same thing on both sides.
Trades are shown in the asset you actually paid or received, alongside the token amount and the dollar value. A price is only ever quoted from a pool that demonstrably holds something; where no such pool exists, the interface says so instead of inventing a number.
Risks
Transactions are submitted through your wallet and may be irreversible. Tokens can be volatile or lose all value. punt does not provide custody, warranties, or financial advice.
- Thin pools. Some tokens have very little liquidity. Buying or selling more than a pool can absorb moves its price sharply against you, whatever route is chosen. No routing can create depth that does not exist.
- A basket divides depth. Splitting one supply across several pools makes each of them shallower, and a large sell into the thinnest one moves it further than the headline price suggests.
- Locked liquidity is not a price floor. Supply that cannot be withdrawn still cannot stop a price falling.
- Creator-supplied tokens carry their own risk. Screening flags known dangerous patterns; it is not an audit and cannot prove a contract is safe.
- Held-back supply can come back to the market. An allocation is capped at 20% and has to sit in a contract you can read, but reading it is the point — the launchpad does not vet what that contract does with the tokens, and a vest that ends is supply that can be sold. Check the recipient and the schedule on the token’s page before you price a launch that has one.
- None of this has been audited externally. The contracts are tested and the liquidity lock is verifiable from the bytecode, but no third party has reviewed them.
Your wallet submits every transaction. punt does not custody assets. Contracts run on Robinhood Chain (chain 4663). Pools are Uniswap V3 and V4 deployments at 0x1f7d7550… and their V4 counterpart. See also our Terms of Use and Privacy Policy.