~/blockchain-dev.md
BLOCKCHAIN_DEV

오라클 업데이트도 MEV 표면이다: Chainlink SVR로 보는 OEV와 청산 설계

10분 읽기·2026.07.26·출처 5·00
오늘의 질문

가격 오라클이 정확한 값을 전달하는 순간, 왜 그 업데이트 순서 자체가 프로토콜 수익과 리스크를 바꾸는 MEV 표면이 될까?

blockchain-dev.md
Oracle OEV Surface

오라클 업데이트도 MEV 표면이다: Chainlink SVR로 보는 OEV와 청산 설계

1. 왜 지금 봐야 하나

DeFi에서 오라클은 보통 “외부 가격을 온체인으로 가져오는 모듈”로 설명된다. 그래서 개발자는 오라클 리스크를 가격 정확도, heartbeat, deviation threshold, fallback 정도로 생각하기 쉽다. 그런데 lending protocol의 청산 로직을 보면 한 단계 더 있다. 정확한 가격이 온체인에 올라오는 바로 그 순간이 새로운 상태 전이를 만든다.

예를 들어 담보 가치가 내려가 어떤 계정의 health factor가 1 아래로 떨어진다고 하자. 가격 업데이트 전에는 청산할 수 없지만, 업데이트 직후에는 청산할 수 있다. 이때 searcher들은 오라클 업데이트 트랜잭션 바로 뒤에 자기 청산 트랜잭션을 붙이기 위해 경쟁한다. Chainlink 문서는 이 값을 Oracle Extractable Value, 줄여서 OEV라고 설명한다. 이는 오라클이 사용자를 착취한다는 뜻이 아니라, 오라클 업데이트가 만들어내는 oracle-related MEV라는 뜻에 가깝다.

Chainlink Smart Value Recapture(SVR)는 이 지점을 제품화한 사례다. SVR은 Chainlink Price Feed의 사용 패턴을 크게 바꾸지 않으면서, 오라클 업데이트를 private route와 public fallback route로 동시에 다루고, 청산 backrun 권리를 auction으로 판매해 일부 가치를 프로토콜과 Chainlink Network가 회수하게 한다. Aave governance 포럼도 2026년 Phase 2와 Phase 3 글에서 SVR 적용 범위를 BTC-correlated, ETH-correlated, USDC 관련 자산으로 점진 확대하는 논의를 남겼다.

개발자에게 이 주제가 중요한 이유는 “MEV 수익이 생긴다”가 아니다. 더 중요한 질문은 이것이다.

내 프로토콜은 오라클 업데이트를 단순 입력값으로 보는가, 아니면 순서·지연·fallback·청산 인센티브가 결합된 상태 전이 이벤트로 보는가?

2. 핵심 개념

SVR을 이해하려면 세 단어를 분리해야 한다.

첫째, **MEV(Maximal Extractable Value)**는 block proposer, builder, searcher 등이 트랜잭션의 포함·제외·순서 변경을 통해 얻을 수 있는 가치다. 모든 MEV가 나쁜 것은 아니다. sandwich처럼 사용자 체결을 악화시키는 toxic MEV도 있지만, 청산처럼 프로토콜 지급능력을 유지하는 데 필요한 행위도 있다.

둘째, **OEV(Oracle Extractable Value)**는 오라클 리포트가 온체인에 전달되고, 그 값을 읽은 컨트랙트가 새로운 행동을 허용할 때 생기는 MEV다. lending protocol에서는 가격 업데이트 직후 청산 가능 포지션이 드러나는 경우가 대표적이다. Chainlink SVR 문서는 이를 liquidation process에서 자주 관찰되는 non-toxic MEV subset으로 설명한다.

셋째, **SVR(Smart Value Recapture)**는 OEV를 완전히 없애는 기술이 아니다. 누군가는 여전히 청산을 실행하고, blockspace와 실행 리스크를 감수한다. SVR은 “누가 이 순서 권리를 가져갈지”를 public mempool gas war에 맡기지 않고, private transmission과 auction으로 바꾼다. 그리고 낙찰자가 오라클 업데이트 뒤에 청산 트랜잭션을 backrun하게 하며, 그 대가의 일부를 integrating DeFi protocol과 Chainlink Network로 돌린다.

