[케블리] #39. 블록체인, 오라클

in #kr6 years ago

블록체인, 오라클



Source : Decenter.org


1. 블록체인에서 오라클(Oracle)이란?


블록체인 관련 글을 읽다보면 오라클(oracle)이라는 단어가 자주 등장합니다. IT관련 종사자라면 오라클은 "데이터베이스를 회사인가?" 라고 오해 할 수도 있습니다. 블록체인에서 오라클은 블록체인 밖의 데이터를 블록체인 안(On-chain)으로 가져오는 것을 의미합니다. 현실세계와 블록체인간의 연결고리를 의미하기도 하고 더 자세히 얘기하면 스마트 컨트랙트를 사용 할 때 필요한 체인 밖의 데이터를 가져오는 행위를 얘기합니다.

블록체인에서 오라클이 중요한 이유는 블록체인의 비가역적인 특성 때문입니다. 비가역적이란 쉽게 얘기해서 되돌릴 수 없다는 뜻입니다. 한번 스마트 컨트랙트가 발생하게 되면 되 돌릴수가 없는데 올바르지 않은 오라클로 인해 스마트 컨트랙트가 잘 못되게 된다면 큰 문제를 야기할 수 있기 때문입니다. 그래서 블록체인에서 오라클을 잘 설계하는 것은 매우 중요한 일입니다.

2. 오라클 문제


스마트 컨트랙트를 통해서 비행기가 지연되면 보상을 해주는 보험 DAPP이 있다고 가정해봅시다. 이 DAPP은 비행기가 실제 이륙하는 시간을 정확히 측정하여 그 데이터를 블록체인으로 가져와 원래 이륙 시간과 비교하여 스마트 컨트랙트를 통해 자동으로 보험금을 지급해 주는 시스템입니다. 여기서 비행기의 실제 이륙하는 시간을 블록체인으로 가져오는 것이 오라클입니다. 이때, 많은 문제가 발생할 수 있습니다.

  1. 중앙화된 기관이 있는 것이 아니므로 누구에게서 데이터를 받아와야 지

  2. 이렇게 받아온 데이터(이륙 시간)을 신뢰할 수 있는 지

  3. 전송 과정에서 위변조 가능성이 있는 지

여기서 무엇하나라도 잘못된다면 엉뚱하게 보험금이 지급될 가능성이 있고, DAPP자체를 무너뜨릴 수도 있는 문제 입니다.이렇게 외부 데이터를 블록체인에 가져올 경우 때 여러가지 문제가 발생 할 수 있습니다. 이걸 오라클 문제(Oracle problem)라고 합니다. 오라클 문제의 핵심은 크게 다음과 같습니다.

3. 실제 발생할 수 있는 오라클 문제


(1) 미래 예측시장 DAPP

Augur, Gnosis 와 같은 미래 예측 시장은 미래의 발생된 일을 예측해보고 결과를 맞추면 보상을 받는 시스템입니다. 미래의 결과 데이터를 블록체인으로 받을 때, 오라클 문제가 발생할 수 있습니다.

(2) 보험

자동차 보험 DAPP이라고 가정한다면 다음과 같은 일이 발생할 수 있습니다. 자동차 과속 센서를 오라클로 받을 수 있는데, 그 측정 과정에서 센서를 조작하여 데이터를 위변조 할 수도 있고, 블록체인으로 전송과정에서 위변조 될 가능성 도 있습니다.

(3) 에너지 거래 DAPP

에너지 거래를 하는 DAPP에서 실제 에너지가 오고 가는 것은 블록체인 밖에서 일어나는 일입니다. 토큰이 오고 간 후에, 실제 에너지를 전송을 해야합니다. 하지만 에너지를 전송하지 않고 전송했다고 결과만 전송하는 등의 오라클 문제가 발생 할 수 있습니다.

(4) 유통망 (Supply chain)

블록체인으로 supply chain을 개선하는 것은 오라클 때문에 어려움이 매우 많습니다. 사과를 유통한다고 할 때, 사과 자체에 데이터를 심을 수 없기 때문에 중간에 실제 물건을 바꿔버려면 방법이 없기 때문입니다.

4. 오라클 모델


실제로 Dapp을 만들면서 완벽한 오라클 모델을 만드는 것은 매우 어려운 일입니다. 하지만 많은 프로젝트들은 다양한 방법으로 오라클 모델을 만들고 있습니다. 아직 완벽한 정답은 없지만, 몇 몇 프로젝트에서 시도하고 있는 방법을 소개해드리고자 합니다.

[1] 토큰 보유자의 투표를 통한 해결


(1) 에어스왑(Airswap) - 탈중앙화 거래소

