TIL

블록체인: Oracle Problem

블록체인은 외부 세계와 단절된 폐쇄 시스템입니다. Smart Contract가, '비트코인 가격이 9만 달러를 넘으면 자동 실행'과 같은 조건을 가지고 있어도, 블록체인 자체는 현재 비트코인 가격을 알 수 없습니다.오라클은 이 문제를 해결하는 다리입니다. 외부 데이터를

2025년 11월 28일4min read

1. 오라클과 오라클 문제 정의 🎯

1-1. 오라클 ✅

블록체인은 외부 세계와 단절된 폐쇄 시스템입니다.

Smart Contract가, '비트코인 가격이 9만 달러를 넘으면 자동 실행'과 같은 조건을 가지고 있어도, 블록체인 자체는 현재 비트코인 가격을 알 수 없습니다.

오라클은 이 문제를 해결하는 다리입니다. 외부 데이터를 블록체인 안으로 가져오는 중간자 역할을 합니다. 미국 IT 기업 오라클과는 전혀 다른 개념입니다.

1-2. 오라클 문제 ✅

외부 세계와 단절된 블록체인에 데이터를 전달하는 오라클은, 해결사인 동시에 두 가지 치명적인 문제를 일으킵니다.

중앙화 문제

중간자 역할을 하는 오라클이 블록체인에 잘못된 데이터를 주입하면, Smart Contract는 그 데이터를 무조건 믿고 실행합니다. 중앙화된 오라클이 Single Point of Failure 문제를 일으킬 수 있다는 것이죠.

원복 불가 문제

블록체인에 한 번 기록된 거래는 되돌릴 수 없습니다. 오라클이 '비트코인 가격은 500만 달러'와 같은 엉터리 데이터를 넣으면, 그 데이터로 실행된 수천만 달러 짜리 Contract는 영영 취소할 수 없습니다.


2. 첫 번째 해결책: 믿을만한 중간자 🎯

2-1. 해결 방식 ✅

핵심적인 문제는 '중간자인 오라클을 믿지 못하겠다는 점'에 있습니다. "신뢰할 수 있는 기관을 오라클로 사용하면 되는 것 아니냐?"는 생각이 듭니다. 로이터 통신이나 블룸버그 같은 공신력 있는 기관을 오라클로 지정하는 것이죠.

2-2. 문제점 ✅

그런데 두 가지 생각이 듭니다.

Why Blockchain?

블록체인의 핵심 가치는 중앙 권력 없이도 신뢰할 수 있는 시스템이라는 점에 있습니다. 결국 하나의 기관을 믿어야 한다면... 시간 아깝게 블록체인 왜 하죠? 그냥 전통적인 데이터베이스를 쓰는 것과 뭐가 다른가요?

Can't be Evil

신뢰할 수 있다고 생각한 기관이 악마가 되면요? 블록체인의 탈중앙화 정신은 "신뢰하지 말되, 검증하자"는 태도에 있는데 하나의 중앙화된 오라클을 신뢰하겠다고요? 블록체인의 철학과 양립하기 어렵겠죠?


3. 두 번째 해결책: 인센티브와 페널티 🎯

3-1. 해결 방식 ✅

인센티브와 페널티 제도로 해결해 보죠.

오라클 제공자는 네트워크에 토큰을 일정량 예치해야 합니다. 이를 Staking이라고 합니다. 데이터를 정확하게 제공하면 보상을 지급하고, 데이터를 잘못 제공하거나 조작하면 예치한 토큰 일부 혹은 전부를 몰수하는 페널티를 부과하면 어떨까요?

3-2. 장점 ✅

오라클 제공자에게 담보를 스테이킹하게 하는 방식은, 신뢰를 사람이나 중앙 기관이 아니라 경제적 인센티브와 암호 경제 구조에 맡긴다는 점에서 가장 블록체인스러운 해결책으로 평가됩니다.

블록체인은 본질적으로 '신뢰를 코드를 통해 강제하고, 잘못된 행동에는 자동으로 비용을 부과하는 시스템'인데, 스테이킹 방식은 오라클의 정직성을 외부 감사나 중앙 규제 없이 자체적으로 담보할 수 있습니다.

즉, 오라클이 진실한 데이터를 공급할 경제적 동기를 부여하고, 거짓 행동에는 자동으로 손실을 부과해 네트워크의 무결성을 유지하는 ‘탈중앙적 자율 인센티브 모델’이라는 점에서 블록체인의 철학과 가장 정확히 맞아떨어진다고 볼 수 있습니다.


4. 세 번째 해결책: 탈중앙화 오라클 네트워크 🎯

4-1. 해결 방식 ✅

가장 진보된 형태의 해결책입니다. 중간 관리자라고 볼 수 있는 오라클을 하나만 두는 것이 아니라, "여러 오라클을 동시에 사용하고 다수결로 결정하면 어떨까?"라는 아이디어가 떠오른 것이죠.

