신뢰의 샘 찾기: 예언기 원리, 유형, 현황 및 발전 방향 이해하기
이 글은 19년 10월 9일 체인문에 게시되었으며, 내용은 다음과 같습니다: 우웨이롱(Genaro CTO), 리화, 내용 정리: 리화
컴퓨터 시스템과 마찬가지로 블록체인의 작업도 데이터를 처리하는 것입니다.
데이터 출처는 두 가지가 있습니다. 하나는 블록체인에 이미 존재하는 데이터, 예를 들어 계정의 ETH 수량입니다. 다른 하나는 블록체인에 존재하지 않는 데이터, 예를 들어 ETH 가격입니다. 블록체인 시스템은 어떻게 자체 외부의 데이터를 얻을까요? 그것은 오라클(Oracle)을 통해 가능합니다. 계약이 체인 외부의 데이터가 필요할 때, 오라클에 요청하고, 오라클은 체인 외부에서 이 데이터를 얻어 계약에 전달합니다.
이렇게 보면 오라클은 매우 중요합니다. 오라클이 없다면 블록체인의 발전은 체인 상의 소량의 자산 데이터만 사용할 수 있는 범위로 제한됩니다. 이는 분명히 우리가 기대하는 바와는 다릅니다. 그러나 중요한 것이 반드시 시스템 발전의 핵심 요소는 아닙니다. 예를 들어, 산소는 인류에게 가장 중요할 수 있지만, 그것은 거의 우리에게 문제를 일으키지 않습니다.
인터넷과 블록체인을 비교해 보겠습니다. 분명히 인터넷의 데이터 출처도 거의 "망 외부"(체인 외부)입니다. 인터넷도 데이터의 "상망"(체인 상) 문제를 가지고 있지만, 왜 인터넷은 오라클 문제에 직면하지 않았을까요?
그 이유는 인터넷의 애플리케이션이 망 외부에서 데이터를 읽을 수 있는 반면, 블록체인 애플리케이션은 합의 요구로 인해 오라클을 통해 일관된 체인 외부 데이터를 읽어야 하기 때문입니다. 실제로 체인 상의 애플리케이션은 누구나 쉽게 자신만의 오라클을 작성하여 체인 외부 데이터의 인터페이스로 사용할 수 있습니다. 핵심 문제는 사용자가 이 오라클이 제공하는 데이터를 믿는가입니다.
근본적으로, 그 이유는 전통적인 인터넷이 중앙 집중식 구조를 가지고 있기 때문입니다. 이러한 시스템에서 사용자는 해당 중앙 집중식 기관을 선택하면, 이 기관이 제공하는 데이터를 믿어야 합니다. 데이터에 대한 신뢰 문제는 중앙에 대한 신뢰 문제로 전이됩니다. 데이터의 "상망"은 중앙 집중식 서버가 스스로 수행합니다. 물론 사용자는 신뢰하지 않기로 선택할 수도 있습니다.
반면 블록체인은 분산 구조입니다. 우리는 신뢰가 필요 없는(trustless) 시스템을 구축하고자 합니다. 신뢰는 투명한 메커니즘과 해당 메커니즘의 오픈 소스 코드 구현에 기반합니다. 이렇게 되면 중앙 집중식 기관은 사용자의 신뢰 요구를 이용하여 독점적인 높은 벽을 세우고, 그 안에서 "마음대로" 행동할 수 없습니다.
오라클 문제의 본질은 다음과 같습니다: 오라클을 통해 체인 상의 데이터를 가져오는 것은 어렵지 않으며, 간단한 읽기 및 쓰기 작업으로 체인 외부의 데이터를 체인 상의 계약에 "제공"할 수 있습니다. 그러나 신뢰를 생산하는 것은 어렵습니다. 오라클은 기술과 메커니즘의 설계를 통해 자신이 제공하는 데이터가 사용자 신뢰의 요구를 충족하도록 해야 합니다.
따라서 기능적으로 보면 오라클은 데이터 문제를 해결하지만, 본질적으로 오라클이 해결해야 하는 것은 신뢰 문제입니다. 이것이 바로 인터넷이 "데이터 상망" 문제를 겪지 않는 이유와 블록체인이 "데이터 상链" 문제를 겪는 이유입니다.
블록체인이 체인 외부 데이터를 사용하여 더 많은 방향의 애플리케이션을 탐색하고 구현해야 할 때, 오라클은 "신뢰할 수 있는 데이터"에 대한 요구를 충족해야 합니다. 따라서 "블록체인 인프라"라는 주제에 대한 논의에서 우리는 오라클을 그 중 하나로 선택했습니다.
1. 오라클의 설계 사고
오라클의 핵심이 신뢰 문제를 해결하는 것임을 알게 되면, 다양한 오라클의 설계 사고에서 주요 차이점은 "신뢰 생산 메커니즘"의 차이에 있다는 것을 이해할 수 있습니다.
신뢰의 출처에 따라 현재의 주류 오라클을 다음 세 가지로 나눌 수 있습니다:
- 신뢰할 수 있는 중앙에서 데이터를 제공하는 경우, 예를 들어 Provable (원래 Oraclize).
- 분산된 노드에서 데이터를 제공하는 경우, 예를 들어 Chainlink.
- 신뢰할 수 있는 연합에서 데이터를 제공하는 경우, 예를 들어 Maker의 오라클.
다양한 유형의 오라클의 구체적인 구현을 소개하기 전에, 다음 몇 가지 사항은 주의해야 하며, 또는 우리가 생각하고 논의할 가치가 있습니다:
- 오라클의 역할은 "진짜 데이터"를 제공하는 것이 아니라 "신뢰할 수 있는 데이터"를 제공하는 것입니다. "진짜"는 주관적인 개념이며, 평가하기 어려운 개념입니다. 세상에 "진짜"를 보장할 수 있는 도구는 없을 것이며, 오라클에게 그러한 기능을 수행하게 하는 것은 비현실적입니다. 우리는 진짜를 보장하는 메커니즘을 설계할 수는 없지만, 신뢰도를 높이는 메커니즘을 설계할 수 있습니다. 오라클에게 진짜를 요구하면, 오라클 무용론과 블록체인 무용론에 빠지기 쉽습니다. 왜냐하면 그것들은 실제로 우리의 진짜 요구를 충족할 수 없기 때문입니다.
- 다양한 애플리케이션 시나리오는 신뢰에 대한 요구가 다릅니다. 모든 데이터가 최고 수준의 신뢰 보장 하에 체인에 올라가야 하는 것은 아닙니다. 이는 신뢰의 비용 문제와 데이터 신뢰의 중요성, 데이터 조작의 동기 등 여러 차원과 관련이 있습니다.
- 다양한 애플리케이션 시나리오에서 신뢰의 출처/지지는 다릅니다. 즉, 특정 신뢰 생산 메커니즘이 구현한 신뢰가 최적이라고 생각할 수 없으며, 어떤 메커니즘이 구현한 신뢰가 나쁘다고 할 수 없습니다.
이렇게 되면, 오라클 프로젝트를 관찰할 때 중요한 초점은 그것이 어떻게 신뢰를 생산하는지, 그리고 그것이 제공하는 신뢰가 그것이 서비스하는 애플리케이션 시나리오의 요구를 충족할 수 있는지를 살펴보는 것입니다.
오라클의 설계는 또 다른 중요한 문제인 데이터 출처 문제와 관련이 있습니다. 즉, 오라클의 데이터 제공자가 데이터를 어디서 가져오는가입니다. 이는 두 가지 유형으로 나눌 수 있습니다. 하나는 단일 데이터 출처에서 데이터를 가져오는 것이고, 다른 하나는 여러 데이터 출처에서 데이터를 가져오는 것입니다.
2. 오라클의 구체적인 구현
신뢰의 출처에서 시작하여 다양한 유형의 오라클의 구체적인 구현을 살펴보겠습니다.
오라클은 블록체인의 중요한 기반 시설이지만, 오라클은 "신비로운" 기술이 아닙니다. 그것이 하는 일은 체인 외부의 데이터를 체인 상의 애플리케이션에 제공하는 것입니다. 오라클이 어떤 형태이든, 데이터 제공자의 다양한 구현 형태일 뿐입니다.
우리는 작은 마을을 상상할 수 있습니다. 마을에는 시간을 표시하는 큰 시계(데이터 출처)가 있고, 그곳에 한 명의 맹인이 살고 있습니다(블록체인 애플리케이션). 맹인은 시간을 알고 싶지만 큰 시계를 볼 수 없기 때문에, 누군가가 시계의 시간을 알려줘야 합니다. 그 사람이 바로 오라클입니다.
1. 신뢰할 수 있는 중앙에서 데이터 제공
만약 마을에 10명의 맹인이 살고 있고, 시간이 이들에게 매우 중요하다면, 오라클은 사업이 될 수 있습니다. 맹인이 매번 이 사람에게 시간을 물어볼 때마다 1달러를 줘야 하고, 10명의 맹인이 각각 하루에 10번 물어본다면, 그는 하루에 100달러를 벌 수 있습니다.
이 사람이 직접 큰 시계를 보고 시간을 알려준다면, 우리는 이러한 방식을 신뢰할 수 있는 중앙에서 데이터를 제공하는 것으로 부릅니다. 이 경우, 맹인들이 이 사람을 선택하는 전제는 그가 자신들을 속이지 않을 것이라는 믿음입니다. 따라서 이 사람은 자신이 신뢰할 수 있는 존재임을 증명해야 합니다.
일종의 중앙 집중식 오라클의 신뢰 보장은 "진실성 증명 기술"입니다. 예를 들어 Provable이 있습니다. 이들은 TLSNotary 알고리즘을 사용하여 반환된 결과마다 수정되지 않은 증명을 제공할 수 있습니다. 즉, 계약에 제공된 데이터가 특정 시점에서 데이터 출처의 올바른 데이터임을 나타낼 수 있습니다.
Town Crier도 이러한 유형의 오라클에 속합니다. 이 오라클은 인텔 SGX(소프트웨어 보호 확장) 아키텍처를 사용하여 코드가 블랙박스와 유사한 환경에서 실행되도록 하여 데이터가 변조되는 것을 방지하는 하드웨어 기반의 신뢰 제공 방식입니다.
이러한 유형의 오라클은 기술 문제, 예를 들어 TLSNotary 알고리즘의 부족, 단일 실패 문제, 데이터 출처 위험 문제 등과 같은 자체적인 약점을 가지고 있지만, 저비용, 고효율 등의 장점도 있으며, 진실성 증명 기술은 계속 발전하고 있습니다.
중앙 집중식 존재이지만, 이러한 유형의 오라클은 상업화되어 있으며, 그들은 데이터 제공만을 수행하고, 데이터의 안전성은 그들의 발전과 직접 관련이 있습니다. 따라서 그들은 악의적인 동기가 비교적 적습니다.
기술을 통해 신뢰를 제공하는 오라클 외에도 또 다른 유형의 신뢰할 수 있는 중앙 오라클이 있습니다. 만약 마을의 큰 시계에 알림 기능이 추가된다면 어떻게 될까요? 맹인이 큰 시계 옆에 가서 버튼을 누르면, 큰 시계가 현재 시간을 직접 알려줍니다.
블록체인이 특정 권위 기관(예: 국가 기관, 은행 등)의 데이터를 필요로 할 때, 해당 기관이 스스로 오라클을 구축하여 데이터를 제공하는 것이 좋은 방법일 수 있습니다. 이때 중요한 것은 오라클의 기술이 아니라 데이터 출처 자체가 인터페이스를 개방할 의지가 있는가입니다. 신뢰의 출처는 오라클의 설계가 아니라 해당 기관 자체입니다.
이는 체인 외부의 신뢰를 체인 상으로 이어주는 방식으로, 전통적인 신뢰 생산 메커니즘에서 오는 신뢰를 믿는 것입니다. 비록 고도로 중앙 집중화되어 있지만, 적어도 상당한 역사적 기간 동안 긍정적이고 중요한 의미가 있습니다. 예를 들어 대출, 상업 대출의 경우에서 그렇습니다. 블록체인은 다른 모든 신뢰 생성 방식을 부정하려는 것이 아닙니다.
국가 기관을 예로 들면, 이러한 유형의 오라클의 특징을 쉽게 이해할 수 있지만, 이 범주에서도 특정 데이터 요구를 충족하기 위해 상업적 유형의 데이터 출처 및 오라클이 등장할 수 있습니다. 이러한 데이터는 종종 대량의 특수 데이터 계산 결과이며, 전문 기관만이 이러한 데이터 결과를 제공할 수 있습니다.
2. 분산된 노드에서 데이터 제공
오라클이 해결해야 하는 것은 신뢰 문제입니다. 신뢰할 수 있는 중앙에서 데이터를 제공하는 오라클은 기술을 통해 자신의 신뢰를 증명/보장하는 반면, 분산된 노드에서 데이터를 제공하는 오라클은 메커니즘 설계를 통해 자신의 신뢰를 보장합니다. 후자는 종종 탈중앙화 오라클, 탈중앙화 오라클 네트워크라고 불립니다.
작은 마을로 돌아가 보겠습니다. 탈중앙화 오라클 네트워크는 마을의 모든 사람이 시간을 알리는 데 참여할 수 있는 것을 의미합니다. 맹인이 시간을 물어보면, 이러한 참여자/노드가 자신이 본 시간을 통계원에게 알려주고, 통계원은 가장 많은 사람에게서 받은 시간을 맹인에게 전달합니다.
이러한 오라클의 설계 사고는 블록체인의 분산적 사고와 일치하므로, 블록체인 애플리케이션에 새로운 신뢰 유형을 추가하지 않습니다. 새로운 신뢰 유형을 추가하지 않으면, 사안의 복잡성이 높아지지 않습니다. 그러나 이 방법에도 한계가 있습니다. 상대적으로 비쌀 수 있으며, 많은 참여자에게 비용을 지불해야 하므로 네트워크 규모가 필요합니다. 참여자의 수와 질은 데이터의 신뢰성과 관련이 있습니다.
Chainlink는 이러한 유형의 오라클입니다. 아래 그림과 같이, 분산된 오라클 노드/오라클 서비스 제공자는 분산된 데이터 출처에서 데이터를 가져와 Chainlink의 체인 상 집계 계약에 제출합니다(중장기 전략에서 가스 비용 절감을 위해 체인 외 집계로 변경될 예정입니다). 이 계약은 알고리즘을 통해 데이터 결과를 계산하고, 결과를 데이터 요구를 제기한 블록체인 애플리케이션에 전달합니다.
Chainlink에서 오라클 서비스 구매자는 먼저 자신의 서비스 수준을 지정하고, Chainlink가 그에 맞는 오라클 노드를 매칭합니다. 여기에는 노드의 질과 수가 포함됩니다.
예를 들어, 구매자의 계약이 10만 달러의 DeFi 시장이라면, 5개의 오라클 노드를 선택하여 네트워크를 구성해야 할 수 있습니다. 만약 해당 계약이 100만 달러의 시장으로 성장한다면, 15개의 오라클 노드를 선택해야 할 수 있습니다. Chainlink의 작업 방식은 사용자 요구에 따라 맞춤형 동적 오라클 네트워크를 제공하는 것입니다.
위에서 언급한 전문 오라클 프로젝트 외에도 예측 시장, 예를 들어 Augur도 탈중앙화 오라클의 한 유형으로 간주될 수 있습니다. 왜냐하면 그 예측 결과를 블록체인 계약의 입력 데이터로 사용할 수 있기 때문입니다. 각 예측 참여자는 오라클 노드이며, 이 참여자들은 동시에 데이터 출처 자체이기도 합니다.
예측 시장이 제공하는 오라클 기능은 다른 유형의 오라클이 대체할 수 없는 고유한 특성을 가지고 있습니다. 예를 들어, 어떤 중앙 집중식 신뢰에도 의존하지 않으며, 감정과 지식을 표현하는 데이터를 제공할 수 있습니다. 예측 시장은 미래에 독특한 오라클 애플리케이션 시나리오를 가질 수 있습니다. 그러나 그 약점도 두드러집니다. 오라클 네트워크를 구성하는 노드 수에 대한 높은 의존성과 데이터 제공의 효율성이 낮습니다.
3. 신뢰할 수 있는 연합에서 데이터 제공
어떤 애플리케이션이나 특정 애플리케이션이 체인 외부 데이터에 대해 높은 빈도와 높은 품질의 요구가 있을 때, 시장의 오라클이 이러한 요구를 충족하지 못할 경우, 예를 들어 보안성이 충분하지 않거나 비용 대비 효율성이 좋지 않을 때, 이러한 애플리케이션은 자신의 특별한 요구를 충족하기 위해 전용 오라클이 필요할 수 있습니다. 신뢰할 수 있는 연합에서 데이터를 제공하는 방식은 이러한 시나리오에 적합한 설계 사고입니다.
"신뢰할 수 있는 연합에서 데이터 제공"은 "분산된 노드에서 데이터 제공"의 특별한 형태입니다. 그 특별함은 오라클 네트워크를 구성하는 노드가 지정된다는 점입니다. Maker의 V2 버전 오라클은 이 유형으로 분류될 수 있으며, 그 노드는 익명의 개인 가격 제공자 외에도 0x, dYdX, Set Protocol, Gnosis 등과 같은 지정된 가격 제공 기관을 포함할 수 있습니다.
이전 두 유형의 오라클에 비해 이 유형의 오라클의 신뢰 구성은 상대적으로 복잡합니다. 시스템의 메커니즘 설계에 대한 신뢰, 노드에 대한 신뢰는 노드 자체의 이해관계자 신분과 노드 자체의 기관 평판에서 크게 기인합니다. 노드를 선택하는 Maker와 Maker 자체 메커니즘에 대한 신뢰도 포함됩니다.
연합(노드 및 노드 선택 메커니즘)에 대한 신뢰는 중앙 집중화의 색채를 띠지만, 바로 이러한 중앙 집중화가 특정 시나리오에서 "높은 비용 대비 효율성"의 신뢰를 생성할 수 있습니다. 따라서 실제 애플리케이션에서 이러한 유형의 오라클은 특히 블록체인 산업 발전 초기, 상업화된 오라클이 충분히 성숙하지 않은 상황에서 실용적인 데이터 상망 방식이 될 수 있습니다.
Maker의 오라클은 Maker가 주도하지만, DeFi 분야의 신뢰할 수 있는 데이터 요구를 충족할 수 있기 때문에 다른 계약에서도 이 오라클을 사용하고 있습니다. 우리는 또한 제3자가 제공하는 신뢰할 수 있는 연합의 오라클 서비스가 DeFi 분야에서 신뢰받는 기관/노드로 구성된 오라클 네트워크를 제공하여 분산 금융에 전문 데이터를 제공할 수 있다고 상상할 수 있습니다. 블록체인이 새로운 애플리케이션 시나리오를 생성한다면, 해당 분야의 신뢰할 수 있는 노드로 구성된 연합형 오라클 서비스가 필요할 수도 있습니다.
3. 발전의 길
블록체인이 발전할수록 체인 외부 데이터에 대한 요구가 더욱 강해지고, 오라클의 중요성도 더욱 부각될 것입니다. 그러나 앞서 논의한 것처럼, 오라클 분야에서 더 큰 가능성은 다양한 형태가 공존하는 시장이 나타나는 것입니다. 우리는 중앙 집중식에서 연합식, 다시 분산식으로 가는 것이 데이터 제공자의 입자 크기가 커지는 것에서 작아지는 것이라고 생각할 수 있으며, 서로 다른 입자 크기는 그들의 속성을 다르게 하며, 각기 다른 서비스 시나리오에 적합하게 만듭니다.
오라클이 분산된 노드 네트워크로 구성될 수 있지만, 블록체인과 오라클을 바라보는 관점과 평가 기준은 다릅니다. 블록체인은 탐색적인 작업을 수행하며, 주로 "이 문제를 내가 해결하는 것이 적합한가?"라는 질문을 합니다. 반면 오라클은 기능적인 작업을 수행하며, 주로 "이 문제를 어떻게 해결할 것인가?"라는 질문을 합니다.
따라서 오라클의 설계는 사용성과 실용성을 추구합니다. 그것은 요구에만 서비스를 제공하고 비전에는 서비스를 제공하지 않습니다. 가장 쉽게 이해할 수 있는 점은 그것이 비용 대비 효율성을 추구해야 한다는 것입니다.
신뢰 문제를 기술과 메커니즘을 통해 해결해야 할 뿐만 아니라, 오라클의 설계는 데이터의 프라이버시 문제, 해킹 공격 방지 능력 문제 등 여러 다른 측면도 포함됩니다. 이러한 요소들은 오라클의 사용성과 관련이 있습니다. 그렇기 때문에 오라클의 설계는 여러 분야가 포함된 종합적인 공정입니다.
글의 마지막에서 강조해야 할 점은, 오라클은 블록체인의 중요한 기반 시설이지만, 이것이 오라클의 발전이 블록체인의 발전을 제약한다는 것을 의미하지는 않습니다. 오히려 블록체인의 발전 상황이 오라클의 발전에 더 큰 영향을 미칠 수 있습니다. 체인 상의 계약이 체인 외부 데이터에 대해 광범위하고 긴급한 요구가 있으며, 데이터를 위해 비용을 지불할 수 있을 때, 오라클은 진정으로, 전면적으로 발전할 가능성이 있습니다.