이더리움과 같은 네트워크 상 스마트 컨트랙트가 더 다양한 시장에서 도입되어 다양한 사용 사례에 활용될 수 있도록 하기 위해 넘어야 할 가장 큰 과제는 블록체인 오라클 문제입니다.

지난 블록체인 교육 시리즈(Blockchain Education Series)에서 이미 얘기했듯 블록체인에서 운영되는 스마트 컨트랙트는 다자간 계약 및 가치 교환을 하는 방식을 재정의할 수 있는 큰 잠재력이 있습니다. 스마트 컨트랙트 경제 밖에는 온라인에서 계산하는 인터넷 연결된 기기로 구성된, 블록체인 기반이 아닌 더 큰 디지털 경제가 존재합니다. 세계가 어떻게 돌아가는지에 대한 인사이트를 제공하는 넘쳐나는 데이터 및 API (사회에서 인기 있는 토픽 또는 대화를 보여주는 인터넷 검색 결과, 일반적인 교통 상황 패턴을 보여주는 IoT 센서 등)가 이러한 디지털 인프라의 부산물입니다.

미래 데이터에 기반한 자동화를 구현하기 위한 핵심 요소는 블록체인 기반 스마트 컨트랙트와 전통적 데이터 및 API 경제입니다. 하지만 두 세계를 어떻게 연결하는지가 해결해야 하는 과제입니다. 바로 이 시점에서 가장 중요한 과제인 오늘의 주제, “오라클 문제”에 대해서 이야기해보겠습니다.

오늘 포스팅에서는 5가지 주제에 관해 이야기하겠습니다.

  • 오라클 문제 정의
  • 오라클의 역할 정리
  • 이더리움과 같은 블록체인이 네이티브 오라클 솔루션을 제공하지 않는 이유
  • 중앙화된 오라클이 지닌 보안 리스크
  • 안전하고 신뢰할 수 있는 분산형 오라클의 기준인 체인링크 소개

오라클 문제

오라클 문제는 블록체인이 가진 매우 단순한 한계점을 바탕으로 합니다. 블록체인은 기능적으로 외부 시스템에서 데이터를 호출 및 전송할 수 없기 때문에 인터넷 연결이 없는 컴퓨터와 같은 격리된 네트워크와 유사합니다. 격리된 블록체인은 이미 원장 내부에 저장된 데이터를 바탕으로 기본적인 진실/거짓 질문에 대한 합의에 도달하기만 하면 되기 때문에 굉장히 안전하고 신뢰할 수 있습니다. ’공개 키 보유자가 해당 개인 키로 트랜잭션에 서명했습니까?’, ‘공개 주소에 트랜잭션을 처리하기에 충분한 자금을 보유하고 있고 해당 스마트 컨트랙트에서 유효한 트랜잭션 유형입니까?’ 등이 예시 질문입니다. 블록체인 합의에서는 굉장히 세부적인 답변에 주목하기 때문에 스마트 컨트랙트를 결정론적이라고 합니다. 전통적 시스템에 비해 스마트 컨트랙트는 더 확실하게 컨트랙트에 작성된 대로 실행됩니다.

하지만 외부 세계와 연결이 되어야 스마트 컨트랙트가 가진 잠재 사용 사례의 90% 이상을 실현할 수 있습니다. 예를 들어 금융 스마트 컨트랙트는 결제를 위한 시장 정보, 보험 스마트 컨트랙트는 보험 지급 정책 관련한 결정을 내리기 위한 IoT 및 웹 데이터가 필요하며 무역 컨트랙트는 무역 문서 및 디지털 서명이 있어야만 시기에 맞춰 대금을 지불할 수 있듯 다른 종류의 스마트 컨트랙트도 전통적 결제 네트워크를 통한 명목화폐 지급을 원할 것입니다. 이에 필요한 정보는 블록체인에서 생성되지 않으며 외부 연결이 없으면 전통적 금융 서비스도 그저 자유롭게 액세스할 순 없습니다.

블록체인(온체인)과 외부 세계(오프체인)를 연결하기 위해서는 ‘오라클’이라는 별도의 추가 인프라가 필수적입니다.

블록체인 오라클의 역할은?

