Skip to Content

블록체인과 오라클 (Oracle) 문제에 대하여

Table of Contents

시작하며,

이 글에서는 스마트 컨트랙트와 블록체인의 신뢰 가능성에 커다란 영향을 끼칠 수 있는 오라클(Oracle)에 대해 다룹니다. 블록체인에 있어서 오라클이 정확히 무엇이며 어떤 역할을 가지는지, 또 오라클의 종류와 현재 개발 중인 오라클의 접근 방향은 어떤 것이 있는지 정리해 보았습니다. 저 또한 전문가가 아니므로 글에 오류나 잘못된 정보가 포함 될 수 있으니, 이에 대한 모든 피드백은 항상 환영합니다.


스마트 컨트랙트와 오라클

블록체인의 가장 큰 기능은 네트워크를 통한 개인 대 개인의 가치의 전송 가능성이다. 개인 간의 가치의 전송은 기존 뱅킹 시스템에서도 가능하지만 블록체인과 기존 금융 시스템과의 가장 큰 차이점은 시스템이 탈중앙화(De-centralized) 되어있다는 점이다. 블록체인의 합의 알고리즘은 사용자가 네트워크 구성원이 모두 믿을 수 있는 사람들이라는 것을 검증하지 않고도, 네트워크를 가치 전송에 사용할 수 있게 만들어준다. 스마트 컨트랙트는 이 가치 전송의 작동 방식을 프로그래밍 가능하게 만들어줘서 어떤 전송이 조건에 따라 이뤄지거나, 또는 이뤄지지 않게 만들어준다.

아주 간단한 스마트 컨트랙트의 예를들자면, 날씨에 따라 보험금을 지급해야 하는 경우를 생각 할 수 있다. 어떤 콘서트 주최자가 보험사에 날씨 보험을 들고, 만약 콘서트 당일 비가 온다면 보험사가 보험금을 지급하는 계약을 서로 체결하였다고 하자. 이 계약을 스마트 컨트랙트화 시키는 것은 어렵지 않을 것이다. 이미 잘 작동하고 있는 스마트컨트랙트를 지원하는 탈중앙화된 블록체인에 해당 계약 내용을 프로그래밍하고, 계약을 실행시키면 그만이다.

정말 어려운 점은 해당 조건의 발생 지점이 블록체인 내부가 아닌 외부 환경이라는 점이다. 블록체인은 체인 내부에서는 네트워크 참여자가 네트워크를 신뢰할 수 있게 보장하지만 체인 바깥의 어떤 조건이 체인에 입력으로 들어올 때, “우리가 그 입력(정보)의 근원지를 신뢰할 수 있는가?”는 블록체인의 신뢰 가능성과 다른 종류의 문제이다.


오라클은 무엇인가?

오라클

블록체인에서 오라클이란, 스마트 컨트랙트의 생성이나 실행을 위해 필요한 외부 정보를 공급하는 제 3자의 정보 공급원을 의미한다. 오라클은 데이터 소스 자체를 의미하기 보다는 데이터 소스와 블록체인 간의 중개자 (인터페이스 층) 자체를 의미한다. 오라클은 제 3자의 API에 의해 제공되는 정보를 블록체인으로 공급하는 역할 또는 블록체인 (스마트 컨트랙트)의 실행 결과에 의해 발생한 정보를 블록체인 외부의 이벤트로 연결 시키는 역할을 한다.


오라클 아주머니..

블록체인의 오라클은 탈중앙화된 블록체인 네트워크와 외부 세계와의 의사소통 또는 정보 전송의 수단이다. 본래 Oracle 이라는 단어는, 라틴어 “말하다 (to speak)“라는 뜻을 가진 ōrāre 에서 비롯되어, 선지자, 신을 대신해 말하는 자, 지혜로운 조언을 하는 자를 뜻한다. 사실 처음 오라클이라는 단어를 접했을 때는 영화 매트릭스의 오라클 아주머니가 떠올랐다. 블록체인의 오라클이 예언이나 신을 대신하여 말하는 자는 아니지만, 영화 매트릭스에 비유한다면, 블록체인을 하나의 갇힌 세계 (매트릭스 내부)로 생각하고 블록체인의 오라클을 그 외부 세계와 소통 가능한 자(오라클 아주머니)이라고 생각할 수도 있을 것이다. 사실 블록체인 내부에 사는 스마트 컨트랙트 코드 입장에서는 외부 정보의 진위를 내부 정보 만으로 판단하는 것이 힘들기 때문에, 블록체인의 오라클 또한 어떤 의미에서는 (블록체인 내부의 입장에서는) 사전적 의미의 오라클과 같다고도 할 수 있겠다.

