# PropAMM mechanism economics: an engineering decision memo

**Purpose.** Compare how proprietary AMMs (operators who stream price updates onchain instead of
relying on a passive curve) implement quoting, what it costs them per update, where the measured
edge over passive AMMs comes from, and what a team extending an oracle-priced design (such as
WOOFi's sPMM) should build. Companion data: `artifacts/edge-and-cost.csv` (long format; every row
carries `source_url` and `as_of_date`).

**Primary source.** arXiv 2609.38056, *Active Liquidity On Chain: Evidence from PropAMMs Across
Chains* (Solmaz, Heimbach, Milionis; submitted 2026-09-29;
https://arxiv.org/abs/2609.38056). Measurement window stated as 1 Sep 2025 – 31 Aug 2026 in §4;
Appendix 0.A says 11 Sep 2025 – 31 Aug 2026 (internal inconsistency; we use 2025-09-01 in the CSV
and flag it). Coverage: Solana, Base, Monad. Ethereum is deliberately excluded by the authors.
Independent sources: 0x "PropAMM Shenanigans" (2026-03-20, https://0x.org/post/propamm-shenanigans),
A. Fuller "PropAMMs on Ethereum: the story so far" (data as of 2026-08-31,
https://memos.azfuller.com/propamms/), Helius "Solana's Proprietary AMM Revolution" (Aug 2025,
https://www.helius.dev/blog/solanas-proprietary-amm-revolution), LambdaClass posts (2026-07-14,
2026-09-22, 2026-10-14, blog.lambdaclass.com), Blockworks Intel "Solana's Block Building Wars"
(https://app.blockworks.com/report/solana-s-block-building-wars — date conflict: the task brief says
14 Oct 2026; a Messari listing shows a same-titled report dated 3 Feb 2026; figures below are from
the publisher's summary and are marked estimate in the CSV), WOOFi Wooracle docs
(https://learn.woo.org/dev-docs/resources/on-chain-price-feeds).

**Verification status.** Verified against primary text: all arXiv numbers, 0x post, azfuller memo,
Helius post, LambdaClass posts, WOOFi docs. UNVERIFIED / second-hand: Blockworks Intel numbers
(summary-level only, report is paywalled); the Solana Foundation trading-research spoofing claim
(cited by 0x, original removed). All other items are quoted from the fetched sources.

---

## Offchain computation: what is computed offchain, what must be onchain, quote update cadence

**Offchain (per the decoded designs and operator descriptions):** fair-value estimation from CEX
feeds; the pricing model that turns fair value into curve parameters; counterparty classification
policy; signing of price updates (Ethereum); routing of updates to builders or direct submission
(Solana/Base/Monad). Helius (Aug 2025) frames the split as: fair value is always estimated offchain
(price discovery is on Binance-class venues), while execution logic — the curve evaluation itself —
lives in the onchain program.

**Must be onchain:** the curve/quote evaluation, inventory accounting, penalty application, and
execution. Concretely, per the arXiv decode of Tessera on Base: two directional ladders
(anchor price `p`, spread `s`, per-level multipliers), two directional flow accumulators, six fee
components (base, age, priority, mode, default, address), address labels and bytecode
fingerprinting, and a quote-freshness state machine (grace period → progressively worse price → no
fill after expiry). On Ethereum, the minimum onchain footprint is a price store plus the fill
contract: four venues share Titan's `DATAFEED` registry
(0xda7afeed01fe625cf15d187a19f94b45f00b8c5f); Metric keeps its own store and checks it against a
Chainlink deviation band; Kipseli reads the registry with a Chainlink guardrail (azfuller,
2026-08-31).

**Cadence (measured):**
- Solana: operator authority pushes curve adjustments "multiple times per second" (Helius, Aug
  2025; qualitative). Updates are sent continuously rather than per-block.
- Base: Tessera averages 1 price update per 0.563 blocks (≈1.8 updates per 2 s block, ≈0.9/s) vs 1
  book-level update per 4.31 blocks (arXiv, window to 2026-08-31). Price-update frequency is
  volatility-responsive: Pearson correlation 0.56 between update counts and 5-min realized vol
  after removing calendar effects.
- Ethereum: updates are bundled per block by builders. FermiSwap paired a same-block update with
  131/131 fills in a 450-block sample; Metric 84/91 (azfuller, snapshot 2026-09-01). Freshness
  windows traced from fill paths: FermiSwap and Kipseli require the exact block second; Tempest and
  bopAMM tolerate ~15 s on some lanes; Metric tolerates a stale store behind the Chainlink
  guardrail, which is why Metric fills also land on non-participating builders.

**Design takeaway:** the required onchain state is small (one anchor + spread + multipliers, or one
signed price), so the binding constraint is update *ordering*, not update bandwidth. On Solana this
is bought with priority fees/tips; on Base with priority fee multiples (Tessera pays 2.37× base fee
for price updates but only 0.18× for book updates — it buys position only when the update is
time-critical); on Ethereum it is delegated to builders entirely (specimen block 25848547: all five
maker updates paid 0 gwei priority; azfuller).

## Gas and cost: bundling quotes and transactions, cost per update, how cost scales with number of assets

**Cost per update vs per swap (arXiv §7.1, window to 2026-08-31):**

| Chain | Median update | Swap (simulated/observed) | Ratio |
|---|---|---|---|
| Solana | 485–676 CU | ≥16,938 CU | >10× |
| Base | 26,774–32,606 gas | 201,243–402,881 gas | ~6–15× |
| Monad | 33,428–50,839 gas (gasLimit 45,000–70,000) | 162,503 (access list) / 330,103 (w/o) for Metric | ~5–15× |

The authors note the 21,000 gas base floor accounts for much of an EVM update's cost — the marginal
cost of the quote write itself is small. On Monad, which charges on `gasLimit`, updates carry tighter
gas limits (28.32% unused vs ~38% on a non-update sample). Independent anchor point: HumidiFi's
optimized update tx on Solana consumed 143 CU and cost 9,998 lamports (≈$0.001784, incl. a 4,998
lamport tip) (Helius, Aug 2025). For comparison, a Phoenix CLOB order update costs 100,000–300,000
CU — two to three orders of magnitude above a propAMM parameter update. NOTE a conflict: Helius
states a typical Jupiter swap through a propAMM consumes ~150,000 CU, vs the paper's ≥16,938 CU
minimum for a swap; the paper measures the propAMM leg while Helius counts the whole aggregator
transaction. Treat the ~10x+ ratio, not the absolute swap figure, as the reliable claim.

**Priority-fee economics.** On Solana, updates pay 304K–2.2M micro-lamports per CU vs 5.6K–22K for
trades — updates deliberately overpay per CU because tiny CU counts make a top-of-queue position
cheap (the "cancel priority" Helius describes). Still, 32% of Tessera's and 27% of BisonFi's Solana
updates pay no priority fee or tip at all; on Base only 0.113% of Tessera updates pay none (arXiv).
On Monad, all observed Hanji and Metric updates pay nonzero priority (median 2–10.5 MON-gwei/gas vs
3–40 for trades).

**Bundling.** Two distinct patterns:
- *Quote bundling into one write.* Tessera reprices its whole book by writing `p` and `s` (26,706
  median gas) instead of touching levels (152,013 median gas) — one write moves every level. This
  is the core gas trick vs a CLOB.
- *Transaction bundling on Ethereum.* Makers stream signed updates to builders, who insert the
  latest update immediately before each fill. Block 25882303 shows a batch update writing three
  maker-signed prices to the shared registry at index 13, a Metric store refresh at 14, and the
  router trade at 18 (azfuller). The shared `DATAFEED` registry amortizes the store-write pattern
  across venues.

**Scaling with number of assets.** No source measures this directly — INFERENCE, flagged as such:
since one update writes a compact parameter set per pool, cost scales roughly linearly in the number
of *pairs* (each pair needs its own anchor/spread update), not in the number of levels inside a
pair. Tessera's two-update-tier structure (cheap `p,s` frequent; expensive book reconfiguration
rare, ~1 per 4.31 blocks) means adding ladder depth to an existing pair is cheap at quote time but
expensive to reconfigure. On Ethereum, the shared registry means N pairs can ride one update
transaction (observed: 3 venues in one tx), so per-asset marginal update cost there is sublinear.
UNVERIFIED: per-pair marginal cost on Solana; no source decomposes multi-asset updates.

## Pricing models (oracle anchor, ladders, spread and inventory skew, volatility response)

Three decoded designs (arXiv Appendix 0.D, implementations inspected Aug 2026):

- **Tessera (Base, impl. 0x6d9…41CB, activated 2026-08-12):** two directional ladders; level price =
  anchor `p` ± spread `s` scaled by a per-level multiplier. Swap output = `Y_book(x)·(1−φ)` where
  `φ` is a penalty stack that depends on quote age, counterparty class, and the tx's priority fee.
  Inventory netting is amount-based: two accumulators net opposite-direction flow at the anchor, so
  a buy refills the ask ladder without any write. A configurable number of levels nearest the
  anchor can be excluded to pull the top of book without repricing.
- **Elfomo (Base, 0x611…47e):** ladder whose per-level capacity is reconstructed from vault
  balances; reference combines posted updates with the raw price in **WOOFi's Wooracle** contracts,
  with freshness and deviation checks (i.e., Elfomo uses the requester's oracle as one of its
  anchors). Penalties (level, inventory, quote-age, caller) enter *during* traversal; an extra
  same-block same-side penalty is trade-count- rather than amount-based.
- **Metric (Base/Ethereum, 0x3f6…289 on Base):** Chainlink data-stream reference + separately
  posted bid/ask; the quoter builds a band around Chainlink and takes the lower bid/higher ask of
  the two sources (a deviation guardrail); liquidity in v3-like bins; adjustments inside traversal.
- **Ethereum set (azfuller, 2026-08-31):** FermiSwap, Kipseli, Tempest, bopAMM all read signed maker
  prices from the shared DATAFEED registry; Metric uses its own store with a Chainlink check. The
  onchain contract is a dumb executor of a signed price; all model logic is offchain — closer to
  RFQ, which is why the arXiv authors exclude Ethereum.
- **WOOFi sPMM (docs, accessed via paper refs):** self-posted oracle price (mid `p`, spread `s`,
  liquidity coefficient `k`) with a Chainlink fallback and a `feasible` flag; single-sided
  inventory. Structurally closest to the "oracle anchor + spread + curve coefficient" family the
  Solana venues use (cf. Obric's decompiled Sui program: `concentration`, `target_x`, oracle
  `mult_x/mult_y` shaping the curve around the oracle price, optional Pyth mode — Helius).

**Volatility response (measured):** Tessera's price-update count correlates with 5-min realized vol
at 0.56 (arXiv §7.1) — makers update faster exactly when staleness risk is highest. Spread widening
is also used defensively: the example block shows Tessera raising the default fee 0→538 ppm,
widening top-of-book post-fee spread from 2.78 to 13.54 bps.

## Toxic flow, markouts and who pays

**Markouts (arXiv §6, notional-weighted vs Bybit microprice; positive = maker earns):**

| Chain | propAMM @2 s | AMM @2 s | AMM @−5 s | propAMM @−5 s |
|---|---|---|---|---|
| Solana | +0.37 bps | −0.22 bps | +5.34 | −0.69 |
| Base | +1.19 bps | −0.62 bps | +3.95 | n/a (never negative) |
| Monad | +1.69 bps | −2.06 bps | +7.76 | −2.65 |

Per venue @2 s: Solana — Tessera 0.56 (decays to 0.28 by 15 s), HumidiFi ~0.32 flat, BisonFi 0.06;
Base — Tessera 1.62, Elfomo ~1.6 flat, Metric 0.26; Monad — Hanji 1.65, Metric 1.72. AMM loss
magnitudes track asset volatility (realized vol over the window: ETH 60%, SOL 66%, MON 123%),
consistent with LVR scaling with variance, not with block time.

**Who pays.** Four edge sources quantified by the paper:
1. *Continuous repricing.* The markout-curve inversion (AMM in-the-money pre-fill then negative;
   propAMM the reverse) is the signature: the propAMM repriced before the arb could pick off a
   stale quote.
2. *Counterparty-tiered pricing.* On Solana, 5 of 6 large propAMMs charge non-aggregator flow
   wider realized spreads in 68–83% of matched cells (sign test p<0.001): GoonFi +3.59 bps, SolFi
   V2 +1.58 bps premium vs aggregator fills; Tessera/BisonFi +0.10 bps; ZeroFi shows none (Table
   1). On Tessera/Base the mechanism is explicit: single fills earn +1.29 bps at 2 s but would have
   earned ≈−1 bps at the unpenalized quote — penalties alone turn adversely-selected single fills
   profitable. Address classes pay different effective marginal costs: whitelisted 0.78 bps,
   ordinary 2.46, address-penalized 4.96; the default fee collects 56.2% of fee revenue.
3. *Winning the cross-venue arb leg.* propAMM–DEX arb = 4.8%/13.3%/6.4% of notional on
   Solana/Base/Monad with markouts +0.03/+0.02/+1.55 bps — the propAMM is the fresh leg; the stale
   AMM is the loser. Pre-fill reference moves before such arbs: ~4.9/1.9/7.3 bps.
   propAMM–propAMM arb (16.6% of Solana notional) is the one class where a propAMM can be the stale
   leg (−0.21/−0.22 bps on Solana/Base; +0.68 on Monad).
4. *Spoofing.* Only 39% of Tessera trades fill at the price quoted at the previous block's end
   (appendix table: 41% identical — minor internal inconsistency); the average swap gets 1.08 bps
   worse than quoted (0.56 bps volume-weighted). Cause decomposition: when the default fee changes,
   94% of volume fills worse than quoted; operator price updates actually help 61% of that volume.

**Independent corroboration (0x, 2026-03-20):** on Base, one propAMM's final price update lands in
the last ~10% of the block 97.4% of the time across 461 blocks; two venues averaged 3 and 6 bps
worse than a reference AMM at settlement with outliers to 40 bps; intra-block quote variance ran
5–7× inter-block variance (0.47 vs 2.52 bps; 1.23 vs 8.62 bps); typical impact 5–10 bps/trade, ≈$500K/month at $1B monthly volume. A second pattern — spread snapping from ~2 bps to 8–16 bps while
a trade is in flight — is reported on Base and, per a removed Solana Foundation trading-research
piece (second-hand, UNVERIFIED), sub-3 bps quotes filling 20+ bps wide on Solana.

**Leader/builder dependence (Blockworks Intel, "Solana's Block Building Wars"; summary-level,
estimate):** propAMM markouts differ by which block builder/client the leader runs — BAM showed
better *average* markouts (earlier oracle-update positioning), Harmonic better medians but fatter
left tails; HumidiFi's first-oracle-update win rate was 73% on Harmonic vs 37–52% on other clients
through late January 2026, a gap that later closed. Inference for a builder of one of these:
execution quality is leader-dependent on Solana; on Ethereum it is builder-integration-dependent
(Titan carried 69% of fills on 44% of blocks; azfuller).

## Inventory and hedging approaches

- **Own-vault inventory.** All studied propAMMs quote from operator vaults, i.e., the program is the
  balance sheet (Helius). On Ethereum: FermiSwap $5.35M vault turning ~23×/day, Metric $555K turning
  ~61×/day, Kipseli $280K; bopAMM and Tempest draw on external maker wallets rather than locked
  vaults (azfuller, trailing week to 2026-08-31). Like-for-like Uniswap V3 (16 pools, same four
  pairs): $319M TVL at 0.61 turns/day — i.e., ~40–100× the capital efficiency of passive V3 on the
  same pairs.
- **Onchain netting instead of rebalancing.** Tessera's two accumulators net buy vs sell flow at the
  anchor, so opposite-direction trades replenish the book with no vault movement; only net flow
  consumes inventory (arXiv §2.2).
- **Inventory-skew pricing.** Elfomo reconstructs ladder capacity from live vault balances
  (inventory directly shapes the quote); Obric's `target_x`/`concentration` parameters implement a
  target-inventory curve that prices toward restoring a target balance (Helius decode of its Sui
  program).
- **External hedging.** No primary source measures hedge execution. Helius states inventory price
  risk "can be hedged through short positions elsewhere" at the cost of capital efficiency — which
  is why operators concentrate on liquid majors and avoid long-tail assets (price discovery for
  memecoins is onchain, so an oracle anchor is meaningless there). ZeroFi's inventory list (SOL,
  USDC, cbBTC, wETH, JUP, KMNO, POPCAT, WIF, BONK — Helius) shows coverage extending to established
  mid-caps, not the true long tail. UNVERIFIED: hedge venues, hedge latency, and whether any venue
  hedges onchain atomically — no source covers this.
- **Ethereum caveat.** ~34% of FermiSwap volume in the week of 2026-08-24 was internal round-trip
  arbitrage across its own lanes (median $0.57 profit/cycle, ~$3K across 3,172 cycles) — negligible
  P&L but it inflates volume; net volume that week ≈$850M of the headline $1.15B (azfuller).

## Single-sided vs inventory-ladder designs

Two families observed:

- **Single-sided oracle curve (WOOFi sPMM; Obric; Lifinity-style).** One inventory side per asset,
  price from an oracle anchor (`p`, `s`, `k`/concentration), fills move along a curve. Minimum
  onchain state; hedging and inventory targets handled by the operator offchain; oracle freshness is
  the attack surface (hence Wooracle's `feasible` flag + Chainlink fallback, and Metric's
  Chainlink-bounded band). Elfomo shows the hybrid: a propAMM ladder that *reads* Wooracle as its
  anchor — the requester's oracle is already load-bearing in a competitor's pricing path.
- **Inventory ladder (Tessera; Metric bins; Elfomo ladder).** Explicit bid/ask ladders parameterized
  by anchor+spread+multipliers, with per-level liquidity and onchain flow netting. More storage
  writes when reconfiguring levels (152K vs 26.7K gas), but lets the maker express depth, asymmetric
  skew, and top-of-book withdrawal (exclude-N-levels) without redeploying. Empirically the
  ladder designs carry the largest markouts (Tessera 1.62, Elfomo 1.6 bps @2 s on Base) — though
  this is confounded with penalty stacks, which the single-swap markouts cannot separate.
  INFERENCE: the ladder's advantage is expressiveness of skew and defense, not the ladder itself;
  a single-sided curve plus a Tessera-style penalty stack may capture most of it. UNVERIFIED — no
  source isolates the ladder's contribution.

## Quantified edge versus passive AMMs for retail-like flow

Paper's retail proxy: fills where the Bybit mid moves <1 bps from −5 s to +1 s ("quiet" flow).

| Chain | Retail cost on propAMM (bps) | on AMM (bps) | Quiet share of propAMM notional | of AMM |
|---|---|---|---|---|
| Solana | 0.26 | 2.59 | 32% | 9% |
| Base | 1.26 | 1.38 | 43% | 16% |
| Monad | 1.62 | 8.60 | 17% | 8% |

AMMs earn on quiet flow but lose on moving flow (−0.49/−1.00/−2.99 bps on Solana/Base/Monad), and
moving flow is 91%/84%/92% of AMM notional — the pooled AMM markout is dominated by toxic flow.
propAMMs flip this: their positive markout does *not* come from charging retail more. On Ethereum,
one specimen block shows all five propAMM fills within 2 bps of the Binance mid (azfuller); quoted
spreads at a 2026-09-01 snapshot: Metric 0.86, Tempest 1.38, FermiSwap 2.34 (to ≥$250K), Kipseli
2.56, bopAMM 4.20 bps — single snapshot, not a distribution. Caveat for the retail conclusion: the
measured retail cost is relative to the CEX reference; the spoofing gap (avg 1.08 bps on Tessera,
5–10 bps typical per 0x) is paid by whoever routed on the stale quote — i.e., largely aggregator
users, which *is* retail-like flow. The 0.26 bps Solana figure and the ~1 bps quote-vs-fill gap are
not directly comparable (different chains/metrics) but they bound the claim: propAMM retail pricing
is better than AMM pricing even after execution slippage on Solana, while on Base the spoofing gap
can eat most of the quoted edge. An onchain requoting router (LambdaClass PropAMMRouter, ~$13M/day
and ~1,000 swaps/day as of its 2026-09-22 audit post; $246.5M cumulative = 7.1% of Ethereum propAMM
volume per azfuller) is the deployed mitigation: it requotes every venue inside the swap tx and
falls back to Uniswap V3, which both removes the spoofing gap and forces venues to compete on
settled price.

## Table of cost and edge numbers

All rows with units, windows, and per-row sources are in `artifacts/edge-and-cost.csv`. Headline
set:

| Metric | Solana | Base | Monad | Ethereum | Source (as_of) |
|---|---|---|---|---|---|
| propAMM markout @2 s (bps) | +0.37 | +1.19 | +1.69 | n/a | arXiv 2609.38056 (2026-08-31) |
| AMM markout @2 s (bps) | −0.22 | −0.62 | −2.06 | n/a | same |
| Retail-proxy cost, propAMM/AMM (bps) | 0.26 / 2.59 | 1.26 / 1.38 | 1.62 / 8.60 | n/a | same |
| Median update cost | 485–676 CU | 26.8–32.6K gas | 33.4–50.8K gas | 0-gwei signed update via builder | arXiv; azfuller (2026-08-31) |
| Update cadence | multiple/s (qual.) | 1 per 0.563 blk (Tessera) | per-update medians above | per-block, paired 131/131 (FermiSwap) | Helius; arXiv; azfuller |
| Quote-vs-fill gap (bps) | sub-3 quote vs 20+ fill (UNVERIFIED, via 0x) | 1.08 avg (Tessera); 5–10 typical (0x) | n/a | n/a | 0x (2026-03-20); arXiv |
| Avg daily propAMM volume (USD) | $1.12B (yr avg) | $9.5M→$29.6M | $2.1M→$3.9M | $1.15B/week, ~11% of DEX vol | arXiv; azfuller |

## Facts vs inferences vs open questions

**Facts:** everything above attributed to the arXiv paper, 0x, azfuller, Helius, LambdaClass, WOOFi
docs — each row in the CSV carries its source and as-of date.
**Inferences (ours, not the sources'):** (a) update cost scales ~linearly in pairs, sublinearly on
Ethereum due to batched registry writes; (b) the ladder-vs-single-sided markout gap is confounded
with penalty stacks; (c) leader/builder dependence is the binding execution-quality constraint on
Solana and Ethereum respectively.
**Unanswered / UNVERIFIED:** per-asset marginal update cost on Solana; hedge execution and latency;
spoofing rates on Solana from primary data (the Solana Foundation piece is removed); TDMM/DefiLlama
30d provider shares named in the brief could not be re-pulled here (re-pull at
https://defillama.com/dexs and the Dune query https://dune.com/queries/4659241/7757125 cited by
Helius, and Blockworks' SOL–USDC share dashboard
https://blockworks.co/analytics/solana/solana-dex-activity); exact paper figure IDs for
re-pulling: Fig. 3–4 (markouts), Fig. 8 (quiet flow), Table 1 (counterparty spreads), Table 2
(route classes), Fig. 7/Table 3 (spoofing), Figs. 14–16 (per-venue markouts); data start
discrepancy (§4: 1 Sep 2025; App. 0.A: 11 Sep 2025); identical-execution share (§7.4 text: 39%;
Table 3: 41%).
