What it is
Vanemere is one immutable contract with no owner. $VANE is launched on Pons (Robinhood Chain, chain id 4663) with a 2% creator tax. The contract is the creator-fee recipient, so it receives those fees directly. It splits them 5% into a pot, 5% into a buy and burn of $VANE, and 90% to the creator wallet. Holders lock $VANE and vote for a candidate pool; the pot then streams into the winning pool through Uniswap v4's own donate(), which pays the liquidity providers who are in range at that moment.
The honest scale matters: the pot is 5% of what Pons pays the creator (the 2% tax plus 70% of Pons's 1% trading fee, about 2.7% of volume), so it is small. The product is the mechanism you can check: a vote, a donate() transaction, in-range liquidity providers who receive it.
How an epoch works
An epoch is 7 days. Epoch 0 runs from deploy to launch. Epoch 1 starts at 23 Oct 2026 13:00 UTC (T0 = 1792760400). This week's votes decide where next week's pot streams: votes cast in epoch N are settled when it ends, and the winner's stream runs through epoch N+1.
seedPot()) streams into it, so a real donate() lands before launch.settle() counts epoch 1's votes; the winning pool gets the pot as a 7-day stream. This is the first vote-driven payout. Epoch 2's votes decide epoch 3.- Lock
lock(amount): your $VANE moves into the contract. Locking while you have voted adds the weight to your voted pool. - Vote
vote(poolIndex): one pool per wallet, your whole locked balance counts, the last write wins. Voting opens when epoch 1 starts. - Unlock
unlock(amount): blocked while you have voted in the current epoch, open the epoch after. The same tokens can never vote twice in one epoch. - Settle
settle(): after an epoch ends, the pool with the most votes wins (ties go to the pool added first). No votes: the pot carries over. - Stream
drip(): the winner's budget accrues linearly over 7 days and is donated whenever at least 0.0001 ETH is due, and once more at the end.
If a donate fails (for example the pool has no liquidity in range), the drip emits DripFailed instead of reverting, nothing is lost, and the un-dripped remainder rolls into the next epoch's pot. /proof shows these as warning rows.
Exact split 5/5/90, and why the pot is small
Every wei that reaches the contract as a creator fee is split once by harvest(): 500 bps to the pot, 500 bps to the burn ledger, the remaining 9,000 bps to the creator wallet. The split is fixed at deploy.
| Worked example | ETH |
|---|---|
| Trading volume on the Pons pair | 20 |
| Creator fees from Pons (2% tax + 0.7% fee share ≈ 2.7%) | 0.54 |
| Pot (5%) | 0.027 (about $66 at ETH $2,449) |
| Buy and burn (5%) | 0.027 |
| Creator wallet (90%) | 0.486 |
So at 20 ETH of volume the pot is about 0.027 ETH per week. We say so because you can check it. Plain ETH transfers to the contract count as creator fees (they are split 5/5/90 too). To add to the pot directly, call seedPot().
donate() and what "in range" means
Uniswap v4's PoolManager.donate() adds an amount to a pool's fee growth, and the liquidity positions that are in range at that moment receive it in proportion to their liquidity. Positions out of range receive nothing. The contract donates ETH only (donate(key, amount, 0)), which is why candidates must have native ETH as currency0.
Hook-managed pools (for example a pool whose liquidity sits in a hook's own position): the donation credits the hook's position, and the hook's own accounting passes it on. The Pons meme hook has no donate guard, so donations work on graduated Pons pools. A hook that blocks donations would make drips fail and roll over.
The "$1,000 position would get about $X" number on the site is an estimate: pot in USD × 1000 / (in-range USD + 1000), using liquidity within ±1% of the current price and the Chainlink ETH/USD price. It is an illustration, not a forecast; the pot is 5% of the Pons creator fees (about 2.7% of volume).
JIT liquidity and who may drip
A donate can be farmed by a liquidity bot that adds a large position, triggers the donate and removes the position in the same transaction. Our pre-deploy review proved it on a mainnet fork: a bot that could call drip() itself took about 80% of a drip. So Vanemere does two things. The winner's budget accrues linearly over 7 days and is paid in small drips, and drip() can only be called by our bot wallet, at times outsiders do not control. If our bot is silent for 6 hours, anyone can call drip(), so the stream can never get stuck. The bot can only time the drip; it cannot move funds or change the winner. This narrows JIT capture; it does not make it impossible, and the pot is small by design. donate() only reaches positions in range at that moment; on hook-managed pools the donation credits the hook's position and the hook's own accounting passes it on.
Who calls what
harvest(), settle() and burn(minOut) are public: our bot calls them on a schedule, and you can call them yourself from /vote (the "Run it yourself" box) or any explorer. drip() is reserved for our bot wallet (an address fixed at deploy) unless the last drip is more than 6 hours old; then anyone can call it. Nothing can get stuck. The deployer can call bind(token) once to attach $VANE after launch. There is no owner and no upgrade, and neither the bot nor the deployer can move funds.
| Function | Who | Effect |
|---|---|---|
| harvest() | anyone | Pulls Pons fees in, splits them 5/5/90. |
| settle() | anyone | After an epoch ends: picks the winner, starts its 7-day stream. |
| drip() | our bot (anyone after 6 h of silence) | Donates what has accrued into the winning pool. |
| burn(minOut) | anyone | Buys and burns $VANE with the burn ledger. |
| withdrawCreator() | anyone | Pays the 90% to the immutable creator address (only there). |
| seedPot() | anyone | Adds ETH straight to the pot (to the running stream during epoch 0). |
| lock / unlock / vote / addPool | holders | See above and the candidate rules. |
| bind(token) | deployer, once | Attaches $VANE after launch. Checked against Pons: the token must pay its creator fee to this contract. |
Burn
The burn ledger (5% of creator fees) is spent by burn(minOut): at most 0.005 ETH per call and one call per hour. While the token is still on the Pons bonding curve it buys from the curve and the tokens land in the dead address; after graduation it swaps on the Pons Uniswap v4 pool and sends the tokens to the dead address. The caller supplies minOut, the smallest amount of $VANE accepted, so a bad price reverts. If the curve clamps a buy near graduation, only the ETH actually spent leaves the ledger. While the token is between phases (swept or rescued) the burn waits and the ETH stays ledgered. If the token never graduates, burning still works on the curve.
Until the first harvest and burn have happened, the burned total reads 0.
Candidate rules
- Native ETH only: a candidate's
currency0must be native ETH (address 0x0). USDG-side pools are planned for v1.1, not built. - 1,000,000 $VANE locked by the caller and a 0.02 ETH fee that goes straight into the pot, to add a pool: anti-spam without an admin. Candidates are capped at 64.
- The pool must already be initialized on Uniswap v4. No duplicates.
- 64 candidates at most, and a candidate is never removed. Immutability over tidiness.
- Ties at settle go to the lowest pool index (added first).
Add one on /pools.
Trust assumptions
- Pons: the Pons owner can re-point a token's creator-fee recipient after a 3-day public timelock. If it were moved, fees would stop reaching the contract.
- Uniswap v4: the PoolManager owner can set protocol fees. The hook on a candidate pool is code you should read before voting for it.
- Unaudited contract. It is small and public, has no owner and no proxy, and is verified on Sourcify, but nobody independent has audited it.
- The deployer can only call
bind(token)once. The creator wallet is immutable and receives only its 90%. - USD labels use Chainlink ETH/USD on the server. The contract does not read it.
Addresses
Robinhood Chain mainnet, chain id 4663. Read from contracts.json and token.json.
| What | Address | Links |
|---|---|---|
ABI
Function and event signatures of the Vanemere contract.
Planned, not built
Nothing in this block is live, and nothing on the site depends on it.
- v1.1: USDG-side pools (for example stock / USDG pools), which need an ETH to USDG conversion inside the drip and a price bound.
- S2: our own Uniswap v4 pools whose fee is set on-chain by the NYSE clock and a Chainlink deviation check, with no keeper.
Disclaimer
Unaudited. Not financial advice. The pot is whatever Pons creator fees actually filled, and may be zero. Estimates on the site are estimates. $VANE is a token with no promise of value. Not affiliated with Robinhood Markets, Inc., Pons or Uniswap Labs. Official contract address: only on this site and on @vanemerexyz.