HOPPER

HOPPER

Depth is not availability.

A Draw turns a liquidity position into a plain ERC-20 you can trade, lend or post as collateral. The Chute fills orders without broadcasting them. And the Gate publishes the number the rest of this category leaves out: not how much is in the Bin, but how fast it can leave.

ERC-4626 accounting No lockup Nothing deployed
colour is speed
slow → fast
orifice 5.0 d · bin 22 dsettling…
0.14how the discharge rate depends on how full it is. A liquid is exactly 0.50 C2
32%of what is left in the bin has never moved, when half of it has gone C2
4.5grain widths — below this the exit stops at random, with the bin full C2
1.20%of its own supply moved by the median Base token in 30 minutes C1
§1
The problem

A level is not a rate

A liquidity position earns fees and sits still. Everything you might want to do with that capital means closing it first — and every product that fixes this answers the question can I get out with a number that cannot answer it.

Before

A position you can only sit on

  • The position is bound to one pool and one range.
  • Moving it or selling it means unwinding it first.
  • Nothing else on chain knows what it is worth.
  • Fees pile up inside the position instead of becoming an asset.
After

A Draw that keeps earning

  • Deposit once, hold a fungible ERC-20 any wallet understands.
  • Send it, sell it, or post it as collateral without touching the pool.
  • Harvested fees raise the share price, so yield follows the token.
  • Redeem for the underlying at the on-chain price, at any block.

And the last of those four is where every site in this category stops. "Redeem at any block" is a statement about one holder. The figure printed beside it — total value locked — is a statement about all of them, and the two are not the same promise. This site is mostly about the difference.

§2
The measurement

How much is in it does not set how fast it comes out

A silo is the cleanest demonstration there is, because the independence is not rhetorical. Beverloo's law — the standard description of granular discharge — contains no term for the height of material above the orifice.

So it was measured. A bin 20 grain diameters wide was filled to 51 diameters, the gate opened, and the rate recorded in 16 slices as it drained. The head fell by a factor of ×7.9. The rate fell by 39.5%. Water through the same hole, obeying Torricelli, would have fallen by 64.5%.

Discharge rate against headγ = 0.14 measured · 0.50 for a liquid
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
Each point is a window of the same drain. The fitted exponent is 0.14 ± 0.036; for an ideal liquid it is exactly one half, and the shaded band at the left is where there is no head left to be independent of. The rate is not perfectly indifferent to the level — the exponent is small, positive, and its own standard error excludes zero. It is roughly a quarter of a liquid's, which is the claim this site makes and the only one the measurement supports. C2

That is the whole argument in one chart, and it has an exact translation. Depth is a stock. Redemption is a rate. A protocol that answers the second question with the first is not lying — it is answering a different question, and the number it gives you gets larger as the answer to yours gets worse.

§3
Three rails

A bin, a claim on it, and a way out

Bin

Where the asset sits

Deposit a pool asset into a Bin and receive a Draw representing your slice. Fee income harvested in raises what every Draw redeems for.

  • ERC-4626 accounting, verifiable on chain
  • Assets in storage, not read off the balance
  • Protocol cut capped by a constant, not a promise
Gate

The only thing that sets the rate

Every quantity that governs how fast the Bin can pay lives at the exit, and none of them is the size of the Bin. This is the rail nobody else names.

  • Redeem at any block — no queue, no epoch
  • Throughput published as a rate, not a level not built
  • Measured against a model, not asserted
Chute

Where the order goes

Orders expressed as intents and filled by solvers, so a trade is not sitting in a public mempool being read. not built

  • Intent routing rather than a raw swap call
  • Liquidity aggregated across venues
  • Gas payable in the traded asset
§4
From deposit to Draw

Four calls, one path

Every step is a call you can read on an explorer — once there is something to read. Today the path exists as compiled bytecode whose properties the build executes on an EVM, and as nothing else.

01

Deposit

