2026.11.05 · 10 min read

PropAMMs Got the Price Right. They Ran Out of Inventory.

What the October 29 Binance drain reveals about inventory risk, pricing mechanisms, and liquidity provision in PropAMMs.

On 29 October, the attacker behind the Binance drain converted 405M USDT into ETH on Ethereum over 35 minutes, beginning at 20:34 UTC. The concentrated buying pushed the onchain price of ETH more than 20% above Binance. This analysis examines how nine Ethereum PropAMMs responded, how much of their activity passed through the PropAMM router, and how Uniswap v3, Uniswap v4, and other venues priced the same flow.

The central finding: The PropAMMs priced the trades correctly, but their inventory was exhausted almost immediately. In the first two minutes, they sold 1,333.5 ETH at approximately the Binance price. Thirty-eight addresses bought that ETH, and most resold it into Uniswap in the same transaction at prices about 3% higher. Across the night, PropAMM trades had approximately zero five-minute markout against Binance. The cost was not mispricing; it was spending 5.6 to 11.7 hours without ETH to sell.

Timeline (UTC)

TimeWhat happened
29 Oct 20:30The seven PropAMM vaults hold about 1,490 ETH, Metric's ETH in Uniswap v4 aside
20:34The attacker's first swap lands; the PropAMM sell-out begins
20:36Sell-out over: 1,333.5 ETH sold to 38 addresses. Uniswap trades more than 10% above Binance
21:01Tether freezes the attacker's collector address
21:09The attacker's last ETH purchase. Uniswap v3's main ETH/USDC pool peaks about 21% above Binance
21:23The Uniswap premium falls below 10%
21:37Uniswap is back within 1% of Binance
21:44Metric sells ETH again
30 Oct 02:07Goliath is the first vault back above 5 ETH
08:15Kipseli is the last vault back above 5 ETH, two minutes after Fermi

The first two minutes

The attacker's first swap landed at 20:34. By 20:36, the PropAMMs had sold 1,333.5 ETH to 38 addresses at the Binance price. Fermi alone sold 1,009 ETH. None of these initial trades went through the PropAMM router.

The buyers were arbitrageurs. In 39 of the 43 transactions, a buyer took ETH from a PropAMM at the Binance price and sold it directly into a Uniswap v3 or v4 pool, where ETH was already trading about 3% higher. Those transactions moved 1,195 ETH and generated approximately $67k before gas and builder payments. The ETH ended up in the pools from which the attacker was buying.

Scatter chart of ETH prices from 20:33 to 20:38 UTC. The Binance price stays near 2,300 USD. PropAMM fills, drawn as blue circles sized by ETH, sit on the Binance line, with the largest at 20:34. Uniswap v3 and v4 trades climb from 2,300 to above 2,550 USD by 20:36.
Seven small charts of the ETH held by each PropAMM vault from 17:50 UTC on 29 October to 10:00 UTC on 30 October. Every vault drops to near zero at 20:34 UTC. Fermi falls from about 1,190 ETH to zero and refills only after 08:00; the others refill between about 02:00 and 08:00.
VenueETH at 20:30ETH at 20:37Back above 5 ETH (30 Oct, UTC)Hours without ETH
Fermi1,191.60.008:1311.7
Kipseli78.30.008:1511.7
Tempest93.00.004:117.6
Stelaxis58.40.503:547.3
ElZorro4.60.103:517.3
Bebop and TaurusFi (one vault)43.11.002:195.8
Goliath24.80.102:075.6

All PropAMM volume, and the share routed

Most PropAMM volume does not pass through the PropAMM router. Solvers such as CoW Protocol, aggregators, and arbitrage bots can call the venues directly. We therefore measured every fill across every route, then isolated the subset that passed through the router.

From 20:00 on 29 October to 10:00 on 30 October, the nine PropAMMs executed 3,489 ETH trades worth $40.1M. The router carried 183 trades worth $2.99M, or 7.5% of total volume. The two-minute sell-out included no router trades.

The router's quiet hours were not caused by a routing problem. From 21:00 to midnight, the PropAMMs executed only about $0.2M of ETH volume across all routes because they had no ETH left to sell. Volume returned as the vaults refilled, both through the router and through direct calls.

Stacked bar chart of PropAMM ETH volume per hour from 20:00 UTC on 29 October to 10:00 UTC on 30 October. The 20:00 hour has about 6.7M USD, then volume falls to near zero from 21:00 to midnight and returns to 1.4M to 4.8M USD an hour from 00:00. The router share is a thin slice of each bar.

Compared with a normal week, the router went from about 20 trades an hour to none in the 21:00 hour, and stayed well below normal until the vaults refilled after 03:00.

Bar chart of PropAMM router trades per hour from 20:00 to 06:00 UTC. The previous seven days average 17 to 27 trades an hour. On 29 to 30 October the router made 24 trades at 20:00, none at 21:00, 6 at 22:00, 2 at 23:00, then 12, 7 and 6, and was back at 22 to 28 from 03:00.
VenueTradesVolume ($M)Router tradesRouter volume ($M)Net ETH sold5-min markout ($k)
Metric1,25619.56551.5419.0+0.4
Fermi5537.71210.311,235.9-2.4
TaurusFi4164.39200.42116.1+2.7
Goliath5354.32700.5717.6-0.3
Stelaxis3311.39100.0583.4+0.7
Tempest1480.9960.0979.1-0.4
Kipseli600.8500.0084.9-0.4
Bebop910.6000.00-60.6-0.1
ElZorro990.2710.004.6+0.1
Total3,48940.091832.991,580.0+0.2

