Web3 - 예언기 기초편: 블록체인과 현실 세계의 다리
1. 오라클(Oracle)이란 무엇인가
블록체인 세계에서 스마트 계약은 "자동 실행 프로그램"이지만, 자연적인 한계가 있다: 체인 외부 데이터를 직접 접근할 수 없다. 이는 스마트 계약이 날씨 데이터, 금융 데이터, 물류 상태, 심지어 랜덤 숫자가 필요할 경우 직접적으로 얻을 수 없음을 의미한다.
오라클(Oracle)은 이 문제를 해결하기 위해 존재한다. 이는 "정보 중개자"로서 체인 외부 데이터를 체인 내부로 가져오거나, 반대로 체인 내부 정보를 체인 외부로 전송하는 역할을 한다.
예를 들어
당신이 분산형 보험 계약을 개발하고 있다고 가정해 보자. 사용자는 "폭우 보험"을 구매할 수 있으며, 만약 어떤 날 강수량이 50mm를 초과하면 계약이 자동으로 보상한다.
하지만 문제가 생겼다. 스마트 계약은 그 날의 날씨를 어떻게 알 수 있을까? 스스로 날씨 API에 접근할 수는 없다------이것이 오라클이 필요한 이유다. 오라클은 여러 날씨 API에서 데이터를 수집하고, 최종 결과를 블록체인에 제출하여 계약이 이 데이터를 기반으로 결정을 내릴 수 있게 한다.
2. 스마트 계약이 체인 외부 데이터에 직접 접근할 수 없는 이유
블록체인의 분산화 및 결정성 설계는 외부 데이터를 처리할 때 몇 가지 핵심 문제에 직면하게 한다:
분산화 파괴
📡 블록체인의 핵심은 "분산화"이지만, 스마트 계약이 단일 데이터 소스(예: 특정 API)에 의존하게 되면, 이 데이터 소스는 단일 실패 지점이 되어 조작될 수 있다.
📡 예를 들어, 특정 날씨 API가 해킹되어 잘못된 데이터를 반환하면, 스마트 계약은 잘못된 결정을 내릴 수 있다.
일관성 문제
📡 블록체인은 모든 노드가 동일한 계산 결과를 얻어야 하지만, 외부 API의 데이터는 시간과 장소에 따라 다를 수 있다.
📡 예를 들어, 한 블록체인 노드는 중국에 있고, 다른 하나는 미국에 있다면, 동일한 API에 접근하더라도 서로 다른 환율 데이터를 얻을 수 있어 합의 실패를 초래할 수 있다.
데이터 가용성 문제
📡 만약 어떤 API가 갑자기 다운되면, 그 API에 의존하는 모든 스마트 계약은 정상적으로 작동하지 않을 수 있다.
데이터 불변성
📡 블록체인上的 데이터는 변경할 수 없지만, 체인 외부 API의 데이터는 수정될 수 있다.
📡 예를 들어, 분산형 거래소가 특정 API를 통해 ETH/USD 가격을 제공받고 있다면, API 제공자가 의도적으로 가격을 조작할 경우 거래가 조작될 수 있다.
3. 오라클은 어떻게 작동하는가 오라클의 핵심 역할은 체인 내부 계약이 안전하고 신뢰할 수 있게 체인 외부 데이터를 얻을 수 있도록 하는 것이다. 그 전형적인 작업 흐름은 다음과 같다:
- 체인에서 데이터 요청
스마트 계약이나 사용자가 요청을 시작하여 오라클에게 "어떤 데이터를 얻고 싶다"고 알린다. 이 요청은 블록체인에 저장되며, 모든 오라클 노드에 통지된다.
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract WeatherOracleRequester {
event WeatherRequest(uint256 requestId, string city, address callbackAddress);
uint256 public nextRequestId;
function requestWeather(string memory city) external {
uint256 requestId = nextRequestId++;
emit WeatherRequest(requestId, city, address(this));
}
}
이 예제에서 계약은 emit 이벤트를 통해 요청을 방송하며, 체인 외부의 오라클 노드는 이 요청을 감지하게 된다.
- 오라클이 요청을 청취
체인 외부의 오라클 노드는 블록체인上的 요청을 청취하고 작업을 추출한다. 예를 들어, 다음과 같은 요청을 볼 수 있다:
요청 ID:101
데이터 유형:날씨 데이터
도시:상하이
API 데이터 소스:https://weatherapi.com/shanghai
3. 오라클이 체인 외부 데이터를 가져온다
각 오라클 노드는 요청에 따라 여러 데이터 소스에서 데이터를 가져온다. 예를 들어:
WeatherAPI.com:강수량 52mm
OpenWeather.com:강수량 51mm
LocalWeather.com:강수량 53mm
4. 데이터 검증 및 집계
다양한 데이터 소스가 서로 다른 결과를 반환할 수 있으므로, 오라클은 데이터의 정확성을 보장하기 위해 집계 알고리즘을 사용한다:
중위수 취하기: 52mm
가중 평균(다양한 API의 가중치를 고려)
이상치 제거(어떤 API의 결과가 지나치게 편차가 크면 제외)
5. 오라클이 데이터를 체인에 제출
오라클은 처리된 데이터를 블록체인에 제출한다. 예를 들어:
contract WeatherOracle {
event WeatherResponse(uint256 requestId, uint256 rainfall);
function submitWeatherData(uint256 requestId, uint256 rainfall) external {
emit WeatherResponse(requestId, rainfall);
}
}
6. 스마트 계약이 데이터를 사용
스마트 계약은 WeatherResponse 이벤트를 청취하고 이를 기반으로 논리를 트리거한다:
contract WeatherInsurance {
mapping(address => uint256) public balances;
function claimInsurance(uint256 rainfall) public {
require(rainfall > 50, "지급 없음, 강수량이 너무 낮음");
payable(msg.sender).transfer(balances[msg.sender]);
}
}
강수량이 50mm를 초과하면 계약은 자동으로 사용자에게 보험금을 지급한다.
4. 오라클의 응용 사례
1. DeFi 오라클(탈중앙화 금융)
DeFi 프로토콜은 외부 가격 데이터가 필요하다. 예를 들어 ETH/USD 가격. 일반적인 오라클로는 Chainlink, Pyth, Band Protocol이 있으며, 이들은 신뢰할 수 있는 시장 데이터를 제공한다.
2. 보험 및 날씨 예측기
탈중앙화 보험(예: Arbol, Etherisc)은 날씨 오라클을 사용하여 보상 여부를 결정한다.
3. 공급망 및 물류
스마트 계약은 오라클을 통해 공급망 상태를 확인할 수 있다. 예를 들어, 화물이 도착했는지 여부.
4. 랜덤 숫자 오라클
체인에서 랜덤 숫자를 생성하는 것은 어렵기 때문에, 복권, NFT 민팅 등은 보통 Chainlink VRF와 같은 랜덤 숫자 오라클에 의존한다.
5. 오라클 데이터가 모든 채굴자 노드에서 일관성을 유지하는 방법은?
1. 블록체인의 상태 모델
오라클이 데이터를 업데이트하면, 데이터는 스마트 계약에 저장된다.
모든 채굴자는 거래를 실행할 때 동일한 상태를 읽는다.
2. 데이터 동기화 메커니즘
오라클이 데이터를 제출한 후, 모든 노드는 동기화하여 업데이트한다.
예를 들어, 99번째 블록에서 오라클이 ETH/USD 가격을 3000달러로 업데이트했다면,
100번째 블록에서는 A 채굴자든 B 채굴자든 모두 3000달러를 읽게 되며, 차이가 없다.
6. 요약
오라클은 블록체인과 현실 세계를 연결하는 다리로, 스마트 계약이 체인 외부 데이터에 접근할 수 있게 한다.
스마트 계약이 외부 API에 직접 접근할 수 없기 때문에, 오라클은 요청을 청취하고, 데이터를 가져오고, 데이터를 검증하고, 데이터를 제출하여 이 문제를 해결한다.
오라클의 핵심 도전 과제는 데이터의 진실성, 분산화 및 일관성이며, 일반적인 해결책으로는 분산형 오라클, 데이터 집계 및 합의 메커니즘이 있다.
오라클은 DeFi, 보험, 공급망, NFT, 랜덤 숫자 생성 등 다양한 분야에 널리 사용되고 있다.
앞으로 오라클 기술이 지속적으로 발전함에 따라, Web3 응용 프로그램은 더욱 스마트해지고, 블록체인은 현실 세계와의 상호작용이 더욱 긴밀해질 것이다!
The Web3 커뮤니티 소개
The Web3는 Web3 기술 솔루션 설계 및 개발에 중점을 둔 커뮤니티로, 개인 및 기업에 전문적인 향상을 위한 튜토리얼 설계, 개발 및 교육 서비스를 제공하는 데 헌신하고 있다. 또한, The Web3는 프로젝트 보안 감사, 투자 연구 분석 및 프로젝트 인큐베이션 등 전방위적인 지원을 제공한다.
- The Web3는 세 가지 핵심 구성 요소로 이루어져 있다:
- 「The Web3 커뮤니티」 : 교육 및 훈련에 중점을 두며, 130명의 우수 개발자와 30명 이상의 뛰어난 제품 관리자를 성공적으로 양성했다.
- 「The Web3 보안 연구소」 : DappLink, FishCake, Parapack, RootHash 등 유명 프로젝트에 전문 보안 감사 서비스를 제공한다.
- 「The Web3 자본」 : 누적 투자액이 200만 달러를 초과하며, Web3 혁신 프로젝트의 인큐베이션 및 성장을 적극적으로 추진하고 있다.














