VVVX Coins paired with VVV on Base

How VVVX works

Every coin on VVVX is created the same way, in one transaction, by the same contract. Every coin trades against VVV, and every fee it earns is paid out in VVV — to the creator, to the coin’s holders, and to the platform. Once the launch transaction lands, neither the creator nor we can change the supply, the liquidity or the split, so it is worth reading once.

What a launch is

Creating a coin mints a fixed supply of tokens and puts every single one of them into liquidity. There is no team allocation, no vesting, no treasury and no airdrop.

The creator picks one of two shapes:

  • VVV only. The whole supply goes single-sided into one Uniswap V3 pool, COIN against VVV.
  • VVV and one more asset. Half the supply opens the COIN/VVV pool and the other half opens a second pool against one of the whitelisted assets — WETH, USDC and cbBTC among them. Both pools open at the same price, so there is nothing to arbitrage at the first block.

Either way circulating supply at launch is zero. Every token anyone will ever hold has to be bought out of a pool at a price the pool sets. The creator has no bag to dump, because the creator was never given one.

Supply
fixed, no mint function
Opening valuation
fully diluted, both pools
Circulating at launch
0before the first buy
Creator pre-buy cap
optional, same transaction

Every coin opens at the same valuation: the contract requires the opening fully-diluted valuation to land inside , checked against a price feed for both pools. It is a narrow band rather than a single number because two things move underneath a launch — ticks are aligned, so the reachable valuations sit a step apart, and the oracle can update between a price being quoted and the transaction landing. A price older than is refused outright rather than used.

That is not a setting a creator can move. A launchpad where creators pick their own opening number mostly gets used to open high, and then a buyer’s first job is deciding whether the valuation in front of them means anything. Fixing it means the only thing separating one coin from another is what happens after it opens.

The pre-buy

In the same transaction that creates the pools, a creator may buy up to tokens — of supply — at the opening price, out of the VVV pool, paying in VVV like anybody else. It is capped by the contract and it is shown on the coin’s page, so you can always see whether a creator took it and how much.

Creating a coin is a single transaction that deploys the contract, opens one or two pools, seeds them and locks the positions, so it is not a cheap one — budget roughly 7 million gas for a VVV-only launch and 12 million for a two-pool one. Everything after it (buying, selling, collecting, claiming) costs what an ordinary swap costs.

The coin contract itself has no owner once it exists: no mint, no burn-from, no pause, no blacklist. Its name, ticker, image and links are written on-chain at creation and cannot be edited afterwards. There is no ongoing transfer tax either — the one exception is the optional anti-snipe window, which lasts two blocks and then stops forever.

The anti-snipe window

A creator can launch a coin with an anti-snipe window: a tax on the very first buys, which is burned. It is optional and off by default, it is chosen in the launch transaction, and it cannot be changed, tuned or turned off afterwards — the token has no setter for it.

The schedule is hard-coded, so a buyer learns one rule rather than one rule per coin:

  • a buy in the launch block is taxed ;
  • a buy in the next block is taxed ;
  • every buy after that is taxed nothing, forever.

That is two blocks — about 4 seconds on Base. The tax is sent to the dead address, exactly as the coin side of every collected fee is. Neither the creator nor VVVX receives any of it.

Buys only, and that is Uniswap’s doing, not a choice

A sell inside the window is untouched. A Uniswap V3 pool checks what it receives when you sell into it: if the token took a cut on the way in, the pool would see less than it was promised and revert the whole trade rather than settle it short. A sell-side tax would therefore not tax sellers, it would stop them selling. So the window taxes the one direction it can — coins leaving one of the coin’s own launch pools.

The creator’s own first buy is exempt. It happens inside the launch transaction, while the factory still holds the supply; the window starts when that transaction ends.

A quote during the window is not what you keep

This is the part worth reading twice. The pool pays out the full quoted amount, and the token burns the tax afterwards, on the way to your wallet. Everything that checks a swap — the quoter, the pool, and the amountOutMinimum your slippage setting produces — is looking at the pool’s payout, not at what arrives. A slippage setting cannot see this tax and will not stop it. A buy with slippage set to 0.5%, made in the launch block, succeeds and delivers half.

So during the window the trade panel on this site shows the post-tax figure as “you receive”, shows the tax on its own line, labels “minimum received” as the pre-tax figure it is, and makes you press the button twice. It also refuses aggregator routes for those few seconds: an aggregator’s path is built inside a third party’s API, and an exact-output leg through a taxed pool spends your whole input and returns half the coins while still passing the router’s own check. Every route this site builds itself is exact-input.

