5주차 공부 - 2

박세연·2021년 1월 26일
0

Mastering Ethereum

목록 보기
7/10
post-thumbnail

Chapter 11. 오라클

✔ 오라클(oracle) : 외부의 데이터를 이더리움 스마트 컨트랙트로 제공해주는 시스템

오라클은 왜 필요한가?

이더리움 가상 머신(EVM)은 탈중앙화된 네트워크상의 모든 노드에서 합의 규칙에 따라 이더리움 프로그램을 실행하고 상태를 업데이트한다. 합의를 유지하기 위해서는 EVM 실행은 완전히 결정론적이고, 이더리움 상태와 서명된 트랜잭션의 공유 컨텍스트에 기반을 두어야하는데, 이것은 두 가지 중요한 결과를 낳는다.

  • EVM 및 스마트 컨트랙트와 같이 동작하는 임의성을 위한 고유한 소스가 없다. (랜덤 소스가 없다.)
    ✅ 예를 들어 A라는 노드가 스마트 컨트랙트를 실행해서 3이라는 값을 저장하고, B라는 노드가 같은 스마트 컨트랙트를 실행해서 7이라는 값을 저장했다고 하자.
    ✅ A와 B는 동일한 코드를 실행했는데 다른 결과 상태가 나오게 된다.
    ✅ 스마트 컨트랙트가 실행될 때마다 다른 결과 상태가 나오게 된다면 탈중앙화 네트워크에서 합의는 불가능하게 된다.
  • 외부 데이터가 트랜잭션의 데이터 페이로드(payload)로서만 유입될 수 있다.
    ✅ 외부 데이터(임의성 소스, 가격 정보, 일기 예보 등)를 가져올 때 이 데이터를 트랜잭션 데이터의 일부로 포함시키면 노드가 그 내용에 동의할 수 있다.
    ✅ 하지만 이 데이터는 신뢰할 수 없는 데이터이다.

위와 같은 문제를 해결하기 위해 오라클을 사용한다.

오라클 유스케이스와 사례

오라클은 이상적으로 스마트 컨트랙트를 위해 이더리움 플랫폼으로 축구 경기의 결과나 금 가격 혹은 순수 난수와 같은 외부(즉, 실세계 혹은 오프체인) 정보를 가지고 오는데 신뢰가 필요 없는 방법을 제공한다. 즉, 오라클은 오프체인 세계와 스마트 컨트랙트 사이의 격차를 줄이기 위한 메커니즘이라고 볼 수 있다.

오라클이 제공할 수 있는 데이터의 예

  • 양자/열 처리와 같은 물리적 소스로부터의 랜덤 넘버 / 엔트로피 : 복권 스마트 컨트랙트의 우승자를 공정하게 선정
  • 자연 재해에 인덱싱 된 매개 변수 트리거 : 지진 채권에 대한 리히터 규모 측정과 같은 대재해 채권 스마트 컨트랙트의 트리거
  • 환율 데이터 : 법정 화폐에 대한 암호화폐의 정확한 교환 비율(pegging)
  • 자본 시장 데이터 : 토큰 화 된 자산/증권 바스켓의 가격 책정
  • 벤치 마크 참조 데이터 : 금리를 스마트 금융 파생 상품에 통합
  • 정적/유사 정적 데이터 : 보안 식별자, 국가 코드, 통화 코드 등
  • 시간 및 간격 데이터 : 정확한 시간 측정에 근거한 이벤트 트리거
  • 날씨 데이터 : 일기 예보에 근거한 보험료 계산
  • 정치적 사건 : 예측 시장
  • 스포츠 이벤트 : 예측 시장 및 판타지 스포츠 계약
  • 지리적 위치 데이터 : 공급망 추적에 사용
  • 피해 확인 : 보험 컨트랙트
  • 다른 블록체인에서 발생하는 이벤트 : 상호 운용성 기능
  • Ether 시장 가격 : Gas 가격을 법정화폐로 환산
  • 비행 통계 : 항공사 마일리지 가족(그룹) 공유에 사용

오라클 디자인 패턴

🔴 모든 오라클은 정의에 따라 몇 가지 핵심 기능을 제공한다.

  • 오프체인 소스에서 데이터를 수집한다.
  • 이러한 데이터를 서명된 메시지로 온체인에 전송한다.
  • 데이터를 스마트 컨트랙트의 스토리지에 저장하여 사용할 수 있게 만든다.

🔴 오라클을 설정하는 세가지 주요 방법이 있다.

1. 즉시 읽기(immediate-read)

▶ 즉각적인 결정이 필요한 데이터만을 제공한다.
▶ 예) 학술 인증서, 전화번호, 기관 회원권, 공항 식별자, 자치 ID
▶ 데이터 질의를 통해 필요한 데이터를 조회하고 나면 다시 수행하지 않는다.

2. 게시 - 구독(publish-subscribe)

▶ 정기적 혹은 잦은 변화가 예상되는 데이터를 효과적으로 브로드캐스트하는 역할로 오라클을 사용한다.
▶ 예) 가격 정보, 기상 정보, 경제 또는 사회 통계, 교통 정보
▶ 오라클은 새로운 정보를 업데이트하고, 플래그는 새로운 데이터를 쓸 수 있다는 것을 '구독' 대상들에게 알린다.
▶ 데이터 업데이트를 위해 스마트 컨트랙트에 의한 폴링을 수행하는데, 폴링은 웹 서버 세계에서는 매우 비효율적이지만, 블록체인 플랫폼의 피어투피어 컨텍스트에서는 그렇지 않다.

3. 요청 - 응답(request-response)

