블록체인에서 오라클은 어떤 의미인가요?
블록체인 글 읽다보면 오라클 얘기가 자주 나오는데
제가 아는 ERP 회사는 아닌것 같고
블록체인에서 오라클은 어떤 의미인가요?
쉽게 설명 부탁드려요~
우선 오라클(oracle)이란 단어를 영어 사전에 찾아보면 '신탁'이라는 의미가 있습니다. 즉 신의 계시라는 의미가 있죠. 신의 계시는 인간 세계의 밖에서 인간 세계로 신의 메시지를 보내는 것을 의미하는데, 이러한 의미를 블록체인에서는 '외부에 있는 데이터나 정보를 블록체인으로 가져오는 것, 입력하는 것'을 의미하게 됩니다.
질문자께서 말씀하신 것처럼 스마트 컨트랙트가 동작하는 과정에서 '오라클 문제'가 발생할 수 있는데요, 한 가지 예를 들어보도록 하겠습니다.
A라는 사람과 제가 내기를 한다고 가정하고 내기 결과에 따른 보상을 암호화폐로 지급하겠다고 스마트 계약을 맺었다고 해 보겠습니다. 그 내기의 내용은 이런 것입니다.
'만약에 7월 안에 아하 서비스의 월간 활성 유저 수가 100만 명을 넘는다면 A가 erc20에게 100만 AHT를 지불한다. 그 반대의 경우는 erc20이 A에게 100만 AHT를 지불한다.'
즉 erc20은 7월 안에 MAU가 100만 명을 넘는다고 예상했고, A는 넘지 못한다고 예상한 것이 되겠죠. 이때 스마트 컨트랙트로 계약할 수 있는 부분은 계약 조건을 만족할 경우 erc20과 A가 각각 상대방에게 AHT를 지불한다는 것입니다.
그렇다면 '아하 서비스의 월간 활성 유저수가 100만 명을 넘었다'라는 사실은 어떻게 확인할 수 있을까요? 그렇습니다. 이 정보나 데이터는 바로 외부에서 가져오거나 입력되어야만 하는 정보인 것입니다. 스마트 컨트랙트가 작동하기 위해 필요한 외부 정보가 존재하게 되는 것이죠.
앞서 살펴 보았듯이 오라클이 '외부에 있는 데이터나 정보를 블록체인으로 가져오는 것, 입력하는 것'을 의미한다면 신뢰할 수 있는 외부 정보, 오라클이 없이는 스마트 계약이 이행되기가 힘든 것입니다. 이것을 '오라클 문제'라고 부릅니다.
계속해서 A와 erc20이 아하의 MAU를 아하 팀에 문의해서 확인을 받았다고 가정해 보겠습니다. 그리고 100만 명이 넘었다는 답변을 들었다고 할 때, A가 erc20에게 100만 AHT를 줘야 할텐데, 갑자기 A가 100만 명이 넘는다는 것을 어떻게 믿느냐고 따집니다. 아하에서 담당자가 실수로 잘못 알려줬거나 통계가 잘못되었을 수도 있다고 따지면 erc20으로서도 어떻게 할 수가 없는 상황이 생길 수도 있습니다. 따라서 외부 정보의 신뢰성을 확신할 수 없어 스마트 계약은 여전히 체결되지 못하는 상황(오라클 문제)에 빠지게 됩니다.
그러므로 이 오라클 문제를 해결하지 않고서는 스마트 컨트랙트가 자판기 수준의 계약을 넘어 외부 정보를 활용한 계약을 체결하는 것에 한계가 생긴다고 할 수 있습니다.
그렇다면 이러한 오라클 문제를 해결하기 위한 방법에는 어떤 것이 있을까요?
중앙값을 이용하는 방법이 있습니다. 중앙 값이란 나열할 수 있는 데이터의 가장 중간에 위치한 값으로 평균값이 극단적인 데이터에 의해 왜곡될 수 있으므로 가장 중앙에 위치하는 값을 신뢰값으로 선택하는 것을 의미합니다. 앞서 예시에 적용해 보면 여러 가지 변수를 달리하여 7월의 MAU에 대한 통계를 여러번 내 봤을 때 150만이라는 값이 중간에 위치했다면 아하의 MAU가 150만을 돌파했다고 보고 A가 erc20에게 100만 AHT를 지급하는 스마트 계약을 실행하게 되는 것이 되겠습니다.
다음으로 투표를 하는 방법이 있습니다. 이 문제에 대해 AHT 홀더들이 각자 AHA 측에 문의해 보고 각자가 들은 답을 말해 줌으로써, 100만 명을 넘었다는 것과 넘지 못했다는 것 중에서 더 많은 득표를 한 사실을 신뢰할 수 있는 외부 정보로 삼게 되는 것이라고 할 수 있습니다. 이 경우 계약과 직접적인 관계가 없는 제3자들이 외부정보(오라클)에 대한 신뢰도만을 판단하게 되므로 믿을 수 있는 정보일 확률이 높아지게 됩니다. 따라서 100만 명이 넘었다는 결과가 나올 경우 A가 erc20에게 100만 AHT를 지불하는 스마트 계약이 실행되어야 할 것입니다.
끝으로 미들맨 또는 미들웨어, 중간자라고 불리는 사람의 존재를 인정하는 방법도 있습니다. 예를 들어 앞서 A와 erc20이 계약을 맺을 때 아하가 7월에 MAU 100만 명을 넘었다는 사실을 증명해 줄 수 있는 객관적인 중간자를 '아하 팀'이라고 결정했다고 해 보겠습니다. 이 경우 계약의 당사자들이 합의하고 인정하는 중간자로 '아하 팀'이 존재하기 때문에, 팀에 오라클 문제의 해결을 의뢰할 수 있는 것이죠. 즉, 신뢰할 수 있는 외부 정보를 줄 수 있는 중간자가 존재하기 때문에 오라클 문제가 발생하지 않고 스마트 계약이 실행될 수 있게 되는 것입니다.
답변이 도움이 되길 바랍니다.