IMG-LOGO
Home 암호화폐 강의 이더리움백서 12편

이더리움백서[12편]


Remind


지난 11편에서는 EVM의 튜링 완정성과, 이더리움의 통화, 발행량에 관한 내용을 다뤘습니다. 지난시간의 내용을 요약하면 다음과 같습니다.

튜링 완전성

이더리움에서의 EVM은 튜링 완전성을 가지고 있으며, 튜링 완전성을 갖을 수 있었던 내용을 축약해보면 아래와 같습니다.

(1) 무한 순환 루프 공격은 공격자에게 이미 실행된 각 계산 단계마다의 수수료를 요구함으로써 해결할 수 있다.

(2) 아주 긴 무한 순환 프로그램으로 수수료를 요구하지 못하게할것을 대비하여, 실제 실행되는 계산 단계의 상한선을 규정하는 STARTGAS 명령어에 대한 값을 제출하도록 되어있다.

(3) 어떤 Contract에서 특정 기능만 수행하고, 특정 기능은 수행하지 못하도록하여 부당 이득을 취하는 경우를 대비하여 Contract 실행이 도중에 멈추면, 해당 변화도 원상 복구될 수 있도록하였다.

(4) 메시지 위에 GAS 한도를 설정함으로써 참조하고 있는 다른 Contract에서 GAS를 무한대로 사용하지 못하도록 방어할 수 있다.

* 결국 튜링 불완전성을 갖는 프로그램에서도 튜링 완전성을 갖는 프로그램과 동일한 Contract를 생성할 수 있지만, 만약 튜링 완전성이 없을 경우 다루기가 매우 어려우며, 이러한 어려운 문제점으로 인해 Contract의 활용도가 제한적일 수 밖에 없습니다. 또한, 튜링 완전성은 생각보다 놀랍도록 다루기 쉬우며, 튜링 불완전성은 매우 다루기가 어렵습니다.


통화 그리고 발행

비트코인에서 비트코인 하위 단위에 대한 명칭과 관련하여 벌어진 논쟁이 있었기 때문에 이더리움에서는 화폐이 단위를 백서에서 먼저 정의하였습니다. 이더리움 재단 보유금은 이더를 보유함으로써, 인센티브를 얻기 위해 이더의 가치를 더 높일것이라는 점을 강조했으며, 시간의 흐름에 따라 사용자의 부주의, 혹은 죽음 등으로 인해 이더들이 시장에서 사라지는것을 고려하여 신규 발행되는 이더에 의해 균형을 이루도록 하였습니다.

그 밖의 이슈들(Miscellanea And Concerns)


채굴 중앙집중화(Mining Centralization)

비트코인의 채굴 방식은 목표 값 보다 낮은 블록해시 값이 나올 때까지, 블록헤더에 대한 sha 256 해싱 작업을 무한정 반복하는 것입니다. 이러한 방식에는 다음와같은 두 가지 약점이 존재합니다.

첫번째는 채굴 참여에 대한 진입 장벽이 매우 높다는것입니다. 현재 채굴 생태계는 ASIC에 의해 안전히 잠식되어 있습니다. 이러한 ASIC 채굴기는 일반 GPU 채굴기에 비해 수 천배 이상의 효율을 가지며, ASIC가 아닌 일반 컴퓨터를 사용하는 사용자들의 채굴행위는 경재력이 없게 됩니다. 과거의 채굴행위가 분권화되고 이타적인 참여자 중심의 생태계였다면, 현재는 수십억원의 투자가 되어야만 참여가 가능한 재력가들의 사업으로 변질되고 말았습니다.

두번째는 채굴방식의 문제입니다. 이전처럼 여러 지역에서 여러 참여자가 블록생성에 참여하는 것이 아니라, 중앙집중화된 채굴풀(Mining pool)에 의존하여 채굴에 참여한다는것입니다. 현재 기준으로 3개 채굴풀들이 개인들의 컴퓨팅 파워를 인계 받아서 무려 50%에 육박하는 해시를 간접적으로 통제하고 있습니다. 물론 해당 풀의 점유율이 50%를 넘어가기 전에 개인들이 다른 소규모 풀들로 이동할 수 있기 때문에, 채굴 풀들이 마음대로 자원을 남용할 수 없겠지만, 중앙 집중화된 채굴풀은 여전히 큰 문제입니다.


* ASIC : 채굴을 목적으로 특화된 전용 반도체로, 범용반도체에 비해 채굴 성능이 뛰어난 반도체로써, 주문형 전용 반도체라고 생각하시면됩니다.


이더리움의 채굴 방식은 비트코인의 채굴 방식과 조금 다른점이 있습니다. 각 채굴자가 상태정보(the state)에서 무작위의 정보를 가져와서, 무작위로 선택 된 최근 몇개의 블록내역을 해싱 작업하고 결과 값을 출력하면 됩니다. 이렇게 할 경우 두 가지 이점이 있습니다.