오라클의 중요성과 오라클 문제

블록체인의 스마트 컨트랙트 실행에는 외부 세계와의 소통이 필수적이다. 또한 그 과정에서 우리는 외부 데이터를 체인 안으로 제공해 줄 수 있는 신뢰 할 수 있는 오라클 (Oracle)이 필요하다. 우리에게 이 정보제공자가 존재하지 않거나, 또는 신뢰할 수 없는 상황에서는 스마트컨트랙트의 존재 자체가 무의미해진다. 오라클이 주는 정보에 따라 스마트컨트랙트의 실행 방향이 완전히 달라질 수 있기 때문이다.

즉, 어떤 스마트 컨트랙트를 신뢰 가능한가? 라는 문제는 해당 스마트 컨트랙트의 오라클을 신뢰 가능한가? 라는 문제에 종속된다고 볼 수 있겠다. 이 종속성은 아주 심각한 문제를 야기할 수 있다. 지금껏 겨우 탈중앙화 된 신뢰의 네트워크를 만들어 두었더니, 잘못된 오라클의 선택으로 그 실행 방향이 어떤 중앙화된 (=부패 가능한) 집단에 종속되어 결정될 수 있는 것이다.

이 문제를 블록체인의 오라클 문제 (Oracle Problem)이라고 한다. 블록체인과 관련되어 이 오라클 문제를 푸는 것은 매우 중요한 문제이지만, 이 문제는 현재까지는 해결되지 않은 상태로 남아있다.


오라클의 종류

오라클은 그 형태에 따라 하드웨어/소프트웨어 오라클로 나뉘거나 정보 이동의 방향성에 따라 내향성/외향성 오라클로 종류를 나눌 수 있으며, 또한 오라클의 작동 매커니즘에 따라 중앙화/탈중앙화 오라클로 나눌 수 있다.

소프트웨어 오라클 (Software Oracle)

소프트웨어 오라클은 인터넷 네트워크 상에 존재하는 데이터들로부터 정보를 제공한다. 정보의 기원 자체가 소프트웨어일 필요는 없다. 소프트웨어 오라클이 제공할 수 있는 정보는 날씨 정보, 금융 정보, 교통 정보 등 우리가 현재 웹 상에서 쉽게 접할 수 있는 모든 정보를 포함한다. 소프트웨어 오라클은 APIs, 스크래퍼, 웹 훅을 통해 웹에서 데이터를 공급 받을 수 있고, 추출한 데이터를 검증 한 후, 블록체인에 제공한다. 현재 네트워크가 가지고 있는 연결성을 고려해 볼때, 빠르게 업데이트되고, 정보의 소스를 쉽게 구할 수 있는 가장 강력한 형태의 오라클이라고 할 수 있다.

하드웨어 오라클 (Hardware Oracle)

하드웨어 오라클은 실제 물리적 세계와 접해 있어 어떤 물리적으로 발생한 사건에 대한 정보를 스마트 컨트랙트로 전송해 주는 역할을 한다. 예시로는 RFID 태그가 달린 택배가 특정 물류 창고에 도착했을 때 관련 정보가 스마트컨트랙트로 전송 되는 것을 생각 해 볼 수 있다. 이 경우 하드웨어 오라클은 해당 물건의 운송 정보를 체인에 기록해 줄 수 있을 것이다.

내향성 오라클 (Inbound Oracle)

내향성 오라클은 정보가 정보의 발생지에서 스마트 컨트랙트로 흘러가는 형태의 정보 흐름을 갖는 오라클을 의미한다. 즉, 정보가 블록체인 세계 밖에서 안으로 이동한다. 내향성 오라클에 의해 체인안으로 제공된 오라클은 스마트 컨트랙트의 입력으로 사용되어 어떤 계약의 작동에 영향을 끼치게 된다. 외부 사건 결과에 종속되는 모든 블록체인 상의 계약이 내향성 오라클에 의존한다.

