실제 세계 응용 프로그램을 위한 블록체인에 오라클이 필요할까요?

실제 세계 응용 프로그램을 위한 블록체인에 오라클이 필요할까요?

Pythia - Greek Oracle at Delphoi

피티아(Pythia)는 델포이(Delphoi)에서 고대 그리스 시대의 오라클이었습니다.

기술적 관점에서 볼 때 블록체인은 많은 기술 (암호화, 통신 프로토콜, 합의 알고리즘 및 기타)을 결합하기 때문에 매우 흥미로운 것입니다. 그러나 비즈니스 관점에서 블록체인 또는 기타 기술은 실제 사용 사례를 찾기 위해 문제를 해결하거나 더 잘 표현하는 데 사용될 수 없다면 가치가 없습니다.

블록체인에는 몇 가지 문제가 있습니다 (예: 확장성, 비용). 그러나 종종 하나의 문제가 간과됩니다 (또는 적어도 그렇게 많이 논의되지 않았습니다). 이 문제는 가상머신 (VM)의 특성 또는 스마트 컨트랙트가 없는 체인의 스크립트에서 비롯됩니다. 우리는 VM이 있는 체인, 즉 스마트 컨트랙트를 지원하는 체인에 중점을 둘 것입니다.

가상머신은 코드 (스마트 컨트랙트)가 실행되는 격리된 환경입니다. 결과는 분산 방식으로 확인됩니다. 문제는 VM이 ​​환경 외부의 데이터에 직접 접근 할 수 없다는 것입니다. 이 “외부”는 우리가 관심을 가지는 실제 세계입니다. 실제 응용 프로그램은이 데이터에 접근 할 수 있어야 합니다. 예를 들어, 거래 소프트웨어 고객은 실시간으로 주가에 접근 할 수 있어야 하고, 회계 소프트웨어는 회사 송장, 직원 급여 등에 대한 데이터를 가져와야 합니다. 물론 스마트 컨트랙트는 스마트 컨트랙트의 트리거 기능에 대한 접근 권한을 가진 모든 사람으로부터 수동으로 데이터를 얻을 수 있습니다. 데이터는 함수에 대한 주장으로 전달되어 스마트 컨트랙트가 외부로부터 원하는 데이터를 공급합니다. 따라서 문제가 해결된 것 같습니다. 그러나 블록체인의 핵심은 분권화, 즉 다른 방식으로 말하면 신뢰 없는 방식으로 신뢰를 쌓는 것입니다. 사용자들이 누군가를 믿도록 요구되어서는 안됩니다. 위의 시나리오에서 사용자는 스마트 컨트랙트에 데이터를 공급하는 독립체를 신뢰해야 합니다. 이는 애초 블록체인 사용 취지를 상실한 것입니다. 이 문제를 해결하기 위한 오라클이 있습니다.

오라클이란 무엇입니까? Oracle은 스마트 컨트랙트 소유자로부터 독립된 독립체(일반적으로 서버) 또는 일반 독립체 그룹이며 일반적으로 실시간 특정 실제 데이터를 스마트 컨트랙트에 공급합니다.

스마트 컨트랙트에 가장 필요한 일반적인 데이터는 다음과 같습니다:

  • 암호화폐와 화폐 통화, 주식시장 및 상품가격 간의 환율
  • 랜덤 숫자. VM이 결정적인 기계이기 때문에 실제 캔트(cant)가 아닌 경우 임의의 숫자를 생성 할 수 없다는 것이 이상하게 보일 수 있습니다. 동일한 입력의 경우 출력이 모든 검증(노드)간에 일치해야 하므로 임의의 요소를 생성할 수 없습니다. 랜덤은 외부에서 입력으로 와야 합니다.
  • 운동성과 결과
  • 분산 응용 프로그램이 작동하는 데 필요한 기타 데이터. 이러한 종류의 데이터는 응용 프로그램마다 크게 다릅니다.

오라클은 중앙 집중화 되거나 분산형이 될 수 있습니다. 중앙 집중식 오라클(Oracle)은 독립체이며 동일한 소유자에 속하는 서버 또는 서버 그룹 일 수 있습니다. 성공하려면 중앙 집중식 오라클에는 다음과 같은 속성이 있어야 합니다.

  • 스마트 컨트랙트 소유자 및 스마트 컨트랙트 사용자로부터 완전히 독립합니다. 오라클은 부정 행위(잘못된 데이터를 제공하기 위해)에 대한 인센티브가 없어야 합니다.
  • 길고 분명한(정직한) 기록이 있어야 합니다. 프로토콜에 따라 작동하여 정확한 데이터를 제 시간에 공급해야 합니다.
  • 이를 위해서는 인프라(하드웨어 및 소프트웨어)가 있어야 합니다.
  • 평판이 좋아야 합니다. 평판이 높을수록 오라클이 잘못된 행동으로 명예를 훼손할 가능성이 낮아집니다.

