블록체인의 ‘보편적 추론기반’을 확장하는 접근법들 : 오라클(Oracle)의 온체인화

in #blockchain7 years ago

(이 포스트는 'decentralized Credit Union Network 프로젝트'의 연구 주제에 속한 내용이며, '문제의 공유'를 위해 공개합니다. 다른 문제를 푸는 과정에도 영감을 줄 수 있다면 좋겠습니다. 그리고 이 문제에 대한 다른 접근법 아이디어가 있다면 코멘트를 구합니다.)

onchainization of oracle.png

사토시의 비트코인 논문은 ‘Longest Chain’이라는 사회공학적 방어 체계에 의해 블록체인 상에 기록될 ‘거래’를 사악한 공격자로부터 지켜내는 것이 어떻게 수학적 안정성을 갖는가를 보여주었다. 그 결론은 다음과 같이 요약될 수 있다. “공격자의 노드가 과반수 이상의 확률로 다음 블럭을 찾을 수 없다면 장기적으로 잃는 게임을 할 수 밖에 없고, 정직한 노드가 다음 블록을 찾을 확률이 작아지더라도 공격자가 과거의 블럭에 기록된 거래를 거꾸로 따라잡을 수 있는 확률은 매우 긴 시간동안 낮게 유지된다.”
이러한 결론은 매우 매력적이다. 그 이유는 블록체인이 ‘확률적으로’라 하더라도 ‘보편적으로’ 모든 거래 기록을 방어한다는 것을 의미하기 때문이다. 여기서 ‘보편성’은 과거와 현재, 그리고 미래를 아우르는 보편성이다. 그러나 이 보편성은 ‘시간’과 ‘채굴 자원’을 사용한다. 블록체인 네트워크가 성장하면서 ‘시간’과 ‘채굴 자원’의 문제는 보편성의 적용 범위를 확장하는데 중요한 걸림돌이 되고 있다. 그렇기 때문에 블록체인 컴퓨팅 생태계는 ‘보편적 추론 기반’을 유지하면서 ‘시간’과 ‘채굴 자원’의 투입량을 줄이고 성능을 끌어올리기 위해 다양한 방법을 탐색하고 있다. ‘라이트닝 네트워크’나 ‘샤딩’, ‘플라즈마’와 같은 프로젝트들이 이 방법을 구현하기 위해 노력 중이다.
이러한 노력들의 접근법은 방법으로서는 달라보이지만, 철학적으로는 같은 것을 공유하고 있다. 그것은 바로 ‘Locality’를 활용하여 보편성을 확장한다는 것이다. 두 거래 주체 간의 ‘Locality’는 ‘사악한 공격자’에 의한 공격이 차단된 ‘채널’이라는 안전한 공간을 만들기 때문에 블록체인의 방어능력을 확장할 수 있다.(라이트닝 네트워크) ‘하나의 회계적 시간’을 공유한 노드들은 ‘격리된 맥락’(샤드) 안에서 각자 병렬적으로 블록을 생성하는 Locality를 활용한다.(샤딩) 블록체인의 특정 블록을 기준점으로 그대로 가지 치기를 해서 child 블록체인으로 Locality를 구현하더라도, 블록체인의 원리 자체에 내포된 수학적 방어능력이 작동한다.(플라즈마) 모두 어떻게 거래 장부의 Locality를 활용하여 블록체인의 보편적 안전성을 확장할 것인가를 고민한 결과들이다. 이오스(EOS) 역시 블록체인 프로토콜 내에서는 아니더라도, ‘보편성’을 확장하는 시도를 한 것이라 볼 수 있다. 어떤 확장은 ‘온체인’ 스케일업이지만 어떤 것은 ‘오프체인으로의 확장’이다. 그 중에서 블록체인이 제공하는 추론 기반의 안정성을 오프체인으로 확장하는 것은 블록체인 진화의 매우 중요한 방향성이다.

그렇다면 우리는 이러한 배경 위에서, 다른 종류의 블록체인 확장을 고려해 볼 수 있다. 그것은 바로 dApp 내에서 사용되는 ‘오라클’이다.

dApp 내에서의 추론 기반과 오라클(Oracle), 그리고 PoS(지분 증명)

