오래된 가격은 마지막으로 보고된 값이 당시에는 맞았지만 지금까지 갱신되지 않은 상태입니다. 잘못된 가격은 최신 시각처럼 보이더라도 소스·집계·설정 오류 때문에 시장을 제대로 반영하지 못하는 값일 수 있습니다. 사고 공지에서는 가격 피드(feed) 주소와 자산, 보고값(answer)과 updatedAt, 갱신 조건, 시퀀서 상태, 프로토콜이 허용하는 최대 지연, 차입·청산 차단 규칙을 함께 확인합니다.
값이 같다는 사실과 최신이라는 사실은 다르다
시장 가격이 한동안 거의 움직이지 않았다면 같은 오라클 값이 정상일 수 있습니다. 반대로 updatedAt이 최근이어도 잘못된 소스나 설정 때문에 부정확한 값이 제출될 수 있습니다. 화면의 가격 하나만 보지 말고 피드 계약, 라운드, 보고값, decimals, updatedAt과 현재 블록 시각을 함께 기록합니다.
Aave 공식 문서는 각 준비금(reserve)이 오라클 계약과 연결되고 거버넌스가 소스를 고르며, 오라클은 시간 기준이나 편차 기준 운영 논리에 따라 갱신될 수 있다고 설명합니다. 정해 둔 편차를 넘지 않으면 하트비트 주기까지 값이 그대로일 수 있으므로, 거래소 시세처럼 매초 바뀌지 않는다는 이유만으로 사고라고 단정하지 않습니다.
오라클 가격은 숫자와 시각, 소스, 사용 규칙이 함께 있어야 비로소 의미가 완성됩니다.
JOBCOIN 해설

