Crackle Measured
The sound a magnet makes is the shape of a yield curve.
Put a coil around a bar of iron and magnetise it slowly. The amplifier does not hum — it crackles, because the metal goes over in jumps four orders of magnitude apart in size. Barkhausen heard that in 1919. This is the same measurement, made on a chain.
RUN — CHAIN
The scan reads every Swap emitted by 10 Uniswap V3 pools over
86,400 consecutive blocks — 48 hours at
2.0 seconds a block — and computes the fee each swap paid from the
amounts and the price carried in the event itself. No oracle, no vendor price, no
dollar figure anywhere in the pipeline; every statistic below is a ratio, so the unit
cancels.
Two selection rules, both stated because both are choices. The pools are the busiest by swap
count across six samples spread through the window. Only pools whose factory()
is Uniswap V3’s are kept, because the identical Swap signature is emitted
by every fork of it — 3 different factories appeared among the
candidates, and nothing in a log says which.
- pools
- 10, all Uniswap V3 on Base
- swaps read
- 194,284
- window
- 86,400 blocks, 48 h
- endpoint
- base.drpc.org
- API key
- none, and there cannot be one
- candidates dropped
- 17, listed in
data/chain.json
The ruler
The same income, at twelve resolutions.
Nothing below changes except how wide a bucket you put the income into. At block resolution the median pool is empty 88.4% of the time; by the hour the median pool is never empty at all — while QUID/USDC 1.00% is still empty 73% of hours. All three are true. Only the first is what a depositor is exposed to, and only the second is what a rate is computed from.
Every pool in the scan
Shape, with scale beside it.
A ratio says nothing about how much money is involved, and “heavy tails are an artefact of dead pools” is a fair objection a ratio cannot answer. So the fee income is here too — the deepest pool earned 138,101 USDC over the window; the pool with the most swaps earned 589.65 USDC across 55,446 of them.
| Pool | Swaps | Fee income | Blocks paying nothing | Top 1% of blocks | Gini | Hold for ±10% |
|---|---|---|---|---|---|---|
| ETD/USDC 0.01% | 20,603 | 3.86 USDC | 76.2% | 7.1% | 0.817 | 0.6 h |
| SOSO/USDC 0.01% | 22,332 | 288.53 USDC | 87.6% | 11.3% | 0.895 | 1.3 h |
| WETH/USDC 0.01% | 55,446 | 589.65 USDC | 61.8% | 30.8% | 0.903 | 2.4 h |
| USDC/Basecat 0.30% | 14,679 | 5,425 USDC | 88.3% | 51.9% | 0.965 | 6.5 h |
| WETH/USDC 0.05% | 25,704 | 6,977 USDC | 81.2% | 55.3% | 0.971 | 10 h |
| WETH/cbBTC 0.05% | 8,417 | 0.14 cbBTC | 92.8% | 83.2% | 0.990 | 23 h |
| WETH/VVV 1.00% | 15,676 | 0.22 WETH | 90.1% | 84.5% | 0.987 | 89 h |
| WETH/USDC 0.30% | 16,493 | 138,101 USDC | 88.4% | 97.2% | 0.997 | 106 h |
| WETH/DEGEN 1.00% | 14,713 | 0.16 WETH | 91.1% | 79.4% | 0.983 | 130 h |
| QUID/USDC 1.00% | 221 | 3.00 USDC | 100.0% | 100.0% | 1.000 | 568 h |
| Sorted by holding time. Values in 48 h from block 50,578,875. A holding time in red is longer than the scan that measured it. | ||||||
The model Computed
Why a physicist would have expected this.
Alessandro, Beatrice, Bertotti and Montorsi described a domain wall driven against a restoring force and a pinning field that is Brownian in the wall’s own coordinate. The wall moves while the net force is positive and stops when it is not; the field is then raised by exactly the deficit and it repeats. The distance between two stops is one avalanche.
That model is worth having because it can be checked. During an avalanche the force is Brownian motion with drift, so an avalanche is an excursion above zero — a first-passage problem with a textbook answer and no free parameters:
ρ(S) ∝ S−3/2 e−S/Sc, Sc = 4D/k²
The simulation is not fitted to that. It is run, and the build fails if it misses. The freely fitted exponent comes out 1.5120 ± 0.0070 against the exact 3/2, and the whole law survives a Kolmogorov–Smirnov test with nothing estimated at all.
The same procedure, twice Measured
One of these numbers reproduced and one did not.
Run 35 minutes apart, over windows overlapping by 47.4 hours, with the same pool rule returning 8 of 10 the same pools.
| First run | Second run | Change | |
|---|---|---|---|
| median share of blocks paying nothing | 88.3% | 88.4% | ×1.00 |
| median share carried by the busiest 1% | 51.8% | 79.4% | ×1.53 |
| median hours to know the mean to ±10% | 9.7 | 22.6 | ×2.34 |
| the worst pool, in hours | 162 | 568 | ×3.51 |
That is the finding, applied to the instrument that found it.
The share of the clock that pays nothing is a property of arrival, measured across tens of thousands of blocks, and it comes back the same. The holding time is a property of the tail — set by the handful of blocks carrying most of the income — and forty-eight hours does not contain enough of those to pin it down. The number that moves is the number about rare events. Quote the shape; treat any single holding time as a floor with a window attached.
Re-run it Measured
On a window that did not exist when this page was written.
The panel below imports the same js/chain.js
and js/stats.js the published scan used, picks a pool, and reads Base from your
browser. If its numbers differ from the ones above, that is the finding: they are a property of a
window.