이더리움에서 명시적으로 도입된 dApp은 단순하게 보면 ‘블록체인을 DB로 사용하는 ‘스마트 계약’을 기초로 만들어진 응용 서비스’이다. 그러나 실제로 dApp을 만들려고 생각하다보면, dApp에 필요한 것이 블록체인과 스마트 계약만은 아니라는 것을 알 수 있다. 물론 dApp과 블록체인의 관계는 ‘Thin Application’과 ‘Fat Protocol’이어야 하지만, 프로토콜이 충분히 Fat하지 못한 상황에서는 앱이 ‘두꺼워 지는’ 것을 피할 수 없다. 그러나 많은 경우 Protocol이 Fat하지 못한 이유는 단순히 프로토콜 제작자들이 고려하지 못해서가 아니다. dApp이 제공하려는 서비스가 오프체인 요소들과 깊게 연관될 경우, 이것은 프로토콜이 제공해줄 수 있는 것이 아니기 때문이다.
이것이 가진 현실적 의미는 무엇일까? 그것은 바로 dApp이 ‘신뢰할 수 있는 제3자’를 필요로 하는 기능을 상당히 포함하게 된다는 것을 의미한다. dApp의 개발자들은 이를 ‘중앙화’된 조직이 되게 하지 않기 위해서 ‘오라클(Oracle)’이라고 부르면서, 오프체인 상에 있지만 어느 누구도 쉽게 조작할 수 없는 기준을 활용하는 추론 기반의 구축을 시도한 것이다. 그러나 이는 결국 오프체인 컴퓨팅의 근본적 문제를 피할 수 없게 된다. 추론의 기반이 조작될 수 있다는 뜻이다.
이것을 피할 방법은 없을까? 이 지점에서 고려해 보아야 할 방법은 PoS다. PoS는 블록체인 상에서의 합의 방법으로서의 PoW(작업 증명)이 컴퓨팅 파워를 낭비하게 만든다는 점에서 그 대안으로 도입되고 있는 합의 방법이다. PoW가 채굴자들에게 ‘현재의 컴퓨팅 파워’를 지불하기를 요구하고 있다면, PoS는 채굴자들에게 ‘미래의 유동성’을 지불하게 만든다. 이러한 해석이 가능한 이유는 PoS(Proof of Stake)에서 Stake란 담보를 넣고 일정 기간 동안 찾아갈 수 없게 만든 것으로, ‘미래의 유동성’을 지불한 결과로 해석할 수 있기 때문이다. ‘미래의 유동성’을 지불하여 ‘현재의 컴퓨팅 파워’를 대신하게 하고, 그 위에서 Randomness를 작동하게 한 것이다. dApp이 이 ‘PoS를 이용하여 제3자의 데이터로부터 오라클을 구성’하는 방식은, ‘신뢰할 수 있는 외부의 제3자’의 데이터를 오라클로 받아들이는 것을 대신할 수 있다. PoS를 이용하면 외부의 데이터에 대해 ‘신뢰할만 하다’는 전제를 도입할 필요가 없다.
온라인 서비스를 제공해본 경험이 있는 dApp 공급자들에게는 그냥 제3자의 데이터를 ‘신뢰할 만한 오라클’로 간주하는 것이 더 친숙한 해결책일 수 있다. 사실 ‘그렇게 해도 문제가 발생한 적이 없다’는 경험이 축적되어 있기 때문이다. 그러나 그런 식으로 본다면 사토시가 풀었던 문제도 거의 발생할 가능성이 없는 문제였다. ‘이중 지불’은 현실에서 거의 무시해도 좋을 만큼 발생 빈도가 낮다. 그러나 사토시는 그 문제를 해결하는 것이 추론의 기반을 견고하게 만들어 ‘보편성’의 범위를 확장하는데 중요하다고 본 것이다. 그런 맥락에서 우리는 dApp 내에서 ‘오라클의 조작 가능성’ 문제를 풀어야 한다.