블록체인 오라클은 안전한 미들웨어로 블록체인과 데이터 제공자, 웹 API, 기업 백 엔드, 클라우드 제공자, IoT 기기, 전자서명, 결제 시스템, 다른 블록체인 등과 같은 오프체인 시스템 간 커뮤니케이션을 돕는 역할을 합니다. 오라클의 주요 기능은 다음과 같습니다.

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

위에 언급한 기능을 제공하기 위하여 오라클 시스템은 온체인과 오프체인에서 동시에 운영해야 합니다. 온체인에서는 블록체인 연결(요청이 들어오는 것 확인), 데이터 전파, 증거 전송, 블록체인 데이터 추출 및 때로는 블록체인에서 계산 등을 수행해야 합니다. 오프체인에서는 요청 처리, 외부 데이터 검색 및 포맷, 블록체인 데이터를 외부 시스템에 전송 및 더 고급 오라클 네트워크에서 계산 등을 수행합니다.

Chainlink crop insurance contract

체인링크 오라클을 활용하는 작물 보험 스마트 컨트랙트는 다수의 소스로부터 날씨 데이터를 받아 취합된 데이터를 트리거로 삼아 블록체인에서 보험 컨트랙트 실행해 전통적 결제 방식을 통해 보험금을 지급합니다.

블록체인에 오라클 문제를 해결할 수 없는 이유

블록체인은 특정한 원칙을 바탕으로 설계되었기 때문에 신뢰할 수 있고 매우 안전합니다. 위에서 설명했듯 내부 환경에서 생성된 데이터를 활용해 진실 또는 거짓을 증명할 수 있는 간단한 질문에 대한 결정만 내리면 되기 때문입니다. 또한 분산된 네트워크에 있는 모든 노드가 같은 데이터에 대해 중복 검증을 해 하나의 노드 또는 소수의 노드 그룹이 합의 알고리즘 (PoW, PoS, 등)을 바꾸지 못하도록 하며 51% 이상의 해시 파워를 컨트롤해 시빌 공격할 수 없도록 합니다. 블록체인의 이러한 특성 때문에 분산된 시빌 저항을 갖춘 네트워크에서 더 확실하게 결정론적 보장을 할 수 있습니다.

하지만 블록체인은 주관적인 답변 또는 네트워크에 있는 노드가 액세스하지 못하는 외부 데이터를 요구하는 질문에 대해 대답을 하기에는 적합하지 않습니다. 예를 들어 ‘비트 코인의 시장 가격은?’ 또는 ‘뉴욕의 날씨는?’과 같은 간단한 질문에 대한 대답은 다양한 데이터 소스 중 어떤 데이터 소스에서 언제 정보를 취득하는지에 따라 답변이 다를 수 있기 때문에 적합하지 않습니다. 그렇다면 이제 정답이 무엇인지가 질문이 됩니다.

블록체인의 기반 계층에 주관성 요소를 포함하게 되면 보안, 신뢰 및 거버넌스에 대한 판도라의 상자를 열립니다. 따라서 블록체인이 제공하려고 하는 컴퓨팅 트랜잭션에 대한 공평한 결정론 이라는 가치가 보장되지 않을 수 있습니다.

이와 관련된 첫 번째 우려 사항은 모든 노드가 데이터에 대한 동일한 액세스가 없는데 어떻게 데이터의 높은 품질을 보장하냐입니다. 비트코인에 대한 가격이라는 기본적인 데이터 요청도 상당히 어려운 질문입니다. 금전적 동기를 바탕으로 수십 년간 데이터 필터링을 통해 고품질 서비스를 유지하고 모든 거래 환경에 대한 시장 커버리지를 제공하는 전문적인 데이터 어그리게이터 또는 유료 API가 제공하는 데이터와 비교해 그저 하나의 웹사이트 또는 거래소에서 얻은 데이터는 정확도와 신뢰도가 떨어질 것입니다. 그렇기 때문에 블록체인 노드가 제출한 오프체인 데이터에 대한 품질을 관리하는 것은 매우 어렵습니다. 누구나 익명의 노드를 운영할 수 있고 모두가 답변을 제출할 동일한 기회를 가지고 있지만 모든 노드가 고품질 데이터를 제공하는 유료 API를 구독하지 않으며 오라클에 참여하기 위해 유료 API 사용을 강제하지 않기 때문입니다.

