Paid to the miners who stay.
Almost every fee-sharing design pays the holder who arrived this morning exactly what it pays the one who arrived three weeks ago. This one does not, and the whole protocol is that one difference.
A liquidity farm has a well-known failure mode. Rewards are split by size, so the rational move is to arrive the moment a reward lands, take a share of it, and leave. The capital that shows up is the capital that leaves fastest, and the holders who actually carried the thing get diluted by people who were there for ninety seconds.
The usual fix is a lockup. Lockups work, in the sense that they stop the behaviour, and they also make the position something you cannot get out of, which is a real cost paid by exactly the people you were trying to reward.
VRAM pays by how long you have held, not by how much you hold — and it never takes custody of your ability to leave.
Fees are paid in by hand
The vault has one inflow: someone calls fund() and pays trading
fees into it. There is no minting, no emission schedule, and no treasury that
quietly tops it up. Every deposit that has ever happened is a
FeesFunded event on chain, and the
ledger page lists them with the block, the epoch,
the amount and the sender.
This is worth being blunt about, because it cuts both ways. It means nothing is invented: what gets paid out is money that was genuinely paid in. It also means the vault pays nothing at all during a stretch where nobody funds it. There is no yield being promised here, only a split of whatever arrives.
Mining power climbs for 21 days
When you commit the token, your stake does not count for its full size straight away. It starts at 5% of its weight and climbs in a straight line to 100% over 21 days. Your share of any deposit is your weighted stake over the total weighted stake, so a position that has been held for three weeks takes a substantially larger cut of the same deposit than one opened this morning, even when the two are identical in size.
Four holders with the same stake and different ages, splitting one deposit:
- 19 days held — 52.3% of the deposit
- 11 days held — 31.5%
- 4 days held — 13.3%
- opened today — 2.9%
Withdrawing part of a position keeps the progress you have made on the remainder. Adding to it starts the climb again, because otherwise a large late deposit could ride in on the age of a small early one.
A deposit does not earn from the epoch it lands in
Time is cut into epochs of one hour. A deposit made inside an epoch does not earn from that epoch; it starts at the next boundary. That single rule closes the last-second window — you cannot watch a fee payment land, jump in behind it, and take a cut of it — without needing a lockup to do it. You can still leave whenever you want. You simply cannot arrive after the money.
One stake token, two camps
There are two vaults. They take the same stake token, run the same code and the same ramp, and differ in exactly one respect: one pays out in NVDA, the other in AMD. Both are Robinhood stock tokens on chain 4663, and you choose which one you are mining.
These are ERC-8056 tokens, which is a detail with a real consequence: the raw balance is frozen and a multiplier carries splits and corporate actions instead. The vault moves raw units and its arithmetic never touches the multiplier; the interface applies it so the figure you read matches the figure your wallet shows.
What the contract cannot do
- No owner and no pause. Nobody can stop it, upgrade it or drain it, including us.
- No lockup. A withdrawal returns exactly what was committed, whenever you ask.
- No exit fee and no penalty. Leaving costs gas and nothing else.
- No minting. The contract cannot create a single token.
- No discretion. The split is arithmetic on chain, not a decision someone makes.
There is a cap: a single position cannot exceed 2% of the token's supply, so one holder cannot take most of every deposit. Like the ramp and the epoch length, it is fixed in the constructor when the vault is deployed and cannot be changed afterwards by anyone.
Read it yourself
The vault is one contract, src/StakeVault.sol, and it is short
enough to read in a sitting. The simulator will
project what a position of a given size earns at a given funding rate, and
the ledger shows every deposit that has actually
been made. If you are going to commit anything, read the contract first
— and do that with every protocol, not just this one.