dApp에서 이 문제를 해결하기 위한 ‘PoS에 의한 오라클의 구성 방법’은 다음의 조건을 충족해야 한다.

  • 현재 시점에서 dApp 내에서 가짜 오라클을 만들기 위해서는, ‘미래 유동성’을 지불하여 과반수 이상의 dApp 내 투표권을 확보해야 한다
  • 공격자가 과반수 이하의 투표권으로 가짜 오라클을 만들려고 시도할 경우, 공격자의 공격에 의한 이익의 장기 기대값은 0으로 수렴한다
  • dApp에서 만들어진 가짜 오라클 기반의 거래를 블록체인 네트워크가 받아들이지 않으면, 가짜 오라클 기반의 거래를 만드는데 사용된 Stake는 ‘미래 유동성’을 대가로 지불해야 한다.(Casper 요구사항)

만약 어떤 dApp이 장시간 이런 상태에 있다면, 그 dApp의 구성원들은 dApp을 포기하게 될 것이고, dApp이 만든 가짜 거래를 블록체인 네트워크가 받아들이지 않는 상황이 지속되면 dApp은 블록체인 전체에 대한 Stake를 잃게 되므로, 사악하더라도 합리적인 공격자는 이런 식의 dApp 장악을 포기하게 될 것이다.

dApp에서 PoS를 활용한 오라클은 왜 바람직한가

Thin Application인 dApp이 맞닥뜨려야 하는 문제는 두 가지다. 하나는 dApp이 제공하려는 서비스에 충분한 신뢰 기반과 기능적 요소를 제공해 주는 Fat Protocol을 어떻게 고를 수 있는가이고, 다른 하나는 ‘낮은 비용으로’ 오프체인 상의 서비스 구성 요소를 어떻게 온체인 상의 요소로 전환시켜낼 것인가 하는 것이다. 이 두가지 문제가 잘 풀린다면, dApp은 정말로 Thin하게 만들어지지만, 그게 잘 안되면 점점 두꺼워진다. 이는 블록체인 네트워크가 어떻게 dApp에게 ‘오프체인 요소를 온체인 요소로 변환시키는 효과적 도구’를 제공하는가도 ‘속도’와 ‘비용’을 개선하는 것 만큼이나 중요한 개선 방향이라는 뜻이다.
이는 블록체인 네트워크 전체에 대해서도 마치 ‘매쉬업’과 같은 효과를 만들어낸다. 일단 하나의 오라클이 온체인으로 구성되고 나면, 블록체인 상의 다른 dApp들은 이들을 자신들의 오라클로 혹은 오라클을 구성하기 위한 입력값으로 가져갈 수 있게 된다. 오프체인 구성 요소들이 온체인화되는 오라클들이 증가하면 블록체인 내부에서 이를 기초로 만들 수 있는 dApp은 기하급수적으로 증가한다. dApp은 블록체인 네트워크에서 제공하는 추론과 신뢰 기반 데이터와 다른 dApp이 제공하는 오라클들을 활용하여 온체인으로 더 많은 서비스를 제공할 수 있게 되기 때문이다.
그렇다면 dApp들은 왜 좋은 오라클을 만들려고 하게 될까? 그것은 바로 오라클 자체가 이를 사용하는 다른 dApp으로부터 보상을 받을 수 있는 스마트 계약 구성요소(Contract Account)이기 때문이다. 이는 다른 스마트 계약과 마찬가지로 애플리케이션의 구성 요소로서 보상을 받는다. 좋은 오라클을 제공함으로써 이익을 얻을 수 있게 만드는 보상 체계는 블록체인 네트워크 안으로 더 좋은 오라클들이 진입하게 만드는 방법이 된다. 그리고 그것이 PoS 합의 구조에 의해 뒷받침되는 온체인 요소가 되면, 잘못된 오라클 데이터를 제공하는 것을 합의 과정에서 막을 수 있을 뿐 아니라, 잘못된 오라클 데이터에 대해 스마트 계약에 의해 Stake 손실을 감수하게 만들 수 있다는 점에서(PoS에서 Casper라고 불리는 합의에 의한 패널티) 블록체인 상의 다른 dApp들은 더 신뢰하고 활용할 수 있기 때문이다.

‘온체인화 된다’는 것은 비용을 지불하면서 성과 분배에 참여할 기회를 얻기 위해 시도하고 제대로 기능하지 못할 경우 스마트 계약에 의해 자동으로 패널티를 감수하게 된다는 것을 의미한다. 그런 점에서 PoS는 오프체인 상의 오라클을 온체인화시켜주는 좋은 방법이 된다.