첫번째는 이더리움 Contract는 모든 종류의 컴퓨터 계산 방식을 포괄할 수 있다는 점입니다. Contract에서 모든 종류의 컴퓨터 계산 방식을 포괄할 경우 자연스럽게 ASIC 또한 모든 계산 방식에 접학하게 재 설계되어야 하며, 결국 ASIC는 특화된 기능이 아니라 일종의 고성능 CPU가 되는 셈입니다. 즉, 현실적으로 ASIC(주문형 전용 반도체) 자체가 무용지물이 됩니다.

두번째는 채굴자들은 작업을 위해서 전체 블록체인을 다운 받아 모든 이체내역을 검증해야 한다는 점입니다. 이렇게 될 경우 중앙집중화 된 대형 풀이 필요없게됩니다. 물론 대형 풀 자체는 신규 블록 생성 보상을 균일하게 참여자들에게 배분해주는 효과가 있지만, 그러한 효과는 P2P 형식의 풀(pool)을 통해서도 충분히 가능하며, 굳이 중앙집중형 풀(centralized pool)방식을 사용할 필요가 없습니다.

물론 위의 채굴 모델이 아직 검증된 것은 아니며, ASIC 장비에 대한 저항성을 높이는 작업도 이론처럼 현실에서 적용이 될 수 있을지에 대해서는 여전히 의문의 여지가 있습니다. 하지만 한 가지 확실한 것은, 여러종류의 수 많은 Contract가 적용되면, 이를 모두 포괄하는 ASIC를 예전처럼 만들어 내기는 어렵다는 점입니다. 또한 어떠한 종류의 작업에 특화 된 ASIC가 존재한다면, 해당 작업에 특화 된 ASIC 채굴자에게 불리한, 즉 비효율적인 작업을 요하는 Contract들을 생성해 냄으로써 공격을 가할 수 있을것입니다.

* 각 부분에 특화된 ASIC을 소유한 채굴자들은 서로에게 불리한 작업을 하게하는 Contract를 만들어 냄으로써 서로를 공격하게될 것입니다. 물론 이러한 방법은 기술적인 접근이라기보다는 경제학적 인간행동론에 근거한 접근에 가깝습니다.

확장성(Scalability)

이더리움에 대한 한 가지 공통된 의문점은 바로 확장성 부분입니다. 비트코인과 마찬가지로 이더리움도 모든 이체 작업이 네트워크 상의 전체 노드에 의해서 검증하는 작업이 필요하다는 약점이 있습니다. 비트코인의 블록체인의 크기가 현재 기준으로 약 15GB에 이르며, 그 크기는 매 시간 1MB씩 꾸준히 늘어나고 있습니다. (지금은 164GB가 넘어가고 있습니다..)VISA의 경우 초당 2,000 여건의 이체작업을 처리하는데, 이는 매 3초당 1MB씩의 확장(시간당 1GB, 매년 8TB)을 의미합니다. 이더리움도 이와 비슷한 문제를 겪을 것이고, 단순히 화폐의 역할만하는 비트코인에 비한다면, 온갖 종류의 탈중앙화된 어플리케이션들(Dapps:Decentralized application)을 포괄하는 이더리움은 훨씬 더 많은 문제를 겪을 수도 있을것입니다. 하지만 한가지 다른 점은, 이더리움의 전체 블록체인 히스토리가 아닌, 단지 상태 정보(the state)만 가지고 잇으면 된다는 점입니다.

만일 모든 노드가 전체 블록체인을 보관해야 한다면, 다음과 같은 문제가 생길 수 있습니다. 블록체인 크기가 점점 커져 100TB에 육박하게 되었다고 생각해보겠습니다.

블록체인의 크기가 커지면, 오직 소수의 사업가나 기업 형태의 참여자만이 이러한 대용량의 블록체인을 감당할 수 있게됩니다. 다수의 일반 사용자들은 메인 블록체인보다 용량이 가벼운 라이트 SPV(Simple Payment Verfication) 노드만을 사용하게 될것입니다. 이렇게될 경우 전체 블록체인의 내역을 가진 소수의 참여자들이 결탁하여, 장부내역을 수정하거나 블록 보상량을 바꿔치기 하는 등의 조작행위가 일어날 수 있을것이며, 단순한 라이트 노드(light node)는 이러한 조작을 감지할 방법이 없습니다.

물론 전체 블록체인을 소유한 노드(full node) 중에서도 선의의 참여자가 있을지도 모릅니다. 그러나 다수의 완전 노드(full node)가 작심하여 블록체인 조작을 시도한다면, 이를 발견하는 시점은 이미 늦었다고 봐야 할 것입니다. 실제로 비트코인이 현재 이와 비슷한 문제에 처할 위험이 있다고 경고 받고 있으며, 해당 문제를 완화 시키는 방법에 대하여 Peter Todd 에 의해 논의된 적있습니다.


