vellus
market cap -
appendix
a. why the square.

a linear release, y = 1 − G, pays concentrated markets too well: at G of 0.5 it still releases half the pool. squaring makes the penalty convex, so the last stretch of concentration is the most expensive stretch, which is the stretch whales actually live in.

y(0.2) = 0.64        y(0.5) = 0.25        y(0.85) = 0.0225
b. the histogram is exact, not sampled.

G is computed from 64 log2 buckets of the full balance distribution, updated transactionally with every transfer. the error versus a per-wallet gini is bounded by bucket width and is under 0.011 in the worst case. nothing off chain is consulted, ever.

c. sybil resistance is arithmetic, not policy.

a gini coefficient is invariant to relabeling and nearly invariant to splitting one balance into many dust balances, because the lorenz curve barely moves. spreading a whale position across ten thousand wallets that each hold dust leaves the mass of the distribution where it was. the only way to lower G is to actually give the tokens away.

d. follicle dynamics.

with fee inflow f per breath and release rate y, the pool converges toward the fixed point P* = f · (1 − y) / y. even markets hold a small pool and high flow; concentrated markets hold an enormous pool and a trickle. the table is exact:

Gy(G)steady pool (breaths of fees)% of fees flowing
0.100.81000.2381.00%
0.200.64000.5664.00%
0.300.49001.0449.00%
0.400.36001.7836.00%
0.500.25003.0025.00%
0.600.16005.2516.00%
0.700.090010.119.00%
0.800.040024.004.00%
0.900.010099.001.00%
e. what groom() cannot do.

a groomer triggers the release; they do not choose its size, its recipients, or its timing beyond the breath boundary. front-running a groom is possible and pointless, both calls compute identical releases and the second reverts. grooming a breath twice is impossible, the boundary check is against the last groomed breath, not the clock alone.

f. known limits.

balances inside omnibus accounts read as one holder and raise G accordingly, which means exchanges holding large float actively suppress everyone's yield, including their own users'. we consider this a feature with unusually good manners: vellus pays you to withdraw.

COAT SPREADING · MAINNET-BETA · TOKEN-2022
y = (1−G)²