또 다른 우려 사항은 확장성입니다. 네트워크 또는 기존 데이터에 새로운 데이터 소스를 추가하거나 데이터 취합 방식을 변경 해야 할 때마다 네트워크의 모든 노드가 동의하고 소프트웨어를 업그레이드해야 하는 큰 사회적 거버넌스 과정이 필요합니다. 거버넌스 비용 때문에 마찰 비용이 증가하고 블록체인의 다른 주요 기능 (PoS, 샤딩 등) 개발이 지연되어 오라클의 발전 속도를 늦춥니다. 결과적으로 블록체인의 기반 계층이 더 복잡할수록 블록체인상의 모든 애플리케이션에 대한 공격 표면이 커져 리스크가 증가합니다. 심지어 오라클을 사용하지 않는 애플리케이션 또는 대립적 데이터 요청이 없는 애플리케이션도 공격을 받을 것이며 오라클 문제 때문에 체인 전체가 위험하게 되어 문제가 발생할 수 있습니다.

위에 언급한 이유 때문에 오라클은 블록체인의 기반 계층에 통합하지 않고 별도의 네트워크로 운영됩니다. 이를 통해 블록체인은 공격 표면을 줄여 블록체인 합의에 집중해 결정론적 가치를 유지할 수 있고 오라클은 전체 블록체인이 위험에 놓이지 않도록 하면서도 복잡하고 주관적인 오프체인 데이터를 통해 결정을 내릴 수 있는 유연성을 갖추게 됩니다.

중앙화된 오라클의 주요 위험요인

사람이 주체가 되어 집행하는 계약은 확률적으로 실행됩니다. 그와 반대로 결정론적인 스마트 컨트랙트는 계약 조건에 대해 기술적인 집행을 해 결과를 보장합니다. 이를 달성하기 위해 블록체인은 어떤 단일장애지점도 없어야 하며 컨트랙트 주기의 시작부터 끝까지 이 특성이 유지되어야 합니다. 만약 하나의 중앙화된 오라클이 인풋을 제어해 컨트랙트의 결과를 결정할 수 있다면 수백만 달러 규모의 컨트랙트를 굳이 왜 완전히 분산화된 블록체인에서 운영할까요?

A centralized oracle is a central point of failure in the smart contract

스마트 컨트랙트에서의 중심 장애 지점은 중앙화된 오라클

직접 오라클에서 스마트 컨트랙트를 운영하는 개발팀이든 제3자 서비스에 의존하는 팀이든 두가지 상황 모두 오라클을 컨트롤하는 하나의 주체에게 스마트 컨트랙트의 결과에 영향을 미칠 수 있는 과도한 권력을 부여하게 됩니다. 중앙화된 오라클 오퍼레이터는 좋은 의도를 가지고 운영을 하겠지만 다운타임, DDOS 공격, 해킹, 의도하지 않은 무능함과 같은 오늘날 중앙화 시스템에서 존재하는 흔한 문제점 때문에 유저들의 자금을 큰 위험에 놓이게 할 수 있습니다.

스마트 컨트랙트가 보유한 가치가 커질수록 중앙 주체가 받는 심리적 압박은 더 커질 것이고 뇌물, 위협, 규제적 압박에 현혹되기 쉬운 상황에 놓입니다. 중앙화된 오라클에서는 운영하는 주체 중 한 명만 유혹에 넘어가 독자적인 행동을 해도 오라클을 위험하게 할 수 있습니다. 중앙화된 오라클 모델은 확장성이 떨어지고 신뢰할 수 있는 안전한 자동화된 컨트랙트를 실현하기 위한 탈중앙화 인프라에는 맞지 않습니다.

블록체인 합의 과정과 오라클 문제를 해결하는 방식의 차이점이 있다는 점을 고려한다면 위에 언급한 블록체인의 단점을 극복하기 위해 오라클은 다른 방식으로 블록체인과 동일한 수준의 보안 및 신뢰성을 보장해야 합니다.