외향성 오라클 (Outbound Oracle)

외향성 오라클은 스마트 컨트랙트로 부터 외부 세계로 나가는 정보의 흐름을 갖는 오라클이다. 이를 통해 블록체인 상 스마트 컨트랙트 실행의 결과가 외부 세계 (다른 블록체인을 포함한 외부의 이벤트)에 영향을 끼칠 수 있다.

중앙화된 오라클 (Centralized Oracle)

오라클이 제공하는 정보가 어떤 중앙화된 하나의 정보 제공처에서 제공되는 경우에 이를 중앙화된 오라클이라고 할 수 있다. 서버의 중앙화 탈피를 위해 이루어진 블록체인 탈 중앙화를 함께 고려해볼 때, 이런 중앙화된 오라클로부터 블록체인이 정보를 제공받는 것은 블록체인 자체에 보안 취약점을 다시 만드는 셈이 될 수 있다.

탈 중앙화된 오라클 (Decentralized Oracle)

탈 중앙화된 오라클은 제공하는 정보를 하나의 신뢰받는 중앙 기관 또는 기업이 검증하기 보다는 어떤 탈 중앙화된 합의 프로토콜을 통해 검증하고 이를 블록체인에 제공하는 형식을 취하는 오라클이다.

연방 형태의 오라클 (Federated Oracle)

이 형태는 중앙화와 탈 중앙화 형태의 오라클 사이에 있는 것으로, 소수의 신뢰받는 노드들이 메인 정보 제공 오라클에 정보에 대한 검증을 수행하는 형식이다. 탈 중앙화된 형식보다는 보안에 더 취약하지만, 효율성은 더 높을 것이다.


오라클 패러독스 (Oracle Paradox)

위에 소개된 오라클의 타입을 보면, 오라클이 정보 소스에 더 근접할 수록 우리가 오라클에 걸어야 하는 신뢰도는 더 높아지는 것을 볼 수 있다. 중앙화된 오라클 -> 연방 형태의 오라클 -> 탈 중앙화된 오라클 순으로 정보가 데이터 소스에서부터 블록체인으로 도달하기 위해 거치는 과정이 더 복잡해진다. 대신 그 순서대로 우리가 오라클에 걸어야 하는 리스크는 줄어든다. 이를 오라클 패러독스라 한다. 100% 확률로 신뢰 가능한 오라클이 있다면 그 형태가 중앙화되어도 상관없겠지만, 현실적으로 불가능하므로 우리는 어느 정도의 효율성을 지님과 동시에 리스크가 적은 오라클을 구축해 내야만 그와 연결된 스마트 컨트랙트와 블록체인의 신뢰성 또한 지킬 수 있을 것이다.

신뢰 가능한 오라클의 구축

우리가 블록체인의 합의 및 탈중앙성에 의해 네트워크 참여자 모두를 신뢰하지 않아도 네트워크를 신뢰하고 가치 전송이 가능하듯, 신뢰 가능한 오라클을 만들 수 있는 방법 중 하나는 바로 오라클을 탈 중앙화 또는 분산화시키는 것이다.

한 가지 방법으로는, 하나의 데이터 소스를 믿고 받아들이기 보다는 완벽하지는 않지만 어느정도 신뢰 가능한 여러개의 데이터 소스로부터 데이터를 제공 받는 것이 있겠다. 그리고 그렇게 받아들여진 여러 데이터 소스의 결과로부터 우리는 어떤 사건의 진위 (이벤트의 발생 여부)를 통계적인 방법을 통해 어떤 일정 신뢰도 이상으로 판단 할 수 있을 것이다.


관련 프로젝트들

비록 이 오라클 문제를 완전히 해결하는 방안은 아직 없지만 이것을 시도하고 있는 프로젝트들은 있다. 아래 몇 가지 프로젝트들을 정리하며 소개해 보겠다.

Oraclize


Oraclize 홈페이지

Oraclize는 런던에 위치한 회사로, IPFS(Inter-planetary File System) 이나 URLs 와 같은 데이터를 블록체인과 연동 시킬 수 있는 프로토콜을 제공한다. 현재 이더리움, Rootstock, EOS, R3 Corda, Fabric 등의 스마트컨트랙트 플랫폼 블록체인과의 통신 api를 개발하고 있는 것으로 보인다. 사실 홈페이지만 보면 무언가 제대로 나온 것을 아직 찾아 볼 수 없다. 자세한 설명은 Oraclize의 문서 페이지에 가거나 Github을 살펴보면 이 회사가 개발 중인 것들과 그에 대한 설명을 더 볼 수 있다.