You send the pool asset to the Bin. It is accounted explicitly, so a stray transfer cannot move the share price.

02

Mint

The Bin mints Draws at the current price. The first deposit is one to one; later ones pay what the Draws are already worth.

03

Harvest

Collected swap fees are pushed into the Bin. The protocol cut goes to the treasury, the rest raises every Draw at once.

04

Redeem

Burn Draws, take the underlying at the current price. No lockup and no epoch — and see §2 for what that does and does not mean.

§5
The failure nobody names

An exit can stop while the bin is full

Grains at an orifice can lock into a self-supporting arch. Flow stops. Nothing has broken, nothing is empty, and nothing about the amount inside changes it.

Below about 4.5 grain widths this is not rare, it is expected: at 2.5 grain widths, 8 of twelve runs arched and never recovered. Above it, in twelve runs each, it did not happen once.

Runs that arched and stoppedbin kept full, so a stop is an arch and never an empty bin
0%25%50%75%100%2.53.03.54.04.55.06.0orifice width, in grain diameters (D/d)runs that arched and stopped8/127/124/124/120/120/120/12
The transition is sharp and it is a property of a RATIO — the orifice against the grain — not of the quantity stored. A bin ten times larger with the same gate has exactly the same failure. C2
§6
What the contract guarantees

Four properties, each executed rather than claimed

Every one of these is run against compiled bytecode on an EVM by the build, and the build then breaks the contract four ways to confirm the suite notices.

A first depositor cannot round the next one to zero

The classic ERC-4626 inflation attack: deposit one wei, donate a large balance, and the second depositor's shares round down to nothing. Virtual shares and virtual assets shift the arithmetic so the attacker pays more than the victim loses.

A donation does not reprice anybody

Assets are tracked in storage, not read off the token balance. Sending tokens to the Bin makes them the Bin's and changes no share price, which is what stops the price being a function of who transferred what to it last.

The protocol cut is capped in code

The cut taken from harvested fees cannot be raised above the hard cap by the owner or by anybody else, because the cap is a constant and the setter reverts above it. A cap in a comment is not a cap.

The owner cannot take the backing

The sweep function can only move assets in excess of what holders are owed. It computes that excess from the same storage figure the share price is computed from, so it cannot be tricked into considering principal to be surplus.

The properties hold against the code in this repository, and that code is deployed on Base Sepolia — a test network, where the ether is free and the token has a public mint. It is not deployed on any network where money is real, and nobody has audited it. Ullage says which parts of this site are running, which are compiled, and which are a sentence.

§7
FAQ

The short answers

What is a Draw?

An ERC-20 that represents a claim on a Bin holding one pool asset. One Draw is worth totalAssets / totalSupply of the underlying, and that figure rises as fee income is harvested in. It is an ordinary token, so a wallet, a DEX or a lending market can handle it with no special support. It is a claim on the Bin; it is not the material in the Bin.

If the share price only goes up, how can I lose money?

Three ways, and the first is the one nobody prints. (1) The share price is a level and getting out is a rate: the price at which you can redeem at leisure is not the price at which everyone can redeem at once. (2) The underlying pool can lose value, and a rising number of underlying units per Draw is not a rising value per Draw. (3) Nothing here is deployed or audited; see Ullage, which lists what exists.

Why is a silo on the front page of a DeFi site?

Because the question "can I get my money out" has an exact answer in a silo and a vague one everywhere else. A silo's discharge rate does not contain a term for how much is in the silo — you can measure that, and this site does. The analogy is not decoration: the same distinction between a stock and a rate is what a TVL figure hides.

Is the silo on this page a video?

No. It is a discrete element solver integrating in your tab — the same file, imported by the same module, that produces every figure on Method. It takes 26 physics steps per animation frame at a fixed timestep, so a throttled tab runs the silo more slowly rather than less accurately, and a paused one is paused rather than skipped forward. Scroll it out of view and it stops entirely.