The v1 pipeline described here is built (at
relayer/src/sources/magiceden.ts,
using Magic Eden’s public API). It was exercised end to end against live Mad Lads
data. The bid-side leg is planned and needs a Tensor API key. NFT collection floors
are the secondary asset class; see Asset Classes.The single lowest listing is not the floor
The naive “floor price” is the lowest ask, and a single ask is manipulable: list your own NFT below everyone else and the number moves for free. But that logic cuts differently for a lone listing than for the ladder as a whole:- A fake low listing is a fillable offer. Anyone can buy it, so pricing your NFT meaningfully below market is a donation to arbitrageurs, and the ladder self-heals within blocks.
- A lone high listing never matters: it sits above the rest of the ladder and no depth-aware estimator reads it.
Ladder estimation (implemented v1)
The estimator per cycle, per collection:- Fetch the cheapest current listings (the ask ladder) from Magic Eden.
- Take the median of the cheapest 3 listings, i.e. the 2nd-cheapest ask. This hugs the true floor but cannot be moved by any single fake listing: an underpriced listing gets bought, an overpriced one never becomes the median.
- Cross-check the estimate against the venue’s own reported floor. Disagreement
beyond
maxDisagreementBpsholds the push and alerts instead. - Collect recent
buyNowsale prints in the lookback window as logged confirmation. On blue-chip collections the public activity feed is dominated by bid and pool-update churn, so sale prints are too sparse to be the primary signal; they corroborate, they do not set the number.
Planned: the bid-side leg
Collection-wide bids on Tensor are posted capital. Faking a high bid means genuinely offering to buy at that price, because any holder can fill it. Adding the top collection bid as an independent estimator leg (median of ladder estimate, top bid, and sale TWAP) is the planned hardening once a Tensor API key is provisioned, and it turns the cross-check from one venue’s self-reported floor into true cross-venue disagreement detection.Gates
- Ladder depth: fewer than 3 live listings means no push at all.
- Disagreement: ladder estimate vs reported floor beyond the configured bound (default 25 percent) holds the last value and alerts.
- Staleness on hold: every held push leaves
index_last_tsunchanged, so repeated holds walk the market toward its on-chain staleness guard rather than tracking bad data.
Conversion
NFT floors are already SOL-denominated, so no Pyth SOL/USD leg is needed. The estimate converts directly to lamports per whole NFT and is pushed viapush_index.

