# Keeping a bad price out of storage: expired reports and permissionless cleanup

Mentorship Series #9 · 17 December 2025 · [@0xfirefist](https://x.com/0xFireFist) · Mento V3 · Cantina

Mentorship Series · [The Contest Academy](https://0xsimao.com/the-contest-academy) · written by 0xSimao

---

We continued the Mento V3 [contest](https://cantina.xyz/competitions/fe8e03b1-f8db-4698-8a21-44b3a862e434) on Cantina.

**Lesson Summary:**

- When fetching a price, a protocol needs a way to avoid storing a bad one;
- Circuit breakers matter when the price comes from Chainlink;
- `removeExpiredReports` is permissionless — check whether it can be arbitraged;
- Are the sorted oracles using expired reports to calculate the median?

https://youtu.be/5L9HcW3XSMs

Session video: https://youtu.be/5L9HcW3XSMs

Written by 0xSimao (https://0xsimao.com/) · Sherlock's 2025 Watson of the Year · 21 first places in 57 audit contests.

---

Newer: [Turning an out-of-scope root cause into an in-scope exploit](https://0xsimao.com/the-contest-academy/mento-out-of-scope-exploit) · Older: [Absurd Chainlink prices, weekend FX hours, and the breakers meant to catch both](https://0xsimao.com/the-contest-academy/mento-chainlink-circuit-breakers)
