이더리움/이더리움과 월드 컴퓨터

[이더리움과 월드 컴퓨터] 4-1. 오라클

라이튼 2023. 4. 1. 23:56

이전글

 

[이더리움과 월드 컴퓨터] 3-2. NFT

이전글 [이더리움과 월드 컴퓨터] 3-1. 토큰 이전글 [이더리움과 월드 컴퓨터] 2-5. 솔리디티 이전글 [이더리움과 월드 컴퓨터] 2-4. 컨트랙트 계정 이전글 [이더리움과 월드 컴퓨터] 2-3. EVM 이전글 [

kwjdnjs.tistory.com

 

오라클

 이번 글에서는 온체인과 오프체인을 연결하는 기술인 오라클에 대해서 알아보겠습니다.

 

I. 온체인과 오프체인

 블록체인에 저장되는 스마트 컨트랙트코드와 각종 데이터를 온체인 데이터라고 합니다. 반대로 블록체인 외부에 저장되는 데이터를 오프체인 데이터라고 합니다.

 

 예를 들어 토큰과 NFT에 관한 데이터는 온체인 데이터이고, 현재 비트코인의 가격과 이더리움의 가격 등의 외부 정보는 오프체인 데이터입니다.

 

 만약 오프체인 데이터를 온체인에 불러오려고 한다면 어떻게 해야 할까요? 이더리움의 가격을 불러들여 사용하는 스마트 컨트랙트가 존재한다고 가정하여 한 번 생각해 보겠습니다.

 

 먼저 스마트 컨트랙트 코드는 결정론적입니다. 즉, 스마트 컨트랙트 코드는 어떤 노드가 실행하든 항상 같은 결과만을 출력해야 합니다. 만약 상황에 따라 스마트 컨트랙트 코드의 출력 결과가 다르다면, 이중 지불 문제가 발생할 것입니다. 따라서 스마트 컨트랙트 코드에서의 난수 사용은 금지되어 있습니다.

 

 이러한 상황에서 이더 가격을 오프체인에서 불러오는 API 코드를 작성한다고 가정해 보겠습니다. 노드가 스마트 컨트랙트 코드를 실행한다면 API관련 코드가 실행되어 이더 가격이 불러와질 것입니다. 여기에서 가장 큰 문제는 이더의 가격이 실시간으로 계속 변동된다는 점입니다. 이 경우 컨트랙트 코드를 실행할 때마다 값이 매번 변동되어, 결정론적이지 못하게 되어버립니다. 즉, 이중 지불 문제 등이 발생할 수 있습니다.

 

 

 이더 가격 변동 외에도 더 심각한 문제가 하나 있습니다. 바로 가격을 가져올 거래소를 선택하는 문제입니다. 암호화폐를 거래하는 거래소는 매우 많고, 각각의 거래소별로 이더의 가격은 모두 다릅니다. 따라서 이더의 가격을 가져올 경우 어떤 거래소의 데이터를 사용하고 또 어떤 거래소의 데이터를 신뢰해야 하는지에 대한 문제가 발생합니다.

 

 그렇다면 어떤 오프체인 데이터를 신뢰하고, 어떻게 온체인으로 불러와야 할까요? 이 질문에 답을 하기 위해서 오라클이라고 부르는 기술이 등장하였습니다.

 

II. 오라클

 이더리움의 오라클은 오프체인과 온체인을 연결하기 위해 개발된 기술입니다. 동명의 회사와는 전혀 관련이 없는 기술입니다.

 

 오라클은 다음과 같이 온체인과 오프체인의 중간에 위치하고 있습니다.

 

 

 오라클은 온체인과 오프체인의 중개자 역할을 하여 온체인과 오프체인을 연결합니다. 온체인의 스마트 컨트랙트가 오프체인 데이터를 오라클에게 요청하면, 오라클은 오프체인에서 데이터를 수집하여 신뢰할 수 있는 데이터를 온체인으로 보냅니다.

 

 하지만 이러한 오라클에도 문제가 있습니다. 만약 오라클의 운영자가 오프체인의 데이터가 아닌 엉뚱한 데이터를 온체인에게 전송한다면, 온체인은 잘못된 데이터를 받아들여 실행할 것입니다. 이를 악용하면 오라클 운영자가 자신에게 유리한 스마트 컨트랙트를 실행하기 위해 잘못된 데이터를 보내는 악의적인 공격도 가능합니다.

 

 이러한 문제를 해결하고자 체인링크와 같은 탈중앙화된 오라클 서비스들이 등장하였습니다. 하지만 오라클에 관한 문제는 아직 완전히 해결된 문제가 아니기 때문에 여전히 논의되고 있습니다.

 

 지금까지 오라클에 대해 알아봤습니다. 감사합니다.

 

 

다음글

 

[이더리움과 월드 컴퓨터] 4-2. 레이어2와 롤업

이전글 [이더리움과 월드 컴퓨터] 4-1. 오라클 이전글 [이더리움과 월드 컴퓨터] 3-2. NFT 이전글 [이더리움과 월드 컴퓨터] 3-1. 토큰 이전글 [이더리움과 월드 컴퓨터] 2-5. 솔리디티 이전글 [이더리

kwjdnjs.tistory.com