1. 오늘 새벽 Aave에서 약 10,938 wstETH가 오라클 이슈로 잘못 청산되는 일이 발생함
2. Aave는 CAPO(Correlated Assets Price Oracle)라는 리스크 완화 장치를 사용함
3. 이 CAPO는 wstETH같이 ETH 같은 기초 자산과 강하게 연결되어 있는 자산의 가격이 너무 높게 튀지 않도록 상단 가격을 보호하는 역할을 수행함. 예를 들어 wstETH의 가격을 계산할 때 "price = min(wstETH의 ETH 교환비, capMAX) * ETH 가격"를 수행하는데, 이때 WstETHPriceCapAdapter에서 제공하는 capMAX를 통해 wstETH 가격이 너무 튀지 않도록 제한을 둠.
4. 여기서 이번 청산의 주요 문제는 이 capMAX 값으로 실제 교환비였던 1.2285 (1 wstETH = 1.2285 ETH)가 아니라 이보다 낮은 약 1.1939가 사용되었던 것. 첨부한 사진에서 보여주듯이 파란 선의 CAPO max 값이 청산시점 갑자기 낮게 설정된것을 볼 수 있음. 이에 따라 wstETH의 가격이 약 2.85% 낮게 책정되어 청산 임계치에 근접했던 정상 포지션들이 일부 청산당한 것.
5. 그래서 이 CAPO max 값은 왜 갑자기 낮게 설정되었나? 이 max Price 값은 리스크 인프라 업체인 Chaos Labs의 오프체인 리스크 엔진인 Edge Risk에서 제공해주는 값
6. Edge Risk는 온체인/오프체인 데이터, 유동성, 변동성 등을 종합적으로 고려하여 wstETH 교환비 같은 추천 값을 제공해줌. Chaos Labs의 Edge Risk가 시장 상황에 따라 추천 값을 제공하면, Aave의 AgentHub가 이를 채택하는 시스템.
7. 이 TX을 보면 Edge Risk가 약 1.1919의 snapshotRatio 값을 푸쉬하는 것을 볼 수 있음
8. 여기서 흥미로운 점은 왜 Edge Risk가 1.19 값을 제보했을까라는 것
9. 사실 이건 Edge Risk가 1.2282 교환비를 정상적으로 계산했지만 WstETHPriceCapAdapter에 정상적으로 업데이트를 푸쉬하지 못했기 때문
10. WstETHPriceCapAdapter는 337일전에 초기화되고 그 이후 사용되지 않았다가 오늘 처음 사용됐는데, 337일전 초기화 시 snapshotRatio는 약 1.1572의 교환비 값을 가짐. WstETHPriceCapAdapter에는 교환비를 급격하게 올리지 못하도록 하는 제약 조건이 있어서 (3일 동안 최대 3%) 1.1572에서 갑자기 1.2282로 상승된 값을 리포트하지 못했던 것. Edge Risk는 이를 감지하고 최대 업데이트 가능 값인 1.19값을 푸쉬함.
11. WstETHPriceCapAdapter에서 Ratio에는 이러한 상승 제약 조건이 있는 반면 (3일 동안 최대 3%), 시간(timestamp) 값은 새 값이 이전 timestamp보다 커야 하면서 동시에 현재 시점 기준 최소 7일 이전 값이어야 함. 337일 전에 초기화한 뒤 그동안 업데이트를 하지 않았으니, 애초에 정상적인 (timestamp, Ratio) 값을 올리기 어려운 상태였던 것. 따라서 Chaos Labs의 Edge Risk 문제라기보다는 여러 컴포넌트가 충돌하며 발생한 설정 문제라고 볼 수 있음
Ref)
https://x.com/yieldsandmore/status/2031468808012210538
https://x.com/omeragoldberg/status/2031501947832820098
https://governance.aave.com/t/post-mortem-exchange-rate-misallignment-on-wsteth-core-and-prime-instances/24269