구조는 대략 이렇다.

  1. Chainlink Data DON이 heartbeat 또는 deviation threshold에 따라 새 가격 리포트를 만든다.
  2. 같은 가격 리포트가 두 경로로 다뤄진다. 하나는 기존 Standard Aggregator로 가는 public route, 다른 하나는 SVR Aggregator로 가는 private route다.
  3. private route에서는 Flashbots MEV-Share 같은 채널을 통해 searcher가 오라클 업데이트를 보고 liquidation backrun bundle을 입찰한다.
  4. winning bundle이 선택되면 같은 블록 안에서 SVR 가격 업데이트와 청산 트랜잭션이 순서대로 실행된다.
  5. private route가 실패하거나 지연되면 configurable delay 이후 standard feed 기반 fallback이 동작해 가격 데이터가 멈추지 않게 한다.

여기서 핵심은 dual aggregator와 fallback이다. SVR은 “private auction이 항상 성공한다”는 가정 위에 서지 않는다. public standard feed를 fallback으로 둔다. 하지만 fallback이 너무 빠르면 searcher가 SVR auction을 우회할 수 있고, 너무 느리면 프로토콜이 stale price에 노출된다. 그래서 fallback delay는 단순 운영 설정이 아니라 리스크 파라미터다.

3. 최신 이슈와 연결

Chainlink의 2024년 12월 발표 글은 SVR이 BGD Labs, Flashbots, Aave DAO contributors와 함께 만든 초기 구현이며, Flashbots MEV-Share와 dual aggregator architecture를 사용한다고 설명했다. 또한 SVR은 frontrunning이나 sandwich가 아니라 liquidation backrunning에 초점을 맞춘다고 선을 그었다.

2025년 1월 Chainlink 분석 글은 Aave v2/v3 liquidation 데이터를 기반으로 SVR 파라미터를 어떻게 잡을지 논의했다. 특히 짧은 오라클 업데이트 지연이 bad debt 위험을 키울 수 있으므로 liquidation bonus나 LTV 같은 risk parameter와 같이 봐야 한다고 설명한다. 이 글의 결론은 “적절한 calibration이 있으면 Aave v3 같은 lending protocol이 의미 있는 OEV를 회수하면서 기존과 크게 다르지 않은 risk profile을 유지할 수 있다”에 가깝다.

Aave governance 포럼의 Phase 3 글은 이 논의가 실제 운영 단계로 확장되는 모습을 보여준다. Phase 1, Phase 2에서 일부 자산과 market에 SVR을 적용한 뒤, Phase 3에서는 Aave v3 Ethereum Core의 ETH-correlated assets와 USDC로 확대하는 방향을 제안했다. 포럼 글은 이전 단계에서 ETH/USD와 USDC/USD SVR feed가 production에서 일정 기간 동작했고, Core market coverage를 크게 늘리는 효과가 있다고 설명한다.

즉 최신 흐름은 단순히 “Chainlink가 새 feed를 출시했다”가 아니다. 오라클 가격 업데이트를 하나의 order-flow로 보고, 그 order-flow에서 생기는 경제적 가치를 프로토콜 설계에 다시 넣는 흐름이다.

4. 개발자 관점 해석

첫 번째 해석은 오라클 통합이 latestRoundData() 호출만으로 끝나지 않는다는 점이다. SVR feed는 표준 Chainlink Data Feed처럼 읽을 수 있지만, 그 뒤에는 private route, auction, fallback delay가 있다. 컨트랙트 인터페이스가 같다고 리스크 모델까지 같은 것은 아니다. 같은 AggregatorV3Interface를 쓰더라도 운영 의미는 달라진다.

두 번째 해석은 liquidation parameter가 oracle routing과 묶인다는 점이다. fallback delay가 5 blocks라면, 그 시간 동안 시장 가격이 더 움직일 가능성을 liquidation bonus, close factor, debt ceiling, isolation mode, caps와 같이 봐야 한다. “오라클이 조금 늦게 들어온다”는 UX 문제가 아니라, bad debt와 liquidator incentive의 문제다.

세 번째 해석은 searcher integration이 관측성 요구사항을 바꾼다는 점이다. Chainlink의 Ethereum mainnet searcher guide는 SVR update를 private transaction stream에서 감지하고, forward(address to, bytes callData) 호출과 transmitSecondary() payload를 해석하라고 설명한다. 이는 프로토콜 운영팀도 최소한 어떤 feed update가 SVR route로 들어왔고, 어떤 liquidation이 같은 block에서 실행되었는지 추적할 수 있어야 한다는 뜻이다.

네 번째 해석은 fallback이 안전장치이면서 공격면이라는 점이다. private route가 실패했을 때 standard feed를 읽는 fallback은 feed stall을 막는다. 하지만 fallback delay가 어떻게 설정되어 있는지, 누가 바꿀 수 있는지, guardian이 non-SVR oracle로 되돌릴 수 있는지, 그 변경 이벤트가 사용자와 risk engine에 어떻게 전파되는지를 설계해야 한다.

