Checking a Chainlink quote at the block where settlement ran
An incident review sees a fresh price on a dashboard but a rejected settlement in a past block. The current round cannot explain which timestamp the contract saw earlier.
Recreate the historical clock
Read the same feed proxy at the execution state being investigated and retain its latestRoundData result. Compare updatedAt with the settlement block’s timestamp. In this example the application accepts at most 90 seconds: a 20-second-old value passes and a 1,120-second-old one fails. The threshold here is an application choice.
const blockTime = 1_800_000_120;
for (const updatedAt of [1_800_000_100, 1_799_999_000]) {
const age = blockTime - updatedAt;
console.log(age, updatedAt > 0 && age >= 0 && age <= 90);
}
Recover the state at transaction granularity
A historical call at the end of the block may already include a feed update that followed the settlement transaction. If the ordering matters, inspect the transaction trace or replay the preceding state. Record the proxy, round ID, block hash and threshold along with the decision. Reading the price again today, or substituting the time your server received a webhook, would answer a different question.