Learn

Token graduation, step by step

Graduation is the moment a Vectr token stops trading on its bonding curve and starts trading on Uniswap V3, with its liquidity locked for good. This guide follows the assets: what triggers it, where the raise and the reserved supply go, and what changes for the creator and for traders. For the tests that prove each claim, see the graduation reference.

Updated

Trigger

The line a curve has to cross

Threshold, ETH pairs
4.2 ETHAbout $11,632 at today's ETH price; real ETH held by the curve, net of fees
Threshold, Stock-Token pairs
Per asset, in that assetSized to a similar USD raise; quoteAssets[].graduationThresholdAmount on GET /config
Or: sell-out
All 800M curve tokens soldWhichever comes first
Who triggers it
The buyer who crosses the lineNo keeper, multisig or admin action is involved

A fixed 1B supply is minted to the curve contract at launch: 800M is sold on the bonding curve and 200M is held back for the Uniswap liquidity position at graduation. No presale, no whitelist, no team allocation.

Asset flow

What happens inside that one transaction

  1. 1
    The crossing buy
    Someone buys, and the curve's real ETH balance reaches the threshold (4.2 ETH), or the last curve token sells. The graduation runs inside that same transaction; there is no keeper, no vote and no delay.
  2. 2
    The curve hands over
    The curve sends the migrator everything it holds: the ETH raised and the tokens that are left, which are the 200M reserve plus any curve tokens unsold at the threshold.
  3. 3
    ETH becomes WETH
    Uniswap V3 pools only hold ERC-20s, so native ETH is wrapped. A token paired with a Stock Token skips this step and pairs with the Stock Token directly.
  4. 4
    The pool is created and priced
    The migrator creates the token/WETH pool and initialises it at raised divided by tokens migrated, which lands within about 2% of the curve's last price. If someone pre-created the pool at a fake price, the migrator trades it back to the right one first, spending only its own balance.
  5. 5
    One full-range position is minted
    All of the raise and all of the migrated tokens go into a single position covering the whole price range, so there is liquidity at every price from the first block.
  6. 6
    The position is locked
    The position NFT is minted to VectrLPLocker, a contract that has no function to transfer, reduce or burn it. The only thing it can do is collect the pool's trading fees.
  7. 7
    The curve closes
    From this transaction on, buy and sell on the curve revert. The token's page and address do not change; trades route through Uniswap's router, priced by its quoter.
Contracts

The two contracts that do it, on Robinhood Chain

VectrUniswapMigrator
0x384EEd2Ba540146FB09E4EE228B454091913F837 Wraps, creates the pool, corrects a griefed price, mints the position
VectrLPLocker
0xcf489e55a1167Cf883e0EE43D2354fdFc82b2B58 Holds every position. collect() only.
Fees

Before and after

On the curve
0.97% per trade0.30% to the creator, the rest to Vectr; charged on buys and sells
On Uniswap V3
1.00% pool feeAccrues to the locked position; swept to Vectr's platform wallets by collect()
Creator fees after graduation
Still claimableWhatever accrued on the curve stays in the FeeCollector until claimed
"Locked" here is a property of the code, not a promise: the locker has no function that can move the position. Check the verified source on the explorer rather than this sentence.
FAQ

Graduation questions

What triggers graduation?

Either the curve's real ETH balance reaching 4.2 ETH (about $11,632 today), or the curve selling all 800M of its tokens. Stock-Token pairs have their own thresholds, sized to a similar USD raise and published per asset by GET /config.

Where does the raised money go?

Into the Uniswap V3 position, together with the reserved 200M tokens. It does not go to the creator and it does not go to Vectr. The creator's income is the 0.30% fee on curve trades, accrued separately in the FeeCollector.

What happens to the reserved 200M?

It sits in the curve contract during the sale, untouchable, and becomes the token side of the Uniswap position at graduation. Without it the pool would have ETH but almost no tokens to sell, and the first buyer would move the price enormously.

Can the liquidity be removed later?

No. The position is owned by VectrLPLocker, whose compiled ABI has no transferFrom, approve, decreaseLiquidity or burn. A test in the public contracts repository reads the ABI and fails if any of those appears. The only function that moves value is collect(), which pays accrued pool fees to Vectr's platform wallets and cannot touch principal.

What changes for traders after graduation?

The venue and the fee. Before: 0.97% per trade on the curve, 0.30% of it to the creator. After: Uniswap V3's 1.00% pool fee, which accrues to the locked position and is swept to Vectr's platform wallets; the creator's curve fees remain claimable. Price now moves by Uniswap's concentrated-liquidity math over a full-range position, and anyone can add more liquidity beside the locked one.

Does the token keep its address and page?

Yes. The ERC-20 contract is untouched by graduation; only its trading venue changes. The Vectr token page switches its quotes and trades to the pool automatically.