Oracles in Blockchain and It’s Decentralized Mechanism (Chapter 1)

김민석(Minseok Kim)

이태헌(Taeheon Lee)

Seoul Nat’l Univ. Blockchain Academy Decipher(Medium)

서울대학교 블록체인 학회 ‘디사이퍼(Decipher)’에서 블록체인 오라클과 그 탈중앙화 메커니즘에 대한 글을 연재합니다. 1편2편으로 나누어서 연재됩니다.

Summary

[Intro] 블록체인 서비스에서 오라클은 왜 필요한가

  • 스마트 컨트랙트의 등장과 한계

[1] 오라클 종류

  • Computational Oracle
  • Reporting Oracle
  • Jurying Oracle

[2] 중앙화된 오라클의 한계와 탈중앙화 메커니즘의 필요성

  • 중앙화된 오라클의 실패 사례

[3] Data Input 1 : 외부 정보를 가져오는 방법

  • Single User Reporting Mechanism
  • Voting Mechanism

[4] Data Judgement 2 : 정보의 옳고 그름에 대한 판단

  • Verification Game Mechanism
  • Extended Voting Mechanism

[5] 생각해볼 사항들

  • 탈중앙화가 만능은 아니다

[Intro]블록체인 서비스에서 오라클은 왜 필요한가

스마트 컨트랙트의 등장과 한계

스마트 컨트랙트는 블록체인 생태계의 핵심 기술로, 기존에 서면으로 하던 계약을 코드로 구현한 기술입니다. 스마트 컨트랙트는 계약의 내용이 투명하게 공개되고, 한번 시행한 결과는 되돌릴 수 없으며, 특정 조건을 만족했을 때 강제 실행된다는 특징을 가지고 있습니다. 이러한 스마트 컨트랙트의 투명성, 비가역성, 강제성은 많은 사람들로부터 큰 관심을 받았습니다.

예를 들어, 한국이 독일을 월드컵에서 이긴다면 A가 B에게 1,000원을 주기로 하고 스마트 컨트랙트를 만들었다고 가정해보겠습니다. 만약 한국이 독일을 상대로 이겼을 경우 이 경기의 결과 정보를 스마트 컨트랙트에 입력해준다면, A는 B에게 자동적으로 1,000원을 주기로 되어있습니다. 기존에 서면으로 계약서를 작성했을 때 A가 해당 약속을 지키지 않을 경우 B는 법원에 가서 소송을 제기해야하는데 이러한 과정은 상당한 시간과 비용이 요구됩니다. 하지만, 스마트 컨트랙트를 사용한다면 특정 조건이 만족되었을 때 자동으로 이 계약을 시행함으로써 A가 B에게 했던 약속이 자동적으로 이행됩니다.

하지만, 스마트 컨트랙트 역시 외부에서 발생한 사건을 관찰하고 그 결과값을 스마트 컨트랙트에 인풋값으로 넣어줄 주체가 필요합니다. 본 글에서는 오라클을 블록체인 외부의 정부를 블록체인 내부에 입력하는 주체라고 정의하고, 오라클의 종류와 오라클을 탈중앙화 시키기 위한 경제적 메커니즘에 대해 소개하도록 하겠습니다.

[1] 오라클의 종류

블록체인에서 오라클이 등장한이유는 블록체인 외부에서 발생한 사건의 결과 혹은 판단의 결과를 블록체인 상에 기록하는 주체가 필요하기 때문입니다. 이 때, 누가 정보를 입력하는 지도 중요하지만 어떤 정보를 입력하는 지 역시 중요합니다. 왜냐하면 입력하는 정보의 유형에 따라서 정보를 입력해주는 오라클의 개입여부가 달라질 수 있기 때문입니다. 크게 해당 오라클의 정보가 객관적 사실 판단이 필요한 지 혹은 주관적 사실판단이 필요한 지에 따라서 나눠볼 수 있고, 객관적 사실판이 가능하더라도 블록체인 내부에서 검증이 가능한 오라클인지 블록체인 생태계 외부에서 발생한 사실인지에 따라서 분류해볼 수 있습니다.

우선, 객관적인 사실을 다루면서 블록체인 내에서 연산을 진행하면서 검증이 가능한 정보를 처리하는 오라클을 Computational Oracle로 분류했습니다. 두번째로 객관적인 사실을 다루지만 블록체인 밖에서 일어난 사실 정보를 입력하는 주체를 Reporting Oracle로 분류했습니다. 마지막으로 블록체인 밖에서 일어난 사건에 대해서 특정 참가자들이 주관적인 판단을 하고 그 결과를 입력하는 주체를 Jurying Oracle로 분류했습니다.

Computational Oracle

우선, Computational Oracle은 블록체인 외부에서 컴퓨터 연산을 진행하고 그 결과를 블록체인 상에 기록합니다. 블록체인 외부에서 연산을 진행하는 이유는 해당 연산을 블록체인 내부에서 진행하기에 과도한 가스비가 예상되거나 가스비 최대 한계를 넘을 수 있기 때문입니다.

현재 이더리움에서는 EVM(이더리움 가상머신) 내 각 명령어마다 다른 수수료를 부과하고 있습니다. 따라서 실행시키는 코드에 따라서 트랜잭션을 보내는 사람이 수수료(가스비)를 지불해야합니다. 하지만, 연산양이 많아져서 과도한 가스비를 내야하거나, 혹은 한 블록에 담을 수 있는 최대 가스 한계(Block Gas Limit)을 초과할 경우 해당 연산 자체를 처리할 수 없습니다. 따라서 블록체인 내에서 연산을 하기에 너무 많다면 그 때 해당 연산을 오프체인에서 진행하고, Computational Oracle이 외부에서 연산한 결과를 블록체인 안으로 가져오는 것입니다.

