1 Oracle
- 오라클은 외부의 데이터를 이더리움 스마트 컨트랙트로 제공하는 시스템이다
- 오라클은 탈중앙화 원칙을 바탕으로 작동하기 때문에 신뢰가 필요 없는 시스템이다.
2 Oracle이 필요한 이유
- EVM의 실행은 결정론적이고, 이더리움 상태와 서명된 트랜잭션의 공유 컨텍스트에 기반을 두고 있어야한다.
EVM 및 컨트랙트에서 동작하는 임의성을 위한 소스가 없다.
- 임의성을 가지는 소스가 있다면 서로 다른 노드다 동일한 컨텍스트에서 정확하게 동일한 코드를 실행해도 결과가 다르게 나온다
- 즉 동일한 원장을 공유해야 하는데, 서로 다른 원장을 가지고 있게 되는 것으로, 이는 곧 스마트 컨트랙트가 실행될 때마다 다른 결과 상태가 나올 수 있다는 가능성을 의미한다
- 여러 노드가 독립적으로 실행되는 네트워크에서 결과 상태가 무엇이지 합의가 불가능해진다.
외부 데이터가 트랜잭션의 데이터 페이로드로서만 유입된다.
- 모든 노드는 서명된 트랙잭션의 내용에는 동의한다.
- 외부 데이터를 트랜잭션의 데이터의 일부로 포함시키면 해결이 가능하다
- 그러나 데이터가 확인할 수 없는 출처에서 비롯되어 신뢰할 수 없다.
- 이러한 문제를 해결하기 위해 오라클을 사용한다.
3 Oracle 유스케이스와 사례
예를 들어, 앨리스와 밥이 스포츠 경기의 결과에 내기를 하고 싶어한다고 가정해보자. 앨리 스는 A팀에 20달러, 밥은 B팀에 20달러를 걸어 총 40달러는 스마트 계약에 의해 에스크로 보유된다. 게임이 끝났을 때, 컨트랙트는 앨리스에게 돈을 주어야할지 밥에게 주어야 할지 어떻게 알 수 있을까요? 정답은 정확한 매치 결과를 오프체인에서 가져와 안전하고 신뢰할 수 있는 방식으로 블록체인에 전달하는 오라클을 사용하는 것입니다.
오늘 미세먼지가 많으니 마스크를 쓰라고 사용자에게 알림을 띄우는 것’, ‘보험 가입자가 병에 걸렸으니 보험 약관에 의해 보험금을 지불하는 것’, ‘기상악화로 비행기가 연착되어서 소비자에게 비행기표를 환불해주거나, 다른 비행기의 빈 좌석을 대신 제공하는 것’ 등, 이 모든 것은 현실 세계에 대한 데이터 없이 진행할 수 없는 프로세스들이다.
- 오라클은 컨트랙트를 위해 이더리움 플랫폼으로 축구 경기의 결과나 금 가격 혹은 순수 난수와 같은 외부 정보를 가지고 오는 데 신뢰가 필요 없는 방법을 제공한다.
- 하지안 외부 정보는 이더리움 보안 모델에 위험을 초래할 수 있다.
- 보안의 취약점이 될 수 있다.
- 스마트 유언: 컨트랙트에 의해서 제어되는 상속 금액이 많다면 소유자가 사망하기 전에 오라클을 해킹하고 자산을 분배
| 데이터 종류 | 예시 |
|---|---|
| 양자 및 열처리와 같은 물리적인 소스로부터 발생되는 난수 및 엔트로피 | 복권 스마트 계약에서 당첨자를 공정하게 뽑는 것 |
| 자연재해에 대한 파라미터 트리거 | 지진 채권을 위한 리 히터(Richiter) 규모 측정 |
| 환율 데이터 | 법정 화폐에 대한 암호화폐의 정확한 교환 비율 |
| 자본 시장 데이터 | 토큰화된 자산 및 증권의 가격 책정 |
| 벤치마크 참고 데이터 | 금리를 스마트 금융 파생 상품에 통합하는 것 |
| 정적 및 유사 정적 데이터 | 증권 식별자, 국가 코드, 화폐 코드 등 |
| 시간 및 간격 데이터 | 정확한 시간 측정에 근거한 이벤트 트리거 |
| 날씨 데이터 | 일기예보에 기초한 보험료 계산 |
| 정치적 사건 | 예측 시장 결과 제공 |
| 스포츠 이벤트 | 예측 시장 결과 제공 및 판타지 스포츠 계약 |
| 지리적 위치 데이터 | 공급망 추적에 사용되는 데이터 |
| 피해 확인 | 보험 계약 |
| 다른 블록체인에서발생하는 이벤트 | 상호운용성 함수 |
| 이더 시장 가격 | 법정 화폐 기준 이더 가스 가격 오라클 |
| 비행 통계 | 항공편 티켓 풀링(pooling)에 사용된 그룹 또는 클럽의 통계 |