그림은 이 주제의 공통 개념을 단순화한 설명입니다. 아래 항목에서 이 글의 구체적인 조건과 예외를 함께 읽어보세요.
- 값이 같다는 사실과 최신이라는 사실은 다르다
시장 가격이 한동안 거의 움직이지 않았다면 같은 오라클 값이 정상일 수 있습니다.
- 지연이 생긴 층을 찾아야 한다
데이터 제공자와 노드가 새 값을 모았더라도 온체인 제출 거래가 늦어질 수 있습니다.
- 프로토콜의 소비 규칙이 피해를 결정한다
같은 오래된 피드를 쓰더라도 앱이 최대 지연을 검사해 거래를 되돌리면 잘못된 청산을 막을 수 있습니다.
설명을 위한 개념도 · 실제 가격·거래 내역·통계가 아닙니다.
지연이 생긴 층을 찾아야 한다
데이터 제공자와 노드가 새 값을 모았더라도 온체인 제출 거래가 늦어질 수 있습니다. L2 시퀀서가 멈추면 거래 제출과 오라클 업데이트가 함께 막힐 수 있습니다. 체인은 갱신됐는데 RPC나 인덱서 캐시가 예전 라운드를 보여 주는 경우도 있습니다. 층마다 타임스탬프를 비교합니다.
Aave V3의 PriceOracleSentinel 문서는 L2 시퀀서 상태에 따라 차입과 청산 허용 여부를 제한하고, 복구 뒤 유예 기간을 두는 설계를 설명합니다. 하지만 Aave v3.7 문서는 이 검사를 없앴다고 밝힙니다. 버전마다 구현이 달라졌으므로 과거의 보호 장치가 지금도 있다고 가정하면 안 됩니다.
| 층 | 확인값 | 오독 방지 |
|---|---|---|
| 데이터 소스 | 시장 범위·집계 상태 | 한 거래소 가격과 같다고 보지 않기 |
| 피드 업데이트 | 라운드·보고값·updatedAt | 같은 값과 오래된 값을 구분 |
| L2 시퀀서 | 작동·중단 여부와 복구 시각 | 체인 제출 불가를 피드 오류로 단정하지 않기 |
| 프로토콜 소비 | 지연 한도·예비 오라클·차단 | 피드 정상과 앱 안전을 같다고 보지 않기 |
| RPC·인덱서 | 응답 블록·캐시 | 표시 지연을 원장 지연으로 오해하지 않기 |
프로토콜의 소비 규칙이 피해를 결정한다
같은 오래된 피드를 쓰더라도 앱이 최대 지연을 검사해 거래를 되돌리면 잘못된 청산을 막을 수 있습니다. 검사 없이 마지막 값을 계속 쓰면 가격이 급변할 때 오래된 담보 가치로 차입이나 청산이 일어날 수 있습니다. 예비 오라클로 자동 전환되는지, 관리자가 직접 소스를 바꿔야 하는지도 봅니다.
AaveOracle 문서는 거버넌스 역할이 자산별 소스와 fallbackOracle을 설정할 수 있고, getAssetPrice가 기준 통화 가격을 돌려준다고 설명합니다. 사건을 분석할 때는 당시 실제 소스 주소, 권한 변경 거래, 예비 오라클 활성 여부를 확인합니다. 문서에 기능이 있다는 사실만으로 사건 때 쓰였다고 단정하지 않습니다.
잘못된 가격은 최신 라운드에서도 생긴다
decimals 오해, 기준·상대 통화 방향 착오, 감싼 자산의 환율, 상한과 스냅숏 시각 불일치, 주소 매핑 오류는 updatedAt이 최신이어도 잘못된 값을 만듭니다. 0이나 극단값만 찾는 모니터링으로는 작은 편차가 청산 임계값을 넘기는 사고를 놓칠 수 있습니다.
가격을 독립된 시장 자료와 비교할 때는 시각·통화·자산 형태를 맞춥니다. wstETH와 stETH처럼 교환 비율이 있는 자산을 단순 현물 가격만으로 비교하지 않습니다. 오라클 어댑터 안의 변환과 상한·하한을 그대로 재현합니다.
- 피드와 자산·네트워크 주소를 정확히 고정합니다
- 보고값·decimals·updatedAt·라운드와 기준 블록을 저장합니다
- 하트비트·편차·시퀀서·RPC 상태를 나눠 봅니다
- 프로토콜의 지연 한도·예비 오라클·차단 규칙을 코드에서 확인합니다
- 같은 시각·통화·자산 형태로 독립 가격과 비교합니다
복구 공지는 가격 정상화 이후를 설명해야 한다
새 라운드가 정상 범위로 돌아와도 이미 잘못 청산된 거래는 저절로 취소되지 않습니다. 차입·청산 재개, 유예 기간, 상한 조정, 소스 교체, 영향 계정 산정과 보상 제안은 각각 별도 단계입니다. 가격이 정상화된 시각과 서비스가 정상화된 시각을 나눕니다.
Aave 문서는 이 검사 장치의 목적을, 복구 직후 이용자에게 포지션을 건전하게 되돌릴 시간을 주는 것으로 설명합니다. 현재 버전에서 같은 장치가 없어졌다면 다른 유예 장치나 거버넌스 조치가 있는지 확인합니다. 기사에서 과거 구현을 현재의 보호 장치처럼 표현하지 않습니다.
사고 범위를 거래 단위로 재현한다
영향 기간의 모든 오라클 업데이트와 관련 차입·인출·청산 이벤트를 시간순으로 늘어놓습니다. 어떤 거래가 오래되거나 잘못된 값에 기댔는지, 정상 가격이었다면 건전성 지수가 어땠을지 계산할 때 그 가정을 밝힙니다.
프로토콜 손실, 이용자 담보 손실, 청산자 보너스, 부실 채권을 한 금액으로 합치지 않습니다. 회수된 보너스와 확정된 보상도 구분합니다. 조사 중인 수치에는 기준 블록과 계산 방법을 붙이고 후속 공지에서 갱신합니다.
자주 묻는 질문
가격이 몇 분 안 바뀌면 stale인가요?
피드마다 하트비트·편차 기준이 다르고 앱이 허용하는 지연도 다릅니다. updatedAt과 해당 설정을 함께 확인해야 합니다.
오라클 round가 최신이면 가격도 정확한가요?
보장되지 않습니다. 소스·단위·자산 매핑·어댑터 설정 오류로 최신 라운드도 부정확할 수 있습니다.
정상 가격이 다시 올라오면 잘못된 청산도 취소되나요?
온체인에서 끝난 거래는 저절로 취소되지 않습니다. 별도의 보상·회수·거버넌스 절차가 필요할 수 있습니다.
더 깊이 읽기
본문에서 다룬 개념과 확인 절차를 다음 글에서 이어서 살펴보세요.