Decentralized Oracle Network(DON)는 수십, 수백 개의 독립적인 오라클 노드가 각자 데이터를 가져오는 구조입니다. DON의 핵심 목표는 하나의 오라클이 제공한 데이터에 의존하지 않고, 여러 독립 노드의 데이터를 모아서 신뢰할 수 있는 값을 만드는 것입니다. 이 과정에서 중앙값, 최빈값, 평균과 같은 통계량을 활용할 수 있습니다.

4-2. 예시 ✅

1. 여러 오라클 노드가 데이터를 제출 - 1번 노드(100), 2번 노드(102), 3번 노드(300), 4번 노드(101) 2. 노드 중 일부가 오류 혹은 악의적 데이터 제공 가능 - 위 예시에서 3번 노드의 300은 명백한 이상치 3. 신뢰 가능한 최종 값 산출 필요 - 평균을 내면 150.75로 실제 가격보다 크게 왜곡됨 - 중앙값을 활용하면 101로, 이상치 영향 최소화 가능 - 최빈값이나 다른 통계량도 활용 가능

통계량을 통해, DON에서 여러 오라클이 제공하는 값 중 이상치나 악의적 데이터를 걸러내고 신뢰할 수 있는 단일 최종 값을 산출할 수 있습니다.


5. Chainlink: 탈중앙화 오라클 네트워크 대표 🎯

Chainlink는 DON 방식의 대표 주자입니다. Chainlink의 주요 특징을 살펴보겠습니다.

5-1. CCIP(Cross-Chain Interoperability Protocol) ✅

CCIP는 체인 간 데이터를 안전하게 전달하는 표준 프로토콜입니다.

Smart Contract가 서로 다른 블록체인에 있는 데이터나 자산과 상호작용할 수 있도록 도와줍니다. 단순 브리지와 달리, 탈중앙화 오라클 노드들이 검증한 후 전송하기 때문에 보안성과 신뢰성이 높습니다.

5-2. Functions ✅

Chainlink Functions는 온 체인을 위한 AWS Lambda라고 보면 이해가 쉽습니다.

Smart Contract는 외부 API를 직접 호출할 수 없는데, Functions는 이 빈틈을 메우기 위해 오프 체인에서 코드를 실행하고 그 결과를 온 체인으로 전달하는 역할을 합니다. 즉, 마치 Lambda가 서버 없이 외부 연산을 대신 수행해 애플리케이션에 값을 돌려주듯, Functions는 블록체인 밖의 연산, API 호출, 데이터 가공을 처리하고 안전하게 Contract로 보내는 서버리스 오라클 컴퓨팅 레이어라고 볼 수 있습니다.

5-3. VRF(Verifiable Random Function) ✅

블록체인에서는 공정하고 조작 불가능한 난수(randomness)가 꼭 필요합니다.

게임 보상, 에어드롭 추첨처럼 ‘운’이 개입되는 요소가 많은데, 온 체인에서는 단순 난수를 생성하면 채굴자 또는 검증자가 결과를 조작할 위험이 있습니다.

Chainlink VRF는 이 문제를 해결하기 위한 기술로, 검증 가능한 난수를 제공합니다.

오라클이 난수를 생성하면 동시에 그 난수가 조작되지 않았음을 증명하는 암호학적 증명도 함께 생성하며, 누구나 검증할 수 있습니다.

그 덕분에 게임, NFT, 랜덤 드롭 같은 기능들이 완전한 무결성과 공정성을 갖고 실행될 수 있습니다.

난수가 조작 가능하다? 🎲

블록체인에서는 진정한 랜덤이 불가능합니다. 블록 생성 과정이 공개적이며 결정적(deterministic)이기 때문입니다. 온 체인 데이터(block.timestamp, blockhash 등)로 난수를 만들면, 블록 생산자가 이 값들을 미리 예측하거나 통제할 수 있습니다. 유리한 난수가 나오면 블록을 제출하고, 불리하면 버리는 식으로 결과를 조작할 수 있죠. 게임, NFT, 추첨, 금융 상품 등 어떤 분야든 공정성을 보장할 수 없습니다. 그래서 VRF 같은 외부 검증 가능한 난수 시스템이 필요합니다.

5-4. Data Streams ✅

Data Streams는 실시간 데이터 피드를 온 체인으로 제공하는 기능입니다.

가격, 금리, 기후 정보 등 지속적으로 변하는 데이터를 블록체인에 업데이트합니다. DeFi, 보험, 파생 상품 등 Smart Contract가 최신 정보를 기반으로 자동 실행되도록 합니다.

오라클을 통해 Smart Contract에 데이터를 연동하는 실습은 다음 글에서 소개하겠습니다.