다섯 번째 해석은 MEV가 “없앨 대상”만은 아니라는 점이다. 청산은 프로토콜을 살리는 기능이다. 문제는 청산 기회에서 생기는 가치가 누구에게 가고, 그 대가로 어떤 지연과 신뢰 가정이 추가되는가다. SVR은 이 tradeoff를 명시적으로 다루는 설계 사례다.

5. 내 프로젝트에 적용할 체크포인트

  1. 오라클 업데이트를 상태 전이 이벤트로 모델링했는가? 가격 값뿐 아니라 update timestamp, round id, route, fallback 여부, 같은 block의 청산 이벤트를 함께 저장하라.
  2. fallback delay를 risk parameter로 문서화했는가? “몇 초/몇 block까지 stale price를 허용하는가”를 liquidation bonus, LTV, price volatility와 연결해 설명해야 한다.
  3. SVR feed와 standard feed의 차이를 모니터링하는가? 두 feed의 price deviation, update delay, stale round 빈도, fallback trigger를 dashboard에 올려라.
  4. guardian 또는 steward 권한이 명확한가? SVR feed에서 non-SVR feed로 되돌리는 권한, 그 조건, timelock/guardian path, event log를 문서화하라.
  5. liquidator/searcher 행동을 관측하는가? 특정 feed update 뒤 몇 block 안에 liquidation이 실행되는지, 누가 실행하는지, revert rate와 gas cost는 어떤지 봐야 한다.
  6. MEV recapture revenue를 보안 예산과 연결했는가? 회수된 OEV를 treasury revenue로만 보지 말고 oracle 비용, insurance fund, bad debt reserve와 연결해라.
  7. 통합 범위를 점진적으로 넓히는가? Aave 포럼 사례처럼 volatile asset, correlated asset, stablecoin, composable feed를 한 번에 바꾸지 말고 단계적으로 확대하는 편이 안전하다.

6. 오늘 10분 액션

  • 2분: 내 프로젝트 또는 관심 DeFi 프로토콜에서 가격 오라클을 읽는 함수 1개를 고른다.
  • 2분: 그 가격 업데이트 직후 실행 가능한 함수가 무엇인지 적는다. 예: liquidation, rebalance, settlement, mint/burn, margin check.
  • 2분: 해당 함수가 “오라클 업데이트 바로 다음 순서”를 얻으면 누가 이익을 보는지 적는다.
  • 2분: stale price를 허용하는 최대 시간과 fallback feed가 있는지 확인한다.
  • 2분: oracle_update -> eligible_action -> execution -> revenue/loss 흐름을 한 줄 sequence diagram으로 그린다.

오늘의 목표는 SVR을 당장 붙이는 것이 아니다. 오라클을 “값 공급자”가 아니라 순서가 붙은 상태 전이 트리거로 다시 보는 것이다.

7. 더 볼 자료

  • Chainlink SVR Feeds 문서는 dual aggregator, public fallback, private route, Aave-specific feed의 기본 구조를 확인하기 좋다.
  • Chainlink SVR Searcher Onboarding 문서는 실제 searcher가 private route에서 어떤 calldata와 selector를 보는지 보여준다.
  • Chainlink SVR Analysis 글은 fallback delay와 lending risk parameter를 함께 봐야 하는 이유를 수식과 데이터 관점에서 설명한다.
  • Aave governance Phase 1~3 글은 새 오라클 routing을 한 번에 전면 도입하지 않고, 자산군과 market별로 점진 확대하는 운영 패턴을 보여준다.

중복 회피 메모

로컬 content/generated와 Supabase의 최근 blockchain_dev 글을 확인했다. 최근 글은 Arbitrum Timeboost의 L2 sequencing/MEV auction, KelpDAO/LayerZero DVN RPC quorum, EIP-4444 history expiry, EIP-7917 proposer lookahead, EIP-7939 CLZ opcode, EIP-7907 code size gas, Solana Alpenglow finality, Taiko bridge origin verification, OP Stack fault proof soundness, ERC-4626 NAV manipulation, P-256/passkey precompile, MODEXP repricing, PeerDAS/blob fee reserve를 다뤘다. 이번 글은 sequencer ordering이나 bridge verifier, gas/DA 업데이트가 아니라 Chainlink SVR와 Aave governance 사례를 통해 오라클 업데이트가 만드는 OEV, dual aggregator fallback, liquidation risk parameter calibration에 집중해 중복을 피했다.

오늘 10분 액션+5%

댓글 0

최신순 ▾
한 줄 남기기

혹시 이 글을 읽는 동료 개발자가 있다면, GitHub으로 로그인하고 한 줄 흔적을 남겨줘요. (스팸 방지용 로그인이에요)