Oraclize Github

주로 플랫폼 블록체인들과 통신을 위한 API를 제작하는 것으로 보인다. 내가 코드의 내용을 살펴보고 이해하지는 못해서 해당 API가 어떤 기능을 수행하는지 직접 자세히는 알 수 없었다.

Oraclize의 documentation 페이지에서 이 프로젝트가 어떤 방식으로 오라클 패러독스를 해결하려 하는지 볼 수 있는데, 이들은 오라클 문제를 해결하려 하기 보다는, “신뢰되지 않는 중개자(Untrusted intermediary)“로의 역할을 택했다. 즉, 오라클이 데이터 진위여부는 판단하지 않고, 대신 그것을 체인 안으로 데이터가 변형되지 않는 것을 보장하며 전달하는 역할을 한다. Oraclize가 제시하는 매커니즘은 Authenticity Proofs라고 불리는데 이를 통해 중개하는 데이터가 변형되지 않았음을 보장 할 수 있다. 또한 Oraclize가 제공하는 API를 사용하여 데이터 타입에 크게 구애받지 않고, IFPS나 URLs를 가지고 데이터 전송이 가능하다고 한다.

Oraclize는 오라클의 신뢰 문제 부분은 건드리지 않고 먼저 체인과 외부 세계 사이의 용이한 정보의 통로를 구축하는데 더 의미를 둔 것 같다. 현재로서는 그 나름대로도 큰 의미가 있어 보인다.


Chainlink
출처 : www.smartcontract.com

체인링크는 하나의 오라클 프로토콜이라기 보다는, 탈중앙화된 오라클의 네트워크라고 할 수 있다. 체인링크라는 플랫폼에서 참여자들은 *LINK 토큰*을 대가로 어떤 데이터를 제공 받을 수 있다. 체인링크 플랫폼은 오라클들의 완전성을 위해서 서비스에 자격증명, 검증, 평판 시스템 등을 도입했다. 체인링크의 자세한 작동 매커니즘은 Chainlink White Paper 에서 찾아 볼 수 있다. White paper에서 체인링크에 대한 내용 뿐 아니라 오라클에 대한 내용도 다루고 있으니 관심 있다면 읽어보는 것도 좋을 것 같다.

Augur


Augur의 Prediction Market.
출처 : www.augur.net

Augur는 탈중앙화된 예측 시장 플랫폼인데, 내부에 정교한 오라클 프로토콜을 가지고 있다. Augur의 예측 시장은 위 그림에서 볼 수 있듯, 모든 가능한 종류의 예측들에 대한 베팅을 할 수 있는 시장이다. 이때 베팅을 하는 대상이 되는 이벤트는 당연히 체인 외부의 것들도 포함하는데, 어거 프로토콜의 전체 흐름은 다음과 같다.

  1. 어거에서는 블록체인 네트워크의 참여자가 어떤 특정 이벤트의 예측에 관련된 외부 이벤트를 게시(Report)할 수 있게 한다. 이는 어떤 종류의 Inbound Oracle이라고 할 수 있겠다. (Ex. 2019년 2월의 BTC 가격이 3000달러 밑으로 떨어질 것인가?)
  2. 해당 이벤트가 실제로 발생할 때 까지, 유저들은 이더리움을 이용해 이벤트의 결과에 대한 베팅을 한다. (Ex. 떨어질 것이다. / 떨어지지 않을 것이다.)
  3. 이벤트가 발생한 후 해당 예측 베팅은 플랫폼의 Dispute 단계로 넘어간다. 이때 유저들은 REP 토큰을 이용해서 실제 결과가 어땠는지에 대한 투표를 진행한다. 이것을 어거에서는 Validation-dispute 프로토콜이라 부르는데, 평판 토큰 (reputation tokens; REP)를 이용하여 정보 제공자들의 악의적 행위를 제한한다.
  4. 투표 결과가 한 쪽으로 결정 되면, 이벤트는 Resolved 단계로 넘어가고, 베팅한 것에 대한 이득/손실이 계산되어 분배된다.

