오라클(작성중)

이한길
BlueNode
Published in
6 min readNov 5, 2023

1. 오라클

스마트 컨트랙트는 코드로 정의한 조건이 충족되면 자동으로 계약이 집행되는 블록체인(월드 컴퓨터)의 프로그램이다. 수 많은 블록체인에서 스마트 컨트랙트를 사용해 자동으로 돌아가는 디앱(탈중앙화 어플리케이션)들이 존재한다.

하지만 대부분의 현재 디앱들은 블록체인 내부의 데이터들만을 이용한 제한적인 용도의 스마트 컨트랙트만을 사용한다. 즉, 블록체인 외부의 실물세계 및 웹 상의 데이터를 필요로 하는 계약(예를 들어 부동산 계약 또는 보험금 지급)을 블록체인에서 동일하게 구현하는 것이 불가능하다. 이러한 문제를 해결하기 위해 블록체인과 외부 세계를 연결해주는 인프라인 오라클이 필요하다.

온체인 데이터: 어떤 블록체인의 내부에 저장된 데이터를 온체인(On-chain) 상의 데이터라고 한다.

  • 해당 블록체인의 합의규칙이 데이터의 위변조를 방지한다.
  • 트랜잭션에 의해 상태가 변할 때마다 블록체인에 자동으로 기록된다.

오프체인 데이터: 블록체인 외부의 데이터, 즉 실물세계 또는 웹 또는 다른 블록체인 상에 있는 데이터를 오프체인(Off-chain) 상의 데이터라고 한다.

  • 합의규칙의 지배를 받지 않으므로 데이터의 위변조 여부를 알 수 없다.
  • 블록체인은 외부와 격리된 네트워크이기 때문에, 오프체인 데이터를 API 등을 통하여 블록체인에서 직접적으로 공급받을 수 없다. 이를 온체인에서 사용하기 위해서는 블록체인에 입력하여 온체인 데이터로 변환하는 작업이 반드시 필요하다.

오라클(Oracle): 오프체인과 온체인을 연결해 데이터의 매개체가 되는 중개자 인프라. 오라클은 온체인과 오프체인 양쪽에서 다음의 주요 기능을 한다.

  • 온체인 사이드
  • 요청 확인(Listen): 블록체인 네트워크를 모니터링해 오프체인 데이터를 요청하는 유저 또는 스마트 컨트랙트가 있는지 확인.
  • 입증(Validate): 데이터 서명, 블록체인 트랜잭션 서명, TLS 서명, 영지식증명 등 다양한 조합을 활용해 오라클 서비스의 퍼포먼스를 증명할 수 있는 암호학적 증거 생성.
  • 계산(Compute): 오라클이 제출한 다수의 데이터에 대한 중간값 계산 또는 개인 리스크 프로필, 시장 시세, 자본 비용 등과 같은 다른 종류의 데이터로부터 보험료 산정하는 더 복잡한 계산을 포함해 데이터에 대한 다양한 종류의 계산 수행.
  • 전파(Broadcast): 컨트랙트를 위한 데이터 및 해당 온체인 증거를 전송하기 위해 블록체인의 트랜잭션을 서명 및 전파.
  • 오프체인 사이드
  • 추출(Extract): 오프체인 API와 같은 외부 시스템으로부터 데이터 가져오기.
  • 포맷(Format): API로부터 받은 데이터를 블록체인이 읽을 수 있는 형태(인풋)로 포맷 또는 블록체인 데이터가 외부 API(아웃풋)에 호환될 수 있도록 상호 시스템 간 커뮤니케이션을 가능하게 함.
  • 아웃풋(Output): 스마트 컨트랙트의 실행과 동시에 외부 시스템에 데이터 전송 (전통적 결제 네트워크에 결제 지시 전달 또는 사이버 물리적 시스템에 영향을 미치는 데이터 전달).

오라클 문제

오라클 문제(Oracle Problem): 정해진 코드의 규칙으로 동작하는 스마트 컨트랙트에 의한 온체인 데이터의 전송은 중개자가 존재하지 않으므로 중개자에 대한 신뢰가 필요하지 않다(Trustless). 하지만 오프체인 데이터의 온체인으로의 전송은 중개자인 오라클에 대한 신뢰를 필요로 한다. 오라클에 문제가 생기거나 오라클이 악의적일 경우 잘못된 데이터를 전달하는 문제를 오라클 문제라고 한다.