체인링크: 안전하고 신뢰할 수 있는 오라클의 표준

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

  • 오픈소스(Open-source) - 오픈소스 기술을 사용해 다수의 블록체인 커뮤니티가 각자 체인링크 소스 코드 및 함수에 대한 안전 및 신뢰도를 확인할 수 있도록 하고 개선을 위해 기여할 수 있도록 함
  • 외부 어댑터(External Adapters) - 스마트 컨트랙트가 비밀번호/크리덴셜 보호 보안을 갖춘 외부 시스템 및 API로부터 데이터를 받을 수 있도록 노드가 API 키 보관 및 계정 로그인 관리
  • 탈중앙화(Decentralization) - 노드 및 데이터 소스 차원에서 탈중앙화를 실현해 하나의 노드 또는 데이터 소스가 단일장애지점이 되는 것을 방지해 유저들에게 데이터가 제시간에 전달될 것이라는 강력한 보장을 제공하고 조작을 방지함
  • 데이터 서명(Data Signing) - 노드가 스마트 컨트랙트에 데이터를 제공할 때 서명을 하도록 해 유저들이 어떤 노드가 어떤 데이터를 제공했는지 내역을 확인해 퍼포먼스 품질을 확인할 수 있도록 함
  • 서비스 계약(Service Agreements) - 요청하는 스마트 컨트랙트와 오라클 제공자 간 법적 효력이 있는 온체인 계약을 체결해 제공하는 오프체인 데이터 요청에 대한 품질을 유저들에게 보장할 수 있도록 오라클 서비스의 조건, 페널티 및 보상 명시
  • 평판 시스템(Reputation Systems) - 서명된 온체인 데이터를 평판 시스템에 입력해 유저들이 작업 성공률, 작업한 클라이언트, 평균 응답 시간 등과 같은 메트릭 정보를 바탕으로 노드에 대한 평가를 할 수 있도록 함
  • 인증서 서비스(Certification Services) - KYC, 노드의 위치 정보, 인프라의 보안 리뷰 등과 같은 주요 요소에 대한 보장을 할 수 있는 인증서를 발급해 노드가 인증서를 더 많이 취득할수록 유저들에게 더 높은 보안 및 신뢰도를 인정받을 수 있음
  • 고급 암호 기법 및 하드웨어 - 영지식증명과 같은 더 고급 암호 기법 및 TEE와 같은 하드웨어를 위한 유연성을 제공해 오라클이 스마트 컨트랙트에 제공하는 데이터의 출처를 증명 (예: 데이터a의 출처는 서버b), 오라클 자체에서 데이터를 기밀 사항으로 처리, 오프체인 계산 등과 같은 추가 기능을 실현할 수 있게 함
Chainlink features

위에 언급한 기능은 체인링크가 고도로 신뢰할 수 있고 안전한 오라클 메커니즘을 보장하기 위해 제공하는 수많은 기능 중 고작 몇 가지입니다. 향후 체인링크 교육 시리즈 포스팅에서 체인링크 네트워크에 대해 더 잘 이해할 수 있도록 각 기능에 대해 더 자세히 살펴볼 것입니다.

이러한 주요 기능을 실현하고 체인링크를 활용해 이제 스마트 컨트랙트는 결정론이라는 핵심 가치와 타협하지 않으면서 오프체인 데이터 액세스를 할 수 있고 데이터에 기반한 자동화의 미래를 함께 만들어나가는 탄탄한 토대를 마련했습니다.

향후 업로드될 포스팅에 대한 알림을 받고 싶다면 체인링크 트위터를 팔로우해주세요. 체인링크에 대한 전반적인 뉴스를 받고 싶다면 텔레그램 또는 레딧에서 함께 하거나 Discord에서 기술적 대화에 참여해주세요.

Kakaotalk: https://open.kakao.com/o/gWXAAf0b
Telegram: https://t.me/chainlink_korea
Facebook Group: https://web.facebook.com/groups/459042728150845
문의사항: korea@chain.link

GitHub: https://github.com/smartcontractkit/chainlink
Twitter: https://twitter.com/chainlinkofficial
Telegram: https://t.me/chainlinkofficial