▶ 스마트 컨트랙트에 저장하기에는 데이터 공간이 너무 크고, 사용자는 전체 데이터 중 한 번에 일부만 필요로 하는 경우에 사용한다.
▶ 요청 - 응답 오라클의 단계
1. 디앱(DApp)으로부터 질의(query)를 받는다.
2. 질의를 분석한다.
3. 비용이 지불되었는지, 데이터에 대한 접근 권한이 있는지 확인한다.
4. 오프체인 소스에서 관련된 데이터를 검색한다.(필요한 경우 암호화한다.)
5. 데이터가 포함된 트랜잭션에 서명한다.
6. 트랜잭션을 네트워크로 브로드캐스트한다.
7. 알림 등 필요한 추가 트랜잭션을 스케줄링한다.

데이터 인증

오라클과 요청-응답 메커니즘이 별개의 주체에 의해 운영된다면, 전송 중에 데이터가 변조될 가능성이 명백히 있기 때문에 데이터의 무결성을 입증할 수 있는 오프체인 방식의 검증 방법이 매우 중요하다. 즉, 데이터의 소스는 신뢰할 수 있지만 그 데이터를 체인의 주체에 대한 신뢰의 문제가 남아있다는 것이다. 데이터 인증에 대한 두 가지 공통적인 접근 방법이 있다.

진위성 증명(authenticity proof)

진위성 증명은 데이터가 변조되지 않았음을 암호학적으로 보증한다.
오라클라이즈는 다양한 진위성 증명을 활용하는 오라클 서비스의 예시이다.
▶ 현재 이더리움 메인 네트워크의 데이터 질의에 사용할 수 있는 증거 중 하나는 TLSNotary 증명이다. 이를 사용하면 클라이언트는 클라이언트와 서버 간에 HTTPS 웹 트래픽이 발생했다는 증거를 제3자에게 제공할 수 있다.

▶ 서버(oracle), 감시대상자(오라클라이즈), 감사인(AWS)으로 구성된다.
▶ AWS 인스턴스는 TLSNotary 암호를 저장해서 진위성 증명을 제공하며, 인스턴스화 이후에 수정되지 않았음을 검증할 수 있다.

신뢰할 수 있는 실행 환경(Trusted Execution Environment, TEE)

타운 크리에는 TEE 접근 방식에 기반한 인증된 데이터 피드 오라클 시스템이다.
▶ 이 방식은 데이터 무결성을 보장하기 위해 하드웨어 기반의 고립된 보안 영역(enclave)을 사용한다.
▶ 인텔의 SGX를 사용하여 HTTPS 질의에 대한 응답을 인증된 것으로 확인할 수 있다.
▶ SGX는 한 영역(enclave) 내에서 실행되는 애플리케이션이 다른 프로세스에 의해 변조되지 않게 CPU에 의해 보호받도록 하여 무결성을 보장한다.
▶ SGX는 애플리케이션이 보안 영역 내에서 실행된다는 디지털 서명 증명을 생성해서 타운 크리에에서 나온 데이터가 신뢰할 수 있는 데이터임을 증명한다.

계산 오라클

✔ 오라클은 데이터의 요청 및 응답 이외에 온체인에서 실행 불가능한 계산에 대한 입력을 받아 결과를 리턴하는데 사용될 수 있다. 즉, 블록 가스 한도를 초과하는 계산 작업에도 사용된다.
예) 계산 오라클을 사용하여 계산 집약적인 회귀 계산을 수행하여 채권 컨트랙트의 수익률을 추정할 수 있다.

탈중앙화 오라클

중앙화된 데이터 또는 계산 오라클은 많은 애플리케이션에서 충분하지만, 이더리움 네트워크에서는 단일 실패 지점(Single Point Of Failure, SPOF)이 된다. 그래서 데이터 가용성을 보장하고 온체인 데이터 집계 시스템을 갖춘 개별 데이터 제공자의 네트워크를 만드는 수단으로서 탈중앙화 오라클의 아이디어를 둘러싼 여러 가지 계획이 제안되었다.

체인 링크

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

평판 컨트랙트 : 데이터 제공자의 성과를 추적하는데 사용되고, 평판 컨트랙트의 점수는 오프체인 레지스트리를 채우는 데 사용된다.
오더 매칭 컨트랙트 : 평판 컨트랙트를 사용하여 오라클로부터 입찰가를 선택한다. 쿼리 파라미터와 필요한 오라클 수를 포함하는 서비스 수준 계약을 완료한다.
집계 컨트랙트 : 여러 오라클로부터 응답을 수집하고, 쿼리의 최종 집합 결과를 계산하고, 그 결과를 평판 컨트랙트로 피드백해준다.

▶ 이러한 탈중앙화된 방식의 문제점 중 하나는 집계 함수를 공식화하는 것이다.
▶ 체인링크는 각각의 응답에 대해 하나의 유효성 점수를 부여하는 가중치 응답을 계산하는 것을 제안한다.
▶ 췔링코인 프로토콜은 여러 참가자가 값을 보고하고 중간값을 올바른 대답으로 취하는 방법으로 계산한다.

결론

✅ 오라클은 스마트 컨트랙트 실행을 위한 외부 정보를 가져오는 스마트 컨트랙트에 중요한 서비스를 제공한다.
✅ 만일 신뢰가 필요한 소스에 부정이 일어난다면 그것을 사용하는 스마트 컨트랙트 실행에도 문제가 생기기 때문에 오라클을 사용할 때는 신뢰 모델에 대해 매우 신중해야한다.
✅ 탈중앙화 오라클은 이러한 우려사항 중 일부를 해결할 수 있고, 이더리움 스마트 컨트랙트에 신뢰가 필요없는 외부 데이터를 제공할 수 있다.

profile
안녕하세요

0개의 댓글