본문 바로가기
웹진 인포메이션 웹진 인포메이션

블록체인 오라클의 데이터 검증 구조: 온체인·오프체인 신뢰 모델

redraw11 읽는 시간 약 7분
블록체인 오라클의 데이터 검증 구조: 온체인·오프체인 신뢰 모델

스마트 컨트랙트는 그 자체로는 외부 세계의 정보를 알 수 없습니다. 블록체인은 결정론적(deterministic) 실행을 보장해야 하기 때문에, 모든 검증 노드가 동일한 결과를 얻을 수 있는 온체인 데이터만을 직접 참조할 수 있습니다. 하지만 대출 서비스의 담보 가치 평가, 보험 상품의 실제 사고 여부 판단, 스포츠 베팅의 경기 결과 반영처럼 대부분의 실용적인 디앱은 외부 세계의 데이터가 반드시 필요합니다. 이 간극을 메우는 것이 오라클(Oracle)이며, 이 글에서는 오라클이 데이터를 어떻게 신뢰성 있게 온체인으로 가져오는지, 그리고 이 과정에서 발생할 수 있는 공격 벡터는 무엇인지 살펴봅니다.

오라클 문제(Oracle Problem)란 무엇인가

오라클 문제란, 블록체인 외부의 데이터를 온체인으로 가져오는 과정 자체가 블록체인의 탈중앙화된 신뢰 모델과 충돌한다는 근본적인 딜레마를 말합니다. 만약 단일 서버나 단일 주체가 외부 데이터를 그대로 스마트 컨트랙트에 입력한다면, 그 스마트 컨트랙트의 보안은 결국 블록체인의 탈중앙화된 합의가 아니라 그 하나의 데이터 제공자에 대한 신뢰로 되돌아가게 됩니다. 즉 아무리 스마트 컨트랙트 코드가 안전하더라도, 오라클이 잘못되거나 조작된 값을 전달하면 그 컨트랙트 전체가 위험에 노출됩니다.

중앙화 오라클과 탈중앙화 오라클 네트워크

가장 단순한 형태의 오라클은 하나의 서버가 API에서 값을 가져와 온체인에 기록하는 중앙화 오라클입니다. 구현이 간단하지만 그 서버가 다운되거나, 해킹당하거나, 운영 주체가 악의적으로 값을 조작하면 그대로 사고로 이어집니다. 이 단일 실패 지점 문제를 해결하기 위해 등장한 것이 탈중앙화 오라클 네트워크(DON, Decentralized Oracle Network)로, 여러 독립적인 노드가 각자 데이터를 수집한 뒤 그 값들을 집계(aggregation)하는 방식으로 값을 결정합니다. Chainlink가 대표적인 사례이며, 중앙값(median)을 취하거나 이상치를 걸러내는 방식으로 소수의 노드가 조작을 시도하더라도 최종 값에 미치는 영향을 최소화합니다.

가격 오라클의 데이터 갱신 방식: Push vs Pull

가격 정보를 다루는 오라클은 크게 두 가지 갱신 방식을 사용합니다. Push 방식은 오라클 네트워크가 가격이 일정 기준 이상 변동하거나 정해진 시간 간격이 지날 때마다 스스로 온체인 상태를 갱신하는 방식으로, 컨트랙트는 언제든 최신 값을 즉시 조회할 수 있지만 갱신 트랜잭션 비용을 오라클 운영 측이 지속적으로 부담해야 합니다. Pull 방식은 오라클이 서명된 가격 데이터를 오프체인에 계속 공개해두고, 실제로 그 값이 필요한 사용자나 컨트랙트가 트랜잭션을 실행하는 순간에만 그 서명된 데이터를 온체인에 제출해 검증받는 방식으로, 필요할 때만 가스 비용이 발생해 효율적이지만 데이터를 사용하는 쪽이 최신성을 직접 확인해야 하는 책임이 커집니다.

플래시 론과 가격 조작 공격의 관계