또한 오라클이 하나로 중앙화되어 있다면 모든 오프체인 데이터 인풋을 제어해 컨트랙트의 결과를 결정할 수 있게 된다. 즉, 오라클의 중앙화는 스마트 컨트랙트의 탈중앙화를 무력화시키고, 의도적이든 의도적이지 않든 악의적인 행위를 할 수 있는 여지를 남긴다. 따라서 오라클 역시 블록체인처럼 탈중앙성을 유지하는 것이 중요하다.

오라클 문제 사례

  1. 난수 생성: 컴퓨터, 특히 블록체인에서 완벽한 난수를 생성하는 것은 매우 힘든 일이다. 해시함수로 유사난수를 생성할 수는 있지만, 이는 함수에 의한 결정론적인 값이므로 동일한 인자값 x을 입력하면 동일한 함수값 f(x)이 출력됨을 예측할 수 있다. 따라서 탈중앙화 복권이나 블록체인 게임과 같은 분야에서 난수를 사용하기 위해서는 오라클을 통해 외부 오프체인에서 난수를 제공받아야 하며, 이와 관련된 오라클 문제가 존재한다.
  2. 자산 가격: 암호화폐나 NFT와 같은 가상자산의 가격은 오프체인의 거래소에서 결정된다. 암호화폐 담보의 가격이 떨어지면 청산해야 하는 담보대출 서비스나, 암호화폐 가격 정보를 이용해 최적의 투자처를 알려주는 애그리게이터와 같은 디파이 서비스들은 필연적으로 암호화폐 가격에 대한 오라클 문제에 직면한다.
  1. 예측 시장: 대선 결과 또는 월드컵 우승국과 같은 미래의 결과를 예측하여 한쪽 결과에 돈을 베팅하는 예측 시장 서비스에서도 오라클이 악의적으로 조작된 결과를 전달해 부정하게 큰 돈을 타내는 오라클 문제가 발생할 수 있다.

2. 체인링크

체인링크(Chainlink)

오라클 계층에서 결정론성을 실현하기 위해 체인링크는 원하는 사용 사례에 맞는 커스텀 오라클을 제공하기 위해 다양한 조합을 통해 여러 차원에서 보장할 수 있는 분산형 오라클 네트워크를 개발했다.

오픈소스(Open-source) — 오픈소스 기술을 사용해 다수의 블록체인 커뮤니티가 각자 체인링크 소스 코드 및 함수에 대한 안전 및 신뢰도를 확인할 수 있도록 하고 개선을 위해 기여할 수 있도록 함.

탈중앙화(Decentralization) — 노드 및 데이터 소스 차원에서 탈중앙화를 실현해 하나의 노드 또는 데이터 소스가 단일장애지점이 되는 것을 방지해 유저들에게 데이터가 제시간에 전달될 것이라는 강력한 보장을 제공하고 조작을 방지함.

데이터 서명(Data Signing) — 노드가 스마트 컨트랙트에 데이터를 제공할 때 서명을 하도록 해 유저들이 어떤 노드가 어떤 데이터를 제공했는지 내역을 확인해 퍼포먼스 품질을 확인할 수 있도록 함.

서비스 계약(Service Agreements) — 요청하는 스마트 컨트랙트와 오라클 제공자 간 법적 효력이 있는 온체인 계약을 체결해 제공하는 오프체인 데이터 요청에 대한 품질을 유저들에게 보장할 수 있도록 오라클 서비스의 조건, 페널티 및 보상 명시.

평판 시스템(Reputation Systems) — 서명된 온체인 데이터를 평판 시스템에 입력해 유저들이 작업 성공률, 작업한 클라이언트, 평균 응답 시간 등과 같은 메트릭 정보를 바탕으로 노드에 대한 평가를 할 수 있도록 함.

인증서 서비스(Certification Services) — KYC, 노드의 위치 정보, 인프라의 보안 리뷰 등과 같은 주요 요소에 대한 보장을 할 수 있는 인증서를 발급해 노드가 인증서를 더 많이 취득할수록 유저들에게 더 높은 보안 및 신뢰도를 인정받을 수 있음.

데이터 피드:

VRF(Verifiable Random Function): 검증된 난수 생성 함수.

3. 수프라

수프라(SupraOracles)

References
1.
https://blog.chain.link/what-is-the-blockchain-oracle-problem-korean/
2.

--

--