에어스왑(Airswap)은 P2P 형태로 1:1로 토큰을 서로 교환 하는 형태의 탈중앙화 거래소 입니다. 1:1로 매칭이 된 후 토큰을 거래할 때, 교환 비율이 어떻게 되는지 토큰의 가격을 외부(블록체인 밖)에서 받아와야 합니다.

에어스왑은 에어스왑의 토큰(AST)을 보유하고 있는 사람들이 올바른 오라클인지 투표를 통해 결정합니다. 올바른 결정을 하지 않으면 네트워크 전체의 손해이기 때문에 올바른 투표를 하도록 유도하는 방식입니다.

(2) 어거(Augur) - 미래 예측 시장

어거(Augur)는 미래 예측 시장으로 미래에 일어날 일을 예측하고 맞추면 보상을 받는 시스템 입니다. 예측한 일의 결과 데이터를 외부(블록체인 밖)로 부터 받아와야 합니다. 어거 또한 어거의 토큰(REP)를 보유하고 있는 자들이 올바른 오라클인지 투표를 통해 결정하고 올바른 결정이면 인센티브를 받습니다. 잘못된 결정은 네트워크의 가치를 하락 시킬 수 있기 때문에 올바른 투표를 하게 합니다.

[2] 다양한 데이터의 중위값을 선택


(1) Maker - 안정화 토큰

안정화 토큰인 Dai를 발급 받을때, 이더리움을 담보로 합니다. 이때 Eth/usd 의 가격을 기반으로 합니다. 이 데이터를 블록체인 내에서 확인 할 수 없기 때문에, 외부(블록체인 밖)으로 부터 받아와야 합니다.

Maker는 이 시세 정보를 여러 암호화폐 거래소로 부터 받아옵니다. 그리고 medianizer라는 스마트 컨트랙트를 통해서 중위값을 구해냅니다. 이런 방법으로 오라클을 받아옵니다. 이 모델은 여러 거래소가 담합하여 악의적으로 행동한다면 문제가 생길 수 있습니다.

[3] 미들 웨어



Source : Oraclize.it

오라클 모델을 만드는 것은 매우 어렵기 때문에, 오라클만을 제공해주는 미들웨어들이 생기기 시작했습니다. 이런 미들웨어는 금융데이터, 날씨데이터 등 측정가능한 여러 데이터들을 측정하여 스마트 컨트랙트에 사용하기 쉽게 API 형태로 제공해줍니다. 스스로가 신뢰할 만한 3자가 되어 오라클을 제공하는 것입니다. 대표적인 미들웨어로는 Oraclize, Chainlink등이 있습니다. 이런 미들웨어는 중앙화 문제가 발생할 수 있습니다.

5. 마치며


Garbage In Garbage Out

컴퓨터 과학에서 정말 많이 쓰이는 용어입니다. 쓰레기가 들어오면 쓰레기가 나온다. 오라클 역시 같습니다. 스마트 컨트랙트를 이용할때 '쓰레기' 오라클이 들어오면 그 스마트 컨트랙트는 '쓰레기'와 같아집니다. 그래서 오라클을 제대로 설계하는 것은 매우 중요합니다. 그렇지 않으면 서비스 자체의 무의미해지기 때문입니다. 현재 완벽하게 오라클 문제를 해결하는 솔루션이 있는 것은 아닙니다. 많은 프로젝트들은 저마다의 방법에 맞게 설계하고 실험하고 있습니다. 그러나 간혹 백서를 보다 보면 오라클에 대해 고민한 흔적이 들어나지 않는 경우가 많습니다. 블록체인 프로젝트를 앞으로 준비하실 예정이라면,오라클에 대해서 많이 생각해주셨으면 합니다. 읽어주셔서 감사합니다:)

Sort:  

잘읽고 갑니다 즐거운 하루되세요🤗

감사합니다^^ 즐거운하루 보내세요:)

감사합니다...

Congratulations @kblock! You have completed some achievement on Steemit and have been rewarded with new badge(s) :

Award for the number of posts published

Click on any badge to view your own Board of Honor on SteemitBoard.

To support your work, I also upvoted your post!
For more information about SteemitBoard, click here

If you no longer want to receive notifications, reply to this comment with the word STOP

Upvote this notification to help all Steemit users. Learn why here!

오라클에 관해 잘 배우고 갑니다~^^

감사합니다:) 자주 놀러와주세요~

좋은글 감사합니다 팔로우하고갑니다~

개념정리의 달인^^

잘배우고 갑니다. 감사해요~!

너무나 좋은 내용입니다. 감사합니다.

멋지네요 재미있게 보고 있습니다 ^^

Coin Marketplace

STEEM 0.28
TRX 0.12
JST 0.033
BTC 70013.82
ETH 3766.83
USDT 1.00
SBD 3.80