What the badge does and does not promise

A coin launched with the window carries a badge wherever it is listed. While the window is open the badge says so and counts the blocks down; afterwards it reads launched with an anti-snipe window — past tense, because nothing is being taxed any more.

The caveat. The token taxes the pools its own launch created and no others. Anyone — including the creator, using the untaxed pre-buy — can open a pool for the same coin at a different Uniswap fee tier and trade there untaxed. This site checks every enabled fee tier against both of a coin’s quote assets, cross-checks each pool it finds against the coin’s own isLaunchPool, and withdraws the badge and says so plainly when it finds one the launch did not create. The trade panel here only ever routes through the launch pools.

VVV, and the second pair

VVV is not optional. Every coin launched here has a COIN/VVV pool, it is the pool the chart and the pre-buy use, and it is the asset every fee is ultimately paid in. A creator can add one more pool; they cannot replace the first one, and they cannot pick VVV as the second pair (the factory reverts PairIsVvv).

The second pair has to be on the whitelist, and the whitelist has one entry requirement: a USD price feed the contract can read. There are assets listed, priced two ways:

Chainlink

Assets with a feed

WETH, USDC, cbBTC, LINK, AAVE and the rest with a published Chainlink “/ USD” aggregator on Base. The contract reads the feed at launch and refuses an answer older than .

TWAP

Assets priced by TWAP

No Chainlink feed, but a real pool: a 30-minute time-weighted average of the asset’s own concentrated-liquidity pool against WETH, multiplied by Chainlink’s ETH/USD. A stale reference price or an unreadable pool reverts the launch rather than producing a number.

An asset with neither is not listed at all and a launch against it reverts PairUnpriced. That is not caution for its own sake: without a price the second pool’s opening tick would be unchecked, and a creator could open it near zero and buy half the supply for a few wei. Every listed asset, its feed address and what that feed reads are on the transparency page.

One more detail decided by the contract rather than the creator: the coin’s address is mined so that it always sorts above both of its pair assets. The pools then only ever have to be reasoned about in one direction, which removes an entire class of silently-wrong maths.

The price range

These are concentrated-liquidity pools, so the supply is not spread evenly across every possible price. It sits inside one range, and the opening price is exactly the top of that range.

A coin opens at fully diluted, and the range reaches about above that before the pool has no coins left to sell. Buying walks the price up the range; selling walks it back down.

Opens at
fully diluted
Range ceiling
where the pool runs out of coins
Span
Pool fee
every trade, both directions

The contract requires the opening price to equal the top of the range to the tick, not merely to sit at or above it. Above a concentrated range there is no liquidity at all, and a pool with no liquidity lets the price travel through that region for nothing — so a launch that started above its own range would advertise one valuation and trade at another. Refusing anything but exact equality is what makes the opening number on a coin’s page real.

Why the LP cannot move

The liquidity position is not burned to a dead address and it is not held by us. It is transferred, during the launch transaction, to a contract that exists only to hold it and collect its income.

What makes that a lock is not a feature the contract has. It is the list of functions the contract does not have:

transferFromThe position cannot be sent anywhere, by anyone, ever.
approveNobody can be given permission to move it later.
decreaseLiquidityThe liquidity itself can never be pulled back out of the pool.
ownerThere is no admin, so there is no admin to compromise or bribe.
upgradeToIt is not a proxy. The code it launched with is the code forever.

In a concentrated-liquidity pool the deposited tokens only become withdrawable by calling decreaseLiquidity. A contract that never implements it cannot release the principal — not for the creator, not for us, not for anyone who ever finds a key. The only value that can ever leave the lock is fee income, and only along the routes described below.

There is no unlock date, because there is no unlock. A conventional timelock would be weaker than this: it would mean a way out exists and is merely waiting for a clock. Here there is no way out to wait for, on any date, for anyone.

A two-pool coin has two positions and the lock holds both. The coin’s page lists them, and you can check who owns each one on the Uniswap position manager from a block explorer in a few seconds.

Fees and who gets them

Every trade pays a fee to the pool it goes through, and that fee accrues to the locked position in both of that pool’s currencies — part in the quote asset, part in the coin itself. The three cases are handled differently.

The coin’s own side is burned

Whatever arrives as the coin itself is sent to the dead address. Paying anybody in thousands of different launch tokens would be worthless dust, and selling them would be sell pressure aimed at that coin’s own holders. The lock earns no dividends, so burning the coins it holds takes nothing from anyone else — it just takes supply out of existence.