* 위에서 언급된 문제를 해결하기 위해서 이더리움에서는 가까운 시일 안에 두가지 전략을 추가로 도입할 예정입니다.


첫번째는 이더리움도 기본적으로 블록체인 기술을 바탕으로 한 채굴 알고리즘을 사용하고 있기 때문에, 모든 채굴자들은 완전 노드(full noe)가 되도록 의무화 될 것입니다. 그리고 이러한 방식은 네트워크가 유지될 수 있도록 충분한 완전노드 숫자를 확보해 줄것입니다.

두번째는 이체내역 검증 작업 이후 블록체인에 중간 상태 트리루트(an intermediate state tree root)를 도입하는 것입니다. 이렇게 되면, 아무리 블록생성 작업이 소수의 노드에 집중되더라도, 단 하나의 선의의 노드(honnest node)만 존재한다면 검증 프로토콜(verfication protocol)을 통해 위의 문제를 해결할 수 있습니다.


만일 어떠한 채굴노드가 전파한 블록이 검증오류(invalied)처리가 되었을 경우, 검증오류가 발생된 이유는 아마도 해당 블록의 구성(format)이 맞지 않거나 상태내역 S[n]이 틀렸을 경우일 것입니다. (S[0]상태는 옳은 것으로 간주되기 떄문에, S[i-1]이 맞다면, S[i]에 오류가 있는 것입니다.)

검증 작업에 참여하는 노드는, APPLY(S[i-1],TX[i]) -> S[i] 작업(processing)을 하는 폐트리샤 트리 노드의 부분 집합(the subset of Patricia tree)을 통해 검증오류증명(proof of invalidity)인덱스 i를 제공합니다. 노드들은, 위의 노드들을 이용해 해당 작업을 수행하며, 생성한 S[i]가 제공받은 S[i]와 일치하지 않다는 사실을 알 수 있게되는것입니다.

또한, 불완전한 블록(incomplete block)을 전파하려는 악의적인 채굴노드들에 의해 보다 정교한 공격이 이루어질 수 있으며, 블록을 검증하는데에 필요한 정보가 온전히 존재하지 않을 수도 있습니다.

이러한 경우에는 질의-응답프로토콜(challenge-response protocol) 기법이 사용될 수 있습니다. 검증노드가 목표 블록의 인덱스 형태(target transaction indices)질문(challenge)을 생성하고, 노드를 수신하는 라이트노드(light node)는 해당 블록(challenge)을 일단 검증오류 블록으로 취급합니다. 이후, 다른 노드(채굴노드, 혹은 검증노드)가 페트리샤 트리 노드의 부분집합(the subset of Patricia tree)을 검증증명(proof of validity)으로써 제공한다면, 그때 위의 블록은 검증된(유효한)것으로 취급하면 됩니다.

결론


이더리움 프로토콜은 매우 범용적인 프로그래밍 언어를 통해 블록체인상 에스크로나 인출한도 설정, 금전 계약, 도박 시장 등의 고급기능을 제공하는, 가상화폐의 업그레이드 버전으로 구상되었습니다. 이더리움 프로토콜은 이러한 어플리케이션들을 직접적으로 제공하는 것이 아니라, 튜링완전언어(Turing-complete programming language)를 통해 이론적으로 거의 모든 형태의 이체 방식이나 어플리케이션들을 만어 낼 수 있도록 구상되었습니다.

이더리움은 단순한 화폐의 차원을 훨씬 뛰어 넘는다는 점이 매우 흥미로운점입니다. 분산저장공간(DFS:decentralized file storage)이나, 분산컴퓨팅, 분산예측시장(decentralized prediction market) 프로토콜 등은 사실 수많은 응용개념들 중 일부에 불과하며, 이러한 새로운 개념들은 컴퓨팅 산업의 효율성을 폭발 적으로 높일 수 있는 잠재력을 가지게됩니다. P2P 프로토콜에 첨으으로 경재적인 차원(economic layer)을 입힘으로써 엄청난 혁신을 가져올 수 있을 것이며, 마지막으로 컴퓨팅이나 금융과 관련이 없는 분야에서도 다양한 어플리케이션들이 생겨날것입니다.

이더리움 프로토콜이 제공하는 임의상태변환(arbitrary state transition function)이라는 개념은 고유의 잠재력을 지닌 플랫폼을 탄생시킬것이며, 기존의 자료저장공간이나 도박, 금융 등의 하나의 목적에 특화된 폐쇄형 구조(close-ended)와 달리, 이더리움은 자유롭게 조정이 가능한 구조(open-ended)입니다.

우리는 이더리움이 몇 년 이내에, 금융부문이든 비금융부문이든 엄청나게 많은 종류의 서비스를 설계할 수 있도록 돕는 기반 기술이될 것이라고 믿습니다.


[참고문헌]


* 이더리움 백서(한글)
* 이더리움 백서(영문)



작성자 : yahweh87