Reporting Oracle

Reporting Oracle은 블록체인 외부에서 발생한 객관적 사실을 블록체인 내부에 보고합니다. 스마트 컨트랙트는 외부에서 발생하는 정보를 지속적으로 관찰하거나 어떤 사건이 발생했을때 결과값을 스스로 입력할 수 없기 때문에 이 역할을 대신 해줄 수 있는 주체가 필요합니다. 이에 Reporting Oracle은 주로 판단 결과가 명확한 객관적 사실들을 다루고 있다고 할 수 있어 오라클에서 특정 정보를 왜곡하거나 조작하지 않는 이상 객관적 사실이 기록되는 특징을 가지고 있습니다.

예를 들어, 축구 경기의 결과, 특정 시점의 달러 가격 등이 될 수 있습니다.

Jurying Oracle

Jurying Oracle은 외부에 있는 정보에 대한 가치 판단을 하고, 그 결과를 블록체인에 입력합니다. 하지만 스마트 컨트랙트는 스스로 가치판단을 할 수 없기에, Jurying Oracle 참여자들이 외부에서 발생한 사실을 바탕으로 가치판단을 해주고 그 결과를 스마트 컨트랙트에 입력해줘야합니다. 이 때, 오라클이 주로 다루는 정보는 ‘A가 B에게 제공한 서비스의 수준이 사전에 A와 B가 약속한 수준에 부합한 지에 대한 판단’ 등과 같이 오라클에 참여하는 사람들의 가치 판단이 필요한 정보들입니다.

사실판단과 가치판단 기준에 따른 오라클 분류

오라클이 다루는 정보의 유형을 사실판단 혹은 가치판단에 가까운 지에 따라 분류를 할 수 있습니다. 가치판단이 필요한 정보를 다루는 오라클일수록 오라클에 참여하는 사람들의 주관의 개입의 정도가 높아지고, 사실판단에 가까울수록 오라클은 외부의 객관적 사실(연산의 결과 혹은 결과가 분명한 사실) 을 다루기 때문에 오라클에 참여자들의 개입 정도가 상대적으로 낮습니다. 실제로 Computational Oracle을 다루고 있는 서비스의 경우에는 코드를 통해서 오라클 참가 신청, 연산 결과 보고, 이의 제기 등의 과정이 모두 자동화될 수 있습니다. 하지만 Jurying Oracle의 경우에는 오라클에 참여하고 있는 사람이 직접 판단을 내려주고 이를 일일이 블록체인에 보고를 해야하며, 이의 제기 과정에서도 다른 참여자들이 오라클 결과에 대해서 판단을 내린 다음에 직접 이의 제기 신청을 해야 합니다.

[2]중앙화된 오라클의 한계와 탈중앙화 메커니즘의 필요성

앞서 설명한 모든 오라클이 가지는 공통점이 있습니다. 바로 블록체인 외부에서 발생한 결과물을 블록체인에 기록하는 역할을 한다는 것입니다. 위 그림처럼 만약 하나의 오라클이 블록체인 외부에서 발생한 정보를 내부로 가져온다면, 그 정보를 받는 참여자들은 이 정보를 신뢰할 수 있을까요? 물론 오랜 기간 서비스를 제공해오면서 좋은 명성을 쌓아온 서비스 제공자의 경우 상대적으로 신뢰가 두터울 수 있지만, 오직 하나의 오라클이 모든 정보를 좌지우지 할 수 있다면 이는 ‘Single point of failure’가 될 위험성을 가지고 있습니다.

‘Single point of failure’는 전체 시스템의 결정을 내리는 통로가 한가지이고, 그 통로가 고장남으로써 전체 시스템이 중단되는 것을 의미합니다. 블록체인 산업에서 Single point of failure는 특정 중앙화된 부분이 개인의 이익을 위해서 자신이 처리하는 정보나 결과를 조작할 수 있는 위험성을 의미합니다. 예를 들어, 축구경기를 보고해야하는 오라클이 의도적으로 특정 경기 결과를 조작해서 보고한다면 그 결과값이 완전히 바뀔 수 있습니다.

중앙화된 오라클의 위험성을 방지하기 위해서 이를 탈중앙화하기 위한 여러 메커니즘들이 제안되어 왔습니다. 이 글에서는 오라클들을 탈중앙화시킬 수 있는 여러 경제적 메커니즘에 대해서 다루려고 합니다. 오라클 탈중앙화 메커니즘에서는 다음의 요소들이 필요합니다.

먼저 오라클을 탈중앙화시키기 위해서는 서비스 참여자들이 어떤 과정을 통해 외부 정보를 블록체인 안으로 가져오게 할 것인지에 대한 설계가 있어야 합니다. 그 다음으로는, 블록체인 안으로 들어온 정보가 과연 옳은 정보인지, 잘못된, 그릇된 정보인지에 대해서 평가하는 단계가 있어야 합니다.

1편은 여기서 마무리하고, 2편에서는 다루지 않은 데이터를 가져오는 방법과 시사점에 대한 이야기를 이어갈 예정입니다.

--

--

Matthew Minseok Kim
Decipher Media |디사이퍼 미디어

HAECHI LABS COO, Smart Contract Security, Blockchain researcher at Decipher