Varve

Reward the people
who actually held.

Attach a token and Varve measures who holds it over time, not who holds it at the instant somebody takes a snapshot. Your weight is the area under your balance curve — every token multiplied by every second you actually held it.

Every reading states the window it covered and how much of the supply it could see.

$VARVE contract address
EfVtZmoxBuNPFaHRJ94D2d2sVDApgDRwARxHbKg3pump

Published in exactly two places — varve.lat and @Varvefun. Not a reply, not a DM, not a screenshot. Match the address character by character, never the ticker.

Attach a token

Connect a wallet to attach a token — you will sign a message, not a transaction.

The epoch begins at attachment. Somebody who has held for a year, on a token attached today, has one day of recorded weight — there is no way around that and we do not imply one.

Projects
reading…
01What weight is

An area, not a balance.

A snapshot asks one question at one moment, and anything bought an hour earlier answers it exactly as well as something held for a year. So this does not ask at a moment — it integrates.

weight = Σ balance × (t₍ᵢ₊₁₎ − tᵢ)

Twice the balance for half the time is worth exactly the same. That equivalence is the property everything else rests on, and it is why there is nothing to game: the only way to have more area is to actually hold more, for longer.

Over a thirty-day epoch
1,000 held throughout30,000.00 token-days
2,000 held for half of it30,000.00 token-days
30,000 bought on the last day30,000.00 token-days

The first two are identical to the digit — 2,592,000,000 against 2,592,000,000. The third holds thirty times as much and lands with the same area as a single day, because that is all it held.

02The part nobody publishes

Dropping dust changes who gets paid.

A claim costs rent for a token account — about 0.00203928 SOL. A share worth less than that costs more to take than it is worth, so it is not paid. It is dropped, and the pot is divided again among the rest.

And the order you drop in changes the answer. Removing everyone below the floor at once looks obvious and is wrong: the moment the smallest holders leave, the pot spreads further, and some of those swept out alongside them would have cleared the floor comfortably. They were removed for standing next to somebody smaller.

Dropping one at a time cannot do that. Removing a single holder can only raise everybody else, so nobody who clears the floor is ever removed — it is the maximal payable set, and it costs at most one pass per holder.

Drop them all at once
1 paid
holder 130
holder 2dropped
holder 3dropped
holder 4dropped
holder 5dropped
✗ not maximal — it dropped somebody who qualified
Drop one at a time
2 paid
holder 117
holder 213
holder 3dropped
holder 4dropped
holder 5dropped
✓ maximal — nobody dropped could have been paid

⚠ A pot of 30 against a floor of 10, across five holders. Both answers conserve, both pay only above the floor, and both look perfectly reasonable on their own. They pay a different number of people, and only one of them can defend its answer.

Run it on live weights →
03What it cannot see

A measurement that hides its limits is a claim.

The epoch starts at attachment

Somebody who has held for a year, on a token attached yesterday, has one day of recorded weight. There is no way around this and we do not imply one.

Weights come from samples

Balances are read at a fixed interval, not from every transfer. A balance that rises and falls entirely between two readings is never seen.

Twenty accounts, not all of them

The chain returns the twenty largest holders. Coverage against real supply is published with every sample rather than assumed.

The interval you were absent from pays nothing

The balance at the start of an interval earns it. Appearing halfway through earns from the next reading, not this one.

⚠ Every one of these is served at /api/live under limits, not buried in a document. A number whose provenance you cannot check is not evidence.

04The column, as it stands

One band per closed interval.

Each band is a span of real time between two readings. Its thickness is how long that span was; its colour is how densely the token was held across it. The newest reading has no band — an interval needs two, and drawing one for a span that has not finished would be drawing time that has not happened.

If the service cannot be reached there is no core. It says so rather than drawing invented layers — a core sample is a claim about what was there, and inventing one would be the single most dishonest thing on this page.

reading the core…
a live core of BONK