마스터링 이더리움(Mastering Ethereum) 11장 - 오라클

JinJinJJara·2021년 1월 29일
0

Mastering_Ethereum

목록 보기
8/11
post-custom-banner

스크립토 6기 하진원입니다.
스크립토 방학 스터디로 마스터링 이더리움 공부하고 있습니다.

오라클이란?

오라클은 외부의 데이터를 스마트 컨트랙트로 제공하는 시스템으로 신뢰가 필요없는 시스템이다.

오라클의 필요성

EVM은 결정론적이고 이더리움 상태와 트랜잭션의 컨텍스트에 기반을 둔다.
이는 다음의 두가지 결과를 낳게 된다.

  1. EVM 및 스마트 컨트랙트와 같이 동작하는 임의성을 위한 소스가 없다.
    EVM에서 컨트랙트에 임의성을 제공하기 위해 난수 함수를 사용한다면 같은 코드를 실행하고 결과가 다른, 즉 합의가 불가능한 상황이 나오게 될 수 있다.
  1. 외부 데이터가 트랜잭션의 데이터 페이로드로만 유입된다.
    외부 정보(임의성의 소스, 가격 정보 등)을 가져와 사용할 수 있다.
    하지만 외부정보는 채굴자가 선택할 수 있기 때문에 문제를 해결한 것이 아니다.

🤞이를 해결하기 위해 오라클을 사용한다!

오라클의 사례

오라클은 이더리움 플랫폼으로 외부 정보를 신뢰가 필요 없는 방법으로 가져오는 방법을 제공한다.
오라클을 오프체인 세계와 스마트 컨트랙트 사이의 격차를 줄이기 위한 메커니즘으로 이해할 수 있다.
오라클이 제공할 수 있는 데이터의 예는

  • 환율 데이터
  • 자본 시장 데이터
  • 물리적인 소스로부터 발생되는 난수/엔트로피 e.g) 양자/열처리 같은
  • 날씨 데이터

이 외에도 수없이 많다.

오라클 패턴

오라클의 핵심 기능은 다음과 같다.

  • 오프체인 소스에서 데이터를 수집
  • 데이터를 서명된 메시지로 온체인에 전송
  • 데이터를 컨트랙트의 스토리지에 저장하여 사용가능케 함

데이터가 컨트랙트의 스토리지에서 사용가능케 되면 retrieve 함수를 작동시키는 메시지 호출을 통해 다른 스마트 컨트랙트가 접근할 수 있고 이더리움 노드/네트워크 사용 가능 클라이언트가 직접 접근하여 볼 수 있다.

오라클을 설정하는 방법으로는 즉시 읽기, 게시-구독, 요청-응답이 있다.

즉시 읽기

  • 즉각적인 결정이 필요한 데이터를 제공한다.(A는 무엇인가? B는 기관의 회원인가? 등)
    (예시로는 전화번호, 기관 회원권등 조직에 대한, 조직이 발급하는 데이터를 보유하는 것이 있다.)
  • 데이터를 전부다 저장하는 것이 아닌 해당 내용을 해시한 내용의 루트 해시만을 스마트 컨트랙트에 저장하여 서비스를 효율적으로 할 수 있다.
  • 이런 유형의 오라클은 위의 예시와 같은 데이터 요청에 응답하기 위해 서버를 운영해야 하는 조직에 유용하다.

게시-구독

  • 오라클은 잦은 변화가 예상되는 데이터를 브로드캐스트한다.
  • 데이터가 업데이트 되면 플래그는 그 사실을 구독 대상에게 알리고 업데이트가 발생하면 수신 대상은 필요한 조치를 한다.
  • 예시로는 가격 정보, 기상 정보, 교통 정보등 잦은 변화가 일어나는 데이터이다.

요청-응답

  • 스마트 컨트랙트에 저장하기에 데이터가 너무 크고 사용자는 전체 데이터 중 일부만 필요로 한 경우에 사용된다.
  • 오라클은 요청을 모니터링하고 데이터를 검색 및 반환하는데 사용되는 온체인 스마트 컨트랙트와 오프체인 인프라 시스템으로 구현 될 수 있다.
  1. DApp으로부터 질의(쿼리)를 받는다. (요청)
  2. 질의를 분석하고 비용 지불 여부, 접근 권한 여부를 확인한다.
  3. 오프체인 소스에서 데이터를 검색한다.
  4. 트랜잭션에 데이터를 포함시켜 서명하고 네트워크로 브로드캐스트한다. (응답)
  5. 알림 등 필요한 추가 트랜잭션을 스케줄링한다.
  • 클라이언트-서버 아키텍처에서 일반적이다.
  • 양방향 대화를 가능하게 해주는 메시징 패턴이다.

데이터 인증

데이터 소스를 신뢰한다는 가정하에 데이터를 체인으로 올리는 주체는 신뢰할 수 없다.
오라클의 메커니즘을 무한정 신뢰할 수 없고 전송 중에 데이터가 변조될 수 있기 때문에 데이터의 무결성을 입증할 수 있는 오프체인 방식의 검증 방법이 필요하다.
데이터 인증의 두가지 접근 방법은 진위성 증명신뢰할 수 있는 실행 환경이다.

진위성 증명(authenticity proof)

데이터가 변조되지 않았음을 암호학적으로 보증하는 것이다.

  • 오라클라이즈는 다양한 진위성 증명을 활용하는 오라클 서비스의 예이다.
  • 증명 중 하나로 클라이언트 서버 간에 HTTPS 웹 트래픽이 발생했다는 증거를 제 3자에게 제공할 수 있는 TLSNotary 증명이 있다.

신뢰할 수 있는 실행 환경(TEE)

  • 대표적으로 타운 크리에(Town Crier)가 있다. 타운 크리에는 데이터 무결성을 보장하기 위해 하드웨어 기반의 고립된 보안 영역을 사용한다.

계산 오라클

오라클은 데이터를 요청하고 전달하는 것 외에도 임의의 계산을 수행할 수도 있다.
그 예로 계산 집약적인 회귀 계산을 수행하여 채권 컨트랙트의 수익률을 추정할 수 있다.

탈중앙화 오라클

중앙화된 데이터와 계산 오라클으로 충분한 경우가 있지만 이더리움에서는 단일 실패 지점(시스템 구성 요소 중에서 동작하지 않으면 전체 시스템이 중단되는 요소를 말한다. 출처: 위키피디아)이 생긴다.

평판, 오더매칭, 집계 컨트랙트와 데이터 공급자의 오프체인 레지스트리로 구성된 탈중앙화 오라클 네트워크 제안

  • 평판 컨트랙트 : 데이터 제공자의 성과 추적
  • 오더 매칭 컨트랙트 : 평판 컨트랙트 사용하여 입찰가 선택
  • 집계 컨트랙트 : 오라클로부터 응답 수집 후 쿼리의 최종 결과 계산 후 평판 컨트랙트로 피드백한다.
profile
갈팡질팡 공부하는 중입니다
post-custom-banner

0개의 댓글