오라클과 관련된 가장 널리 알려진 공격 유형은 단일 DEX 풀의 순간 가격을 그대로 오라클로 사용하는 설계를 노린 것입니다. 공격자가 플래시 론(Flash Loan)으로 막대한 자금을 일시적으로 빌려 특정 유동성 풀의 가격을 극단적으로 왜곡시킨 뒤, 그 왜곡된 순간 가격을 그대로 참조하는 대출 프로토콜에서 담보 가치를 부풀려 대출을 실행하고, 거래가 끝나기 전에 플래시 론을 상환하는 방식입니다. 이 때문에 신뢰할 수 있는 프로토콜들은 단일 블록의 순간 가격 대신, 일정 시간에 걸친 시간가중평균가격(TWAP, Time-Weighted Average Price)이나 여러 독립 오라클 네트워크의 값을 함께 참조해 순간적인 가격 조작의 영향을 줄이는 방식을 사용합니다.

오라클 설계 방식 비교

방식장점취약점
단일 DEX 풀 순간 가격구현이 매우 단순, 실시간성 높음플래시 론 등으로 순간 조작 가능
TWAP(시간가중평균)순간 조작의 영향을 크게 줄임급격한 실제 가격 변동엔 반응이 느림
탈중앙화 오라클 네트워크(DON)다수 노드 집계로 단일 실패 지점 제거노드 운영 비용, 담합 가능성은 완전히 배제 못함
Pull 기반 서명 오라클필요 시점에만 온체인 비용 발생사용자·컨트랙트가 최신성 검증 책임을 짐

디앱을 이용할 때 오라클 관련 체크리스트

  • 이용하려는 프로토콜이 어떤 오라클을 사용하는지(단일 DEX 순간 가격인지, 탈중앙화 오라클 네트워크인지) 공식 문서에서 확인했는가
  • 과거에 오라클 조작으로 인한 해킹 사고 이력이 있는 프로토콜인지 확인했는가
  • 대출·파생상품 서비스라면 청산 기준이 되는 가격 오라클의 갱신 주기와 지연 시간을 확인했는가
  • 여러 오라클 소스를 교차 검증하는지, 하나의 소스에만 의존하는지 확인했는가
  • 오라클 자체의 감사 이력과 담당 조직의 투명성(운영 노드 목록 공개 여부 등)을 확인했는가

자주 묻는 질문

Q. 탈중앙화 오라클 네트워크를 쓰면 가격 조작이 완전히 불가능한가요?
A. 완전히 불가능하지는 않습니다. 다수의 독립 노드가 데이터를 집계하는 구조는 단일 실패 지점을 없애 조작 난이도를 크게 높이지만, 이론적으로 충분히 많은 노드를 동시에 매수하거나 담합시킬 수 있다면 여전히 조작이 가능합니다. 다만 그 비용이 일반적인 단일 오라클 공격보다 훨씬 커지도록 설계되어 있습니다.

Q. TWAP을 쓰면 오라클 문제가 완전히 해결되나요?
A. TWAP은 짧은 시간 동안의 극단적인 가격 조작(주로 플래시 론 기반 공격)에는 효과적인 방어책이지만, 조작하려는 측이 여러 블록에 걸쳐 지속적으로 자금을 투입할 수 있다면 여전히 영향을 받을 수 있습니다. 또한 실제 시장가격이 급변하는 상황에서는 TWAP이 실시간 가격을 늦게 반영한다는 반대급부도 있습니다.

Q. 오라클이 없는 스마트 컨트랙트도 있나요?
A. 있습니다. 외부 데이터가 전혀 필요 없이 온체인 정보만으로 완결되는 로직(예: 단순 토큰 전송, 온체인 데이터에만 기반한 게임 규칙 등)은 오라클 없이 동작합니다. 오라클이 필요한 것은 가격, 날씨, 스포츠 결과처럼 블록체인 바깥의 사실을 참조해야 하는 경우에 한정됩니다.

Q. Push 방식과 Pull 방식 중 어느 것이 더 안전한가요?
A. 안전성보다는 비용과 최신성의 트레이드오프에 가깝습니다. Push 방식은 항상 최신 값이 온체인에 준비되어 있어 편리하지만 지속적인 갱신 비용이 들고, Pull 방식은 비용 효율적이지만 사용 시점에 데이터가 충분히 최신인지 검증하는 로직을 컨트랙트가 갖추고 있어야 안전합니다.

redraw11

redraw11
함께 보면 좋은 글

댓글 0

첫 댓글을 남겨보세요.