The VVV is split the moment it arrives

Fees from the COIN/VVV pool are already in VVV, and they are divided in the same transaction that collects them:

  • The creator, credited inside the lock and pulled with a claim on the coin’s page or on My coins. Nothing is pushed at anybody: a creator address that rejected an incoming transfer would otherwise be able to make the split revert for everyone.
  • The coin’s holders, paid into the coin contract and shared out per token. That is the dividend described below.
  • The platform, sent to . That address is immutable; there is no function that changes it.

All three shares are constants in the lock contract with no setter, which is why this page reads them off the chain rather than stating them. Changing them would mean a new lock and a new factory; coins already launched keep the terms they launched under.

Second-pair fees go through the keeper first

A coin’s second pool earns in its own pair asset — WETH, USDC, whatever it is — not in VVV. The lock records those under accrued and holds them. A keeper () then swaps them to VVV through the one router address fixed in the lock at deployment, and the VVV is split exactly as above.

This is the only part of the system with a trusted role in it, so it is worth being precise about its size. The keeper cannot reach a liquidity position or any principal; it can only spend fees already collected. The swap output must be VVV, the router is fixed, the allowance granted is exactly the amount being swapped and is reset to zero afterwards, and the returning VVV is split by the same constants. The worst a compromised keeper can do is accept a bad price on one conversion, losing part of the fees accrued in that single call. The transparency page lists the keeper and router addresses as the contract reports them.

Until a conversion happens, those fees sit in the lock. The coin’s page shows them as waiting, and Analytics totals them across every coin.

Collecting is permissionless

Anyone can trigger a collection for any coin, from the coin’s page or straight from a block explorer. That is safe in the sense that matters — the lock can only ever pay the creator it recorded, the holders of that coin, and the immutable platform address, so the caller cannot direct a wei of it anywhere. It has one consequence worth knowing about, which is under the risks.

Nothing can redirect the fees

On some exchanges it can. A vote-escrow DEX lets its governance attach a gauge to a pool, after which that pool’s trading fees go to the token holders who voted for it rather than to the position that provided the liquidity — without the creator’s involvement or consent.

Uniswap is a plain concentrated-liquidity exchange. It has no gauges, no vote-directed emissions and no mechanism that can send a pool’s fees anywhere but to the position that earned them. One thing does come off the top, and it is not ours: the exchange keeps a share of every swap fee as a protocol fee. On the pools used here that share is one sixth — measured, not quoted, the pools read back feeProtocol 0x66 — so five sixths of the fee reaches the locked position and the rest goes to the exchange.

Coins launched for an X account

A coin can be launched for an X account instead of for a wallet. When it is, the creator share of its fees does not belong to whoever sent the launch transaction: it accrues in the fee lock under a separate contract, filed against that account’s numeric X user id, and only a wallet the account has bound can move it.

The id is the truth; a handle is not

An X handle can be renamed, and an account can be sold or taken over, so a handle identifies nobody in particular a year from now. The numeric id cannot be changed and never moves between accounts, so that is what is written on chain and that is what this site shows. VVVX has no handle resolver: where you see an id, nothing here claims to know whose it is, and the link beside it goes to X so that X can answer that question.

Binding a wallet, and the key that authorises it

Nothing on a blockchain can check who owns an X account, so something off chain has to vouch for it. Here that is a single key — the signer — which signs an authorisation naming one id and one wallet, and the binding contract verifies that signature and nothing else. Anybody may submit a valid authorisation; the signature is the permission, not the sender.

What that means, plainly: whoever holds the signer key can bind any X id to any wallet, and could therefore take the unclaimed creator fees of any account that has not claimed yet. There is no on-chain way around it. What limits it is that the signer is a separate key from the one that deploys the contracts and the one the platform fee is paid to, that it can sign nothing but bindings — it holds no money, owns no contract, and cannot move a coin, a pool or a fee — and that every binding it authorises is an event on chain, so a wrong one is visible immediately and for ever. The signer may be a multi-signature Safe rather than one key — the contract accepts a contract wallet’s signature as readily as a key’s — and it is worth reading which it is, because a Safe’s owners can be rotated and a bare key’s cannot: the signer address is fixed at deployment and has no setter. The signer’s address, and the binding contract’s, are on the transparency page and on the claims page, read from the chain.

Unclaimed fees wait, and are never swept

