오라클이란 무엇인가?
오라클
그리스 로마 신화에서 유래된 오라클(Oracle)은 본래 신과 직접 소통하여 신탁을 전달해 주는 예언자로, 블록체인에서는 블록체인 밖에 있는 데이터를 블록체인 안으로 전달하는 것을 말합니다.
쉽게 예를 들어보겠습니다. 축구 경기가 이루어지기 전에 결과를 예측하여 배팅한 이들에게 경기 후 보상을 지급한다는 스마트 컨트랙트를 작성했습니다. 오라클은 이 스마트 컨트랙트에 경기 결과를 전송하여 적절한 보상이 이루어질 수 있도록 알려주는 역할을 하는 것입니다.
오라클 문제
오라클 문제(Oracle Problem)는 블록체인 밖의 데이터를 블록체인에 기록할 때 생성될 수 있는 문제로, 오라클 현상 혹은 연결성 문제라고도 이야기합니다.
문제는 블록체인 밖에 있는 데이터인 오프체인(off-chain)을 온체인(on-chain) 형태로 기록할 때 발생합니다. 일반적으로 블록체인 안에 있는 온체인 데이터, 블록체인 밖에 있는 데이터를 오프체인 데이터라고 합니다.
블록체인에 기록된 온체인 데이터는 위변조가 어렵습니다. 하지만, 블록체인 밖의 오프체인(off-chain) 데이터를 바탕으로 스마트 컨트랙트를 실행할 때, 현실 세계의 데이터 진위 여부에 대한 문제가 야기될 수 있습니다.
앞서 말한 축구 경기 배팅 스마트 컨트랙트를 다시 예로 들어보겠습니다. 결과를 예측하여 자신이 예상하는 우승팀에 배팅을 진행하는 과정은 블록체인 상에서 이루어지기 때문에 아무런 문제가 발생하지 않습니다. 문제는 경기 결과를 블록체인 안으로 전송할 때 발생합니다. 누군가 악의적으로 경기 결과를 조작하여 잘못된 정보를 입력하게 되는 경우 블록체인 전체에 대한 신뢰성이 무너지는 문제가 발생할 수 있습니다.
오라클 문제 해결방법은?
오라클 문제를 해결하기 위해 센서와 같은 데이터의 입력을 처리하는 하드웨어 오라클과 현실 세계의 데이터를 처리해주는 소프트웨어 오라클이 존재합니다. 일반적으로 오라클 문제를 해결하기 위해서는 투표, 중앙값, 중간자를 두어서 해결하는 방식을 취하고 있습니다.
1) 투표
투표는 외부의 데이터를 투표자들이 검증해 주고, 그 결과가 문제가 없는 경우 검증자들에게 인센티브를 제공하는 방식입니다. 데이터의 신뢰성을 유지하기 위해서 검증자들에게 의존하는 구조입니다.
2) 중앙값
중앙값은 현실 세계에 존재하는 다양한 데이터 가운데 중앙값(median)을 선택하는 것으로, 여러 데이터들을 취합하여 한가운데 있는 값을 의미합니다. 평균값과는 조금 차이가 있습니다. 예를 들어 1, 2, 3, 5, 9의 값이 있다면 평균은 4이지만, 중앙값은 3이 됩니다.
3) 중간자
중간자(middleware)는 블록체인과 현실 세계의 사이에 신뢰할 수 있는 데이터를 제공해 주는 중간자를 두고서 해결하는 방법입니다. 보통 금융, 날씨 데이터들을 수집하는 일정한 규모와 조직을 갖춘 기업 단체가 중간자 역할을 맡으며, 중간자가 제공한 데이터를 블록체인에 기록하는 방식을 취합니다.