The reference price
IMD oracle attestations and the checks FloorFeed makes.
Why a reference price
The vault must know what a seat is worth before it buys one, and it must not take anyone’s word for it. Asks are not on-chain, so the reference is built from sales: the median price of the collection’s on-chain sales over the last 24 hours. This document calls it the floor; it is a reference built from recent sales, not the lowest ask.
Where it comes from
The IMD oracle. A request names a question, a panel size and a quorum; a panel of seats answers independently, and when enough of them agree the oracle signs an attestation with the answer, the block window it read, the panel’s size, quorum and agreement, and a validity window. The signature is EIP-712, domain IdentityMD Oracle version 2, bound to the contract that asked: an attestation issued to one consumer is worthless to another.
Each request costs 0.5 IMD. The developer’s keeper requests one every six hours; anyone else may too.
What FloorFeed checks
FloorFeed.report(attestation, signature) is callable by anyone. It stores the price only when all of these hold:
| Check | Rule |
|---|---|
| Signer | Recovers to the IMD oracle’s attester address, for FloorFeed’s own address and chain. |
| Question | Matches the one pinned question hash. Any other question is refused. |
| Evidence chain | Names the chain fixed at deployment, where the collection lives. |
| Panel | Quorum at least 4 and a majority of the panel; agreement at least the quorum and within the panel. |
| Validity | Valid for at least the freshness window, not issued in the future, not older than the window. |
| Order | Issued after the report already stored. |
| Answer | One non-zero uint256. |
| Rise limit | At most 25% higher per 6 hours since the stored report was issued. Falls are not limited. |
A report is fresh for 6 hours after it was issued. Without a fresh report the vault does not buy, and the split falls back to 50/50 until the next one arrives.
The rise limit
Wash sales can move a median of recent sales. The limit caps how fast that can reach the vault: the stored price may rise by at most 25% per 6 hours, measured between the issue times of two reports, whether or not the earlier report is still fresh. A report held back until the previous one lapses gains nothing, and reports in quick succession cannot compound. A genuine jump larger than the limit is reflected once enough time has passed; until then the vault simply buys less.
Setting the question (a timelocked action) clears the stored price, and the first report after that is not limited. Setting the same hash again is the way to clear a bad value.