An account that has bound no wallet is the normal resting state, not a fault. Its fees accrue in the lock and nobody at all can move them — not the platform, not the signer, not the binding contract itself. There is no expiry, no reclaim and no sweep: they wait for as long as it takes, and the day a wallet is bound they are claimable in full.

Two things an X launch cannot do

A pre-buy is refused on an X launch: there is no wallet the coins would belong to, and letting the sender pre-buy on somebody else’s coin would be a gift to whoever sent it. And the creator role cannot be transferred away from the account — the fee stream belongs to the id, and it is not for sale.

Everything else is identical. The supply, the locked liquidity, the split, the holder dividends and the anti-snipe window all behave exactly as they do on any other coin; a coin can perfectly well be launched for an X account and with an anti-snipe window.

Holder dividends

Every coin launched here is an ERC-20 with one extra ability: it can pay its holders. When a collection happens, the holders’ share of the VVV is sent into the coin contract and credited per token held, to everyone at once, without anybody being iterated over.

It accumulates. Your claimable amount grows with every collection while you hold, and stops growing the moment you sell — what you have already accrued stays yours and is still claimable afterwards. Claim on the coin’s page, or claim several at once from My coins. The VVV goes straight to your wallet.

Addresses that earn nothing

Some balances are not holdings, and counting them would quietly take the dividend away from the people it is for. Fixed at creation and never changed afterwards: the COIN/VVV pool, the second pool if there is one, the lock, the factory, the coin contract itself, and the dead address. Coins sitting in a pool are not anybody’s, and coins in the lock are on their way to being burned.

An excluded balance does not count toward the eligible supply either, so it does not dilute the share of the holders who do earn. A pool somebody else creates later is not excluded — the coin has no owner who could add one — so it earns like any other holder. That is an accepted consequence of having no admin at all.

The first distribution, before anybody holds anything

Right after a launch every token is in the pools, so the eligible supply is zero and there is nobody to divide a dividend among. Rather than revert or lose it, the coin holds the VVV as undistributed and folds it into the next distribution once at least tokens are in hands that can earn. Nothing is lost and nothing divides by zero; the coin’s page shows the held amount.

The coin’s picture

Choose a file from your phone or computer. The browser shrinks it to 512×512 and re-encodes it before anything leaves the page — which also strips the EXIF data a phone camera attaches, so the coordinates of where you took the photo are not published along with your coin.

What is written on-chain is an IPFS CID: the identifier IPFS itself would give those exact bytes. VVVX serves the picture, which is why it appears instantly and needs no gateway — but the reference is not a link to VVVX. If this site were ever replaced, anyone holding the file could pin it and every coin’s picture would resolve again. Launchpads that store an id from their own database instead lose every image the day they shut down.

A CID is a name, not a promise of storage. It says what the bytes are, so anybody holding them can prove they are the right ones — it does not make them exist somewhere forever. The picture stays reachable while somebody keeps a copy: VVVX does while it runs, and after that only if you or someone else has pinned it. If a coin’s image matters to you, pin the file yourself; it costs nothing and it is the only version of this that does not depend on us.

PNG, JPEG, GIF and WebP. SVG is refused: it is a document that can carry scripts, and a coin image is not a place to accept those. If you already pinned an image yourself, you can paste its CID instead of choosing a file.

Buying with ETH

A coin trades in one pool or two, and neither of them takes ETH. Most people arriving at a coin hold nothing else, so the trade panel takes ETH as well — and works out how to get it there.

Three routes are priced every time you type an amount:

  • Straight through the pair pool, when the coin’s second pair is WETH: the router wraps your ETH and swaps it, in one transaction with no approval.
  • Through VVV: WETH into VVV on Uniswap, then VVV into the coin — still one transaction.
  • Through the aggregator: KyberSwap buys VVV across every Base venue, then the coin is bought here. Two confirmations, and the panel says so before you start.

Whichever actually delivers more of the coin is the one used. A single-transaction route wins unless a two-step route beats it by a real margin, because a second signature is worth more than a fraction of a percent. You can also pay in VVV or in the coin’s pair asset directly, and the panel picks the pool that matches.

You never grant the aggregator an allowance: the leg it performs is paid in ETH itself, which is not a token and cannot be spent by anyone on your behalf. Its contract address is pinned in this site’s code and checked before anything is signed. And the amount bought on Uniswap is taken from what actually arrived in your wallet, never from what the quote predicted.

If you stop between two steps, you are holding VVV — not a loss, and not a stuck transaction. Switch Pay with to VVV and the buy finishes.