What happened on Uniswap v4 and other venues

The attacker's buying was routed through liquidity pools. On 29 October, Uniswap v3 traded $1.25B of ETH against USDC and USDT on Ethereum, compared with approximately $130M on an average day during the previous week. Uniswap v4 traded $425M, compared with approximately $23M.

From 20:34 to 21:10 UTC, while the attacker was buying, every pool-based venue sold ETH at a substantial premium to Binance:

VenueVolume ($M)ETH soldAvg. premium over BinanceLP markout 20:34–21:10 ($M)LP markout full night ($M)
Uniswap v3515.537,383+16.6%+11.09+2.44
Uniswap v4228.617,025+16.2%+5.90+1.11
Uniswap v214.0741+18.0%+0.27+0.13
Fluid10.11,108+12.3%+0.27+0.03
Curve7.1718+22.0%+0.29+0.13
Native (RFQ)3.91,697+0.1%-0.01+0.03
Chart of ETH prices from 20:30 to 22:30 UTC. Binance stays between 2,240 and 2,300 USD. Trades in the Uniswap v3 ETH/USDC 0.05% pool jump from 2,300 to about 2,600 USD at 20:35, reach about 2,750 USD around 20:50 and 21:09, and fall back to Binance by about 21:40. PropAMM fills stay on the Binance line.

Uniswap v3 and v4 moved together. Both traded more than 10% above Binance from approximately 20:36 to 21:23, then returned to within 1% by 21:37. Uniswap v3's main ETH/USDC pool (0.05% fee) peaked about 21% above Binance at 21:09, the minute of the attacker's final purchase. The largest individual pool was Uniswap v3's WETH/USDT 0.3% pool: it sold 21,671 ETH during those 36 minutes at an average premium of 18.9% over Binance.

Line chart of the premium over Binance from 20:25 to 22:00 UTC. Uniswap v3 and v4 lines rise from 0% at 20:34 to above 20% by 20:45, peak near 28% at 20:49 and 36% at 21:09, and fall back near 0% by 21:37. PropAMM fills, shown as dots, stay on the 0% line.

The other side of the attacker's trades was the pools' liquidity providers. Measured against Binance five minutes later, LPs earned $11.1M on Uniswap v3 and $5.9M on Uniswap v4 during those 36 minutes. Over the full night, those figures fell to $2.4M and $1.1M. As the premium closed, arbitrageurs sold ETH back into the pools at prices above Binance, and the pools bought it.

What this means for PropAMM design

Venues that quoted from an exchange price behaved more like the PropAMMs. Native, an RFQ venue, and Metric, a PropAMM implemented as a Uniswap v4 hook, filled at approximately the Binance price throughout the night.

Inventory, not pricing, was the exposure

The PropAMMs priced the night correctly and still sold out in two minutes. A venue's size determines how much it can sell during a dislocation; inventory determines how long it can remain active afterward. Fermi held 1,190 ETH at 20:30 and none at 20:37. It took 11.7 hours to return above 5 ETH.

Following Binance alone can hand the onchain premium to arbitrageurs

When the onchain price moves several percentage points away from the exchange price, a quote anchored to Binance becomes the cheapest ETH available onchain. In this event, arbitrageurs bought that ETH and resold it into pools in the same transaction. A quote that also accounts for pool prices, widening when pools move away from the exchange, could have preserved inventory for the hours when ETH was scarce.

The router is a small part of the order flow

The router carried 7.5% of PropAMM volume that night and none of the initial sell-out. Much of the flow that tests these venues comes from solvers, aggregators, and arbitrage bots calling them directly. Any inventory or pricing protection therefore needs to be implemented in the venue's own quotes, not only in the router.

Passive liquidity captured the dislocation, then gave most of it back

Uniswap liquidity providers sold to the forced buyer at a substantial premium, averaging 16% on v3 and v4. As the gap closed, arbitrageurs sold ETH back into the pools at prices still above the exchange price, and the pools bought it. By morning, approximately 80% of the LPs' early markout gains had disappeared.


Sources and method

  • Venues. The nine PropAMMs listed in lambdaclass/propamm-router-contracts. Router address: 0x4ddf368080cd7946db5b459ad591c350158175e1.
  • Fills. Every WETH, ETH, USDC, and USDT transfer into or out of each venue's vault, using Ethereum transfers and traces on Dune, from 29 October 17:00 to 30 October 10:00 UTC. A fill is a transaction in which the vault swaps ETH against a stablecoin. Metric's trades are taken from Dune's dex.trades. A fill counts as a router fill when its transaction calls the router.
  • Inventories. WETH plus native ETH in each vault, read onchain at block 26,299,997 and reconstructed block by block from that night's flows. "Back above 5 ETH" is the first time a vault held at least 5 ETH continuously for five minutes.
  • Other venues. ETH–USDC and ETH–USDT trades on Ethereum from Dune's dex.trades. The baseline is the average from 22 to 28 October.
  • Prices and markouts. Binance ETHUSDT one-second closes. Premium is the trade price relative to Binance at the same second. Markout is ETH × (Binance price five minutes later − trade price), calculated from the venue or liquidity provider's perspective.
  • Attacker trades. From POL Labs' Binance drain analysis.
Back to blog