Oracle staleness check present
EigenLayer's assessment for RD-F-059 — scored yellow on the v1.7.0 rubric. The evidence below is the curator's reasoning for this score.
Evidence summary #
EigenPod proof verification uses the EIP-4788 ring buffer as a passive temporal bound: proofs must reference a beacon timestamp within the last 8191 slots (~27 hours). If outside this window, the staticcall returns empty and proof verification reverts. This is NOT an explicit updatedAt > now - maxAge staleness check as defined by F059. The protocol lacks a protocol-level guard that enforces 'proof must be within N hours of submission.' Old-but-in-window timestamps are accepted. In practice, this has not caused an issue because checkpoint submissions are user-incentivized, but the absence of an explicit staleness guard is a gap relative to the taxonomy definition. Yellow: passive bound exists via ring buffer but not an explicit protocol-enforced updatedAt check.
Sources #
- URLEigenPod.sol — getParentBlockRoot() calls BEACON_ROOTS_ADDRESS.staticcall(abi.encode(timestamp))EigenPod.sol getParentBlockRoot()retrieved 2026-04-28
Methodology #
Determine whether the protocol rejects oracle reads older than a declared maximum age (i.e., checks `updatedAt > block.timestamp - maxStaleness`).
See the full factor methodology and distribution across all protocols →