One exception, for about four seconds. While a coin’s anti-snipe window is open, the aggregator routes are not offered: their path is built inside a third party’s API and cannot be shown to be exact-input, and an exact-output leg through a taxed pool spends the whole input for half the coins while still passing the router’s own check. The Uniswap routes are unaffected and every one of them is exact-input. The quote you see during that window is also pre-tax at the pool; the panel shows what you keep.

Contracts

Five contracts, all non-upgradeable, deployed once. The addresses are below, each linked to its block explorer; the transparency page adds the rest — the price feeds, the router, and every constant read live off the chain.

  • Factory — deploys the coin, creates one or two pools, seeds the liquidity, hands the positions to the lock and runs the optional pre-buy, in one transaction.
  • Coin — fixed supply, no owner, no mint, no tax, and a claim() that pays its holder their VVV.
  • Fee lock — holds the positions forever, burns the coin side of every fee and splits the VVV between the creator, the holders and VVVX.
  • Pair registry — the whitelist of assets a second pool may use, and each one’s price feed.
  • VVV/USD feed — a time-weighted average of the VVV pool multiplied by Chainlink’s ETH/USD. Every dollar figure on this site comes from it.
Not yet deployed

VVVX has no contracts on Base mainnet. Verified addresses and source links appear here once it does, and the contracts are meaningless to trust until you can read them at a real address.

Risks, stated plainly

The lock promises exactly one thing: the liquidity stays in the pools, and fee income is split the way this page says. Everything else about a coin — whether it turns out to be worth anything — belongs to the market. Here is what is left over after the mechanics, stated once, without softening.

A collection can be front-run

collect is permissionless, and the dividend it pays is credited to whoever holds the coin in that block. So somebody can buy, collect and claim in one transaction, take a share of the pot that was built up while they held nothing, and sell again. We have written the attack ourselves and it works.

It is an accepted trade-off, not an oversight. The alternative is to gate collection behind a privileged address, and a permissioned collect is a worse deal for holders: it means the fees only move when we say so. The mitigation is operational rather than clever — the keeper collects often, which keeps the uncollected pot small, and a small pot is not worth the gas to skim. If you are holding a coin with a large uncollected balance, collecting it yourself is the cheapest defence and anybody may do it.

Prices come from oracles, and oracles go stale

Opening valuations are enforced against a Chainlink feed or a 30-minute TWAP of a real pool multiplied by Chainlink’s ETH/USD. Both can be wrong, and both can stop answering. The contract’s response to a stale or unreadable price is always the same: revert the launch. There is no fallback source and no “last known good” value, because a launch priced off a broken feed is exactly the outcome the band exists to prevent. A TWAP is also harder to move than a spot price, but it is not impossible — it is an average of a pool somebody could push, over half an hour, at their own cost.

The keeper is a trusted role, bounded

Second-pair fees only become VVV when the keeper converts them. If the keeper stops, those fees sit in the lock indefinitely — visible, not lost, and still convertible the day it runs again. If the keeper is compromised, the damage is slippage on a conversion, bounded by the fees accrued in that one call. It cannot reach a liquidity position, cannot change where the output goes, and cannot pay itself.

An anti-snipe badge can be worked around

The window taxes buys out of the pools the launch itself created, and it can only do that — the token knows which pools those are and nothing else. Anyone can open a pool for the same coin at a different Uniswap fee tier and trade there untaxed, and a creator holding an untaxed pre-buy can do it in the launch block. This site checks every enabled fee tier against the coin’s own isLaunchPool and withdraws the badge when it finds such a pool, but the check runs here, not on chain: the token itself keeps no record that its badge no longer means anything.

The other half of the same caution: a quote during the window is pre-tax. The pool pays out in full and the tax is burned afterwards, so nothing a router or a slippage setting checks can see it. Any other interface, and any wallet’s own simulation, will show you the pool’s figure. See the anti-snipe window.

The platform address cannot be changed

That cuts both ways and it is worth saying so. Nobody can redirect the platform’s share to themselves, and nobody — including us — can move it if the key behind it is ever lost. The share would keep being paid to an address that cannot spend it.

Everything else

Locked liquidity is not a price floor, not a promise and not a reason to buy. A creator with a pre-buy holds coins they can sell like anyone else, and the coin’s page says whether they took one. A second pool means two prices that arbitrage keeps roughly together, not exactly. And the coin contracts have no admin at all, which is the point — but it also means there is nobody to call when something about a particular coin goes wrong.