앙 집중식 오라클은 “단일 실패 지점”의 문제로 어려움을 겪고 있음이 분명합니다. 그러나 그것은 장점을 가지고 있습니다: 그것은 빠르고 매우 저렴한 비용입니다.

분산된 오라클은 실제 오라클 그룹입니다. 이를 달성할 수 있는 경험 법칙이나 표준 아키텍처는 없습니다. 분산된 오라클의 기본 속성은 컨트랙트를 제공하는 데이터가 먼저 합의를 통과해야 한다는 것입니다. 블록체인 합의가 아니라 별도의 것입니다. 일부 메커니즘 (알고리즘)은 오라클에서 제출 한 모든 값을 고려하여 데이터의 최종 값을 결정합니다. 오라클의 분산화를 달성하는 데 사용할 수 있는 몇 가지 전략은 다음과 같습니다.

  • a) 오라클(Oracle) 목록: 투표권이 있는 알려진 오라클 그룹이 있습니다. 그들이 정직하게 행동하도록 장려하기 위해, 스마트 컨트랙트의 저장에 정직성을 측정하는 점수가 붙어 있습니다. 올바른 값은 투표(모든 의견 수렴)에 의해 결정됩니다. 거부된 값은 오라클에 대해 음수를 나타내는 반면, 올바른 값은 양수 점수로 나타냅니다. 이 점수는 두 가지 방법으로 사용할 수 있습니다. 첫 번째는 투표의 가중치를 변경하는 것입니다. 따라서 투표는 같지 않지만 정직 점수의 무게를 지닙니다. 두 번째 방법은 나쁜 행위자를 재정적으로 처벌하는 것입니다. 따라서 오라클은 스마트 컨트랙트 내부에 보증을 예치합니다. 점수가 너무 낮거나 모든 오답에 대해 코인을 잃을 수 있습니다. 보장이 0에 도달하거나 점수가 매우 낮은 경우 스마트 컨트랙트는 오라클 목록에서 이를 완전히 제거할 수 있습니다.
  • b) 누구나 오라클이 될 수 있음: 위의 해결책과 같지만 누구나 오라클이 될 수 있습니다. (a)와 같이 매번 투표해야하는 것은 아닙니다. 참여하고 싶을 때마다 코인을 얻거나 잃을 수 있습니다. 따라서 참여하려면 먼저 보증으로 스마트 컨트랙트에 코인을 보내야 합니다. 그렇게 하면 누구나 올바른 가치를 제출할 동기가 있습니다.
  • c) 자체 합의가 있는 독립적 시스템: 오라클은 자체 합의 알고리즘과 코인을 갖춘 자체 네트워크 (보통 블록체인)를 가지고 있습니다. 따라서 이 다른 시스템에서 결정이 내려집니다. 이 시스템에는 최종성이 있어야 합니다. 합의 알고리즘에 의해 가치가 확인되고 확정된 후에는 가치가 속한 블록체인의 스마트 계약에 가치가 직접 제출됩니다. 이 경우 스마트 컨트랙트는 이 다른 시스템을 신뢰하므로 보증이 필요하지 않습니다. 결정은 다른 블록체인 내에서 분산된 방식으로 이루어집니다.

위의 해결책에 대한 많은 세부사항, 공격 유형 및 절충 사항이 있습니다. 주제의 복잡성으로 인해 우리는 다른 기사에서 이러한 각 접근 방식을 자세히 언급할 것입니다. 여기서는 모든 분산형 오라클 시스템이 겪을 수 있는 공통적인 취약성, 즉 프리로딩(freeloading)에 대해서만 언급하고자 합니다. 어떤 오라클이라도 다른 오라클의 제안된 데이터를 읽고 그 값을 복사하여 제출하면 된다. 그는 “무료” 즉, 자체 인프라를 가질 필요가 없다는 것에 대한 가치를 얻을 수 있습니다. 자체 운영비를 우회해 정보를 도용합니다. 이는 지방분권을 저해하고 공격을 훨씬 쉽고 효과적으로 하기 때문에 매우 위험합니다.

다행히 암호화를 사용한 이에 대한 쉬운 해결책이 있습니다. 커밋(committee: 약속)을 두 단계로 나눕니다. 오라클은 첫 번째 단계에서는 해시를, 두 번째 단계에서는 최종 해시를 커밋해야 합니다. 이렇게 하면 오라클은 첫 번째 단계에서 커밋되므로 다른 오라클에서 값을 복사할 수 없습니다.

오라클 기능에 가장 적합한 전략은 무엇일까요? 분명히 모든 최선의 해결책은 아닙니다. 올바른 결정은 응용 프로그램의 특성과 요구에 따라 다릅니다.

위의 모든 내용은 오라클에 대한 소개 일뿐입니다. 다음 기사에서 더 많은 분석이 이루어질 것입니다.