HOPPER
§2 · Gate

The Gate

Every quantity that decides how fast a Bin can pay lives at the exit. None of them is the size of the Bin. This page measures that twice — once in a silo and once on Base — because it is the claim the category is built on top of and nobody publishes a number for it.

colour is speed
slow → fast
orifice 4.5 d · bin 22 dsettling…
§2.1

The law has no term for how full it is

Beverloo's law describes granular discharge as W = C·φ·√g·(D − k·d)^β. Read the right-hand side: an orifice, a grain size, a packing fraction, gravity. There is no h. The height of material above the hole is not in it, and that is not an approximation that holds for tall silos — it is the structure of the law.

Why: the material above the orifice does not press down on it. Wall friction carries the weight sideways, so the stress at the base saturates a few widths down and stops growing no matter how much is added. What leaves is only what the free-fall region just above the hole can deliver, and that region scales with the hole, not with the pile.

That mechanism is Janssen's, from 1895, and this site does not get to borrow it. So it is measured: a sealed bin 10 grain diameters wide, filled to eight different depths, with the load on the floor recorded at each.

The first attempt found no saturation at all, and the reason is worth more than the result. The walls carried 8% of the weight at the deepest fill — while the lateral load on them was enough to carry 173%. The capacity was there and it was not being used, because static friction is a spring: it resists only after something has slid. A bed that materialised in place and settled has never moved past its walls, so nothing was ever loaded. Janssen's law assumes a silo that was filled, with the column sliding down as it built. Lowering the base by 0.6 of a grain diameter reproduces that under load — which is how the effect is shown in a laboratory, with a piston — and the saturation appears.

What is in the bin, and what the floor feelssealed bin, 10 d wide
015030045048142028364658fill height above the floor, in grain diametersforce, in weights of one grainweight standing in the binwhat the floor feels
load on the floorweight standing in the bin
From the shallowest fill to the deepest, the weight in the bin grew ×14.8 and the load on the floor grew ×6.2. At the deepest fill 59% of the weight never reaches the floor at all — the walls are holding it. An exponential saturation fits with a length of 23.7 grain diameters (R² 0.994), which implies a stress ratio K of 0.42 through Janssen's λ = W/(2μK) — a value the literature would recognise, and one this site did not put in. C2

This is the whole argument in a single reading. Add more and the bottom does not feel it. Everything downstream — the rate, the queue, the answer to "can I get out" — is being set by a region a few grain widths across, and the figure everyone prints is the grey line.

Discharge rate against heada full drain, in 16 windows
036901020304050head above the orifice, in grain diametersgrains out per √(d/g)if it were a liquid — √hmeasured — h^0.14no head left
measured, fittedTorricelli, √h
Head fell from 51 to 6.5 grain diameters, a factor of ×7.9. Fitted exponent 0.14 ± 0.036 against a liquid's exactly one half. Cutting the start-up transient differently moves it to 0.17 — the two windows agree, which is checked, because three sites in this family have published a number that turned out to be a property of the window it was measured in. C2
§2.2

The same question, on Base

If a stock does not determine a rate in a silo, does it on a chain? The scan reads every block receipt in a window, aggregates every ERC-20 transfer it finds, and divides each token's volume by its own total supply.

Nothing about the sample is asserted. There is no list of interesting tokens anywhere in this repository: the tokens measured are the tokens that moved, discovered from the receipts, and their symbols are read from the contracts rather than supplied. In 900 blocks — 30 minutes — 245,939 transfers were seen across 1,904 contracts, of which the 148 most active were priced.

Share of its own supply each token movedlog scale · 30 minutes of Base
0.0001%0.001%0.01%0.1%1%10%100%1000%each of the 142 tokens priced, least active firstshare of its own supply that movedmedian 1.21%
The median token moved 1.20% of itself; the busiest moved 1827%. Five orders of magnitude separate them. 68 of the priced tokens moved under one per cent of their supply in the whole window — and this sample is the BUSIEST 148 contracts of 1,904 that moved at all, so the real median across everything is lower than the one printed here, not higher. C1
Turnover against sizethe regression with content
-6-4-3-1127131823log₁₀ total supply (base units, ÷10⁹)log₁₀ turnoverslope -0.050, R² 0.027size explains 3% of the variance in turnover
Slope -0.050, R² 0.027: how large a token is explains almost none of how much of it moves. This is Beverloo's statement in the other medium — the pile does not enter the rate. C1

The obvious version of that regression is an artefact, and it was in the first scan before it was caught. Regressing log volume on log supply returns slope 0.982 with R² 0.896 — which reads as a strong law and is very largely arithmetic. Both quantities are in the token's own base units, so both carry its decimals, and the regression partly recovers that column. Worse: since log(volume) = log(turnover) + log(supply), a slope of exactly 1 is what you get when turnover is independent of size. The impressive result was the null hypothesis wearing a hat. Turnover is dimensionless and has the supply already divided out, which is why it is the one plotted above.

§2.3

Read it yourself

The panel below runs the same module, in your browser, against a block mined after this page was built. No API key, no proxy and no server of ours in the path — the node answers the browser's preflight with a wildcard, so the page can ask it directly.

idle

A window of forty blocks is about eighty seconds and will not reproduce the published figures — it is a different window, and a smaller one. That is the point of running it: if the number came back identical, it would not be a measurement.

§2.4

Freeboard not built

Silo codes require freeboard: a bin filled to its rim has nowhere to put a surge. Here it means the distance between what the protocol says it can pay and what it can actually pay — and unlike a buffer, it is meant to be published rather than held.

That is the number this site spends nine documents saying the category is missing. It is also a number this site does not have. Freeboard on a Bin with no depositors is not a measurement of anything, and a figure computed from a silo is an analogy rather than a reading. What would make it real is on the roadmap, and until then this section is a name with nothing behind it, which is the honest state and is listed as such in Ullage.

It would be easy to print one anyway. Take the silo's discharge rate, scale it by some notional grain size, and publish a number in tokens per block with a footnote. It would be defensible, it would look like every other figure in this category, and it would be exactly the thing this site was built to object to.