Augur는 이벤트 예측 및 베팅 플랫폼으로만 볼 것이 아니라 내부의 일종의 투표 프로세스를 통해 외부 사건의 진위를 판단한다는데 있어서 탈중앙화된 오라클로 역할을 할 수 있다고 볼 수 있다. REP 토큰을 통해 진위 판단을 하는 프로세스 안에 어떤 세부 과정들이 들어 있는지, 예를들어 잘못 된 결과에 REP 토큰을 사용한 유저가 어떻게 손해를 입는지, 에 대해서는 자세히 알 수 없지만, 특정 조건 하에서 오라클로써의 기능이 잘 못 작동할 수 있는 가능성이 있어 보인다.

예를들어,

  • Augur 프로토콜 상 참여자가 많지 않을 때. ; 실제로 현재 Augur 웹 앱을 보면 투표에 참여하고 있는 인원이 많지 않아보인다.
  • REP 토큰의 분배가 제대로 이뤄지지 않았을 때.; 실제 REP 토큰이 어떻게 분배되어있는지 모르겠지만, 만약 Dispute 단계에서 걸 수 있는 REP 토큰의 수가 정해져 있지 않다면, 이미 많은 수의 토큰을 가진 유저가 사실을 왜곡해 버릴 가능성이 존재할 수 있다.

이런 가능성을 최소화한다면 Augur는 훌륭한 오라클 문제의 해결 대안으로 성장 가능해 보인다.

Aeternity

Aeternity는 스마트 컨트랙트와 외부 데이터 소스 간의 상호 작용 구현을 가능하게 해주는 플랫폼이다. 이 플랫폼은 블록체인과 외부 데이터 소스간의 통합을 가능하게 해주는 상태 채널 (State Channel)에 기반한다. Aeternity도 또한 평판 시스템을 가지고 있어, 여러 오라클들의 화폐로 쓸 수 있다. Aeternity 프로토콜에 대한 자세한 정보는 Whitepaper 에서 찾을 수 있다.

Rlay

Rlay는 off-chain 데이터 소스에 대한 검증을 수행할 수 있는 플랫폼을 제공한다. 또한, 일관성 증명(Proof-Of-Coherence) 방식의 합의 프로토콜을 통해 오라클들의 상태에 대한 검증을 수행할 수 있다고 한다. Rlay 프로토콜에 대한 자세한 정보는 Whitepaper 에서 찾을 수 있다. 위의 프로젝트들 보다는 비교적 시작한지 얼마 안된 프로젝트라서 그런지 관련 정보를 많이 볼 수는 없었다.


맺으며

이 글에서 진행 되고 있는 모든 오라클 관련 프로젝트를 체크하거나 각각의 프로토콜을 심도 있게 검토해 보지는 못했지만, 블록체인과 스마트 컨트랙트를 결국 외부 세계와 이어 주기 위해서는 오라클 문제의 해결이 정말 핵심적인 일임은 분명하다. 스마트 컨트랙트가 기존의 계약 과정을 대체하며 발생할 모든 매개 과정에서 오라클의 작동이 필요할 것이기 때문이다.

탈 중앙화된 개념의 오라클 플랫폼을 살펴보며, 후에는 데이터 공급자, 또는 센서를 통한 데이터 측정을 통해 그와 관련된 컨트랙트에서 수수료를 받는 방식의 수익 창출 방법도 가능할 것으로 생각된다. 결국 블록체인은 그것을 통해 내부의 데이터에 가치를 부여하고, 스마트 컨트랙트와 오라클을 통해 외부 세계와 교류하며 외부 세계에 대한 측정값들 (데이터)에 대한 가치를 부여하는 역할 또한 수행하게 될 것으로 생각된다. 또한, 오라클 문제를 해결하고 신뢰 가능한 탈 중앙화된 효율적 오라클을 구축한 프로젝트의 가치는 매우 높아질 것으로 보인다.


참조

블록체인과 오라클

관련 프로젝트들

ADA Tip Jar


글쓴이 후원하기

ADA : Ae2tdPwUPEZ5gFYWK7C9gpZe6mt2tv9Nsju578XdTDGSQHgCKxfzP6LiZiA

comments powered by Disqus