3일차: 이더리움과 그 용어 소개

소개

이더리움 블록 체인에 대해서 잘 알든모르든 한번쯤은 들어본 적이 있으실 거예요. 최근에 메이저 잡지나 기사에 많이 등장하고 있는데, 이더리움이 무엇인지에 대한 기초 지식이 없다면 아마 읽어도 있는 게 아닐 것입니다. 그렇다면 이더리움은 무엇일까요? 간단히 말하자면 디지털 거래 의 영구적인 기록을 저장하는 공개 데이타베이스 입니다. 이공계 데이터베이스에 특징은 중앙에서 누군가가 관리하거나 안전을 걱정하지 않아도 된다는 것입니다. 무 신용 거래를 하기 때문입니다. 무 신용 거리란 써드파티나 서로에 대해 신용도를 측정 하지 않아도 피어투피어로 거래를 생성 할 수 있는 프레임워크 입니다.

아직도 잘 모르겠다구요? 그렇다면 이 글을 끝까지 한번 읽어 보세요. 이 그래서 아주 복잡한 수학이나 어려운 공식 없이 이더리움이 어떻게 기술적으로 동작 하는지 설명 하려고 합니다. 기술적으로 이해하기 어려운 부분이 있어도 괜찮습니다! 너무 깊이 이해할 필요 없어요. 이 포스트에서는 광범위한 수준으로 이해하는 것을 추천합니다.

이번 글에서는 황색 언론에서 다루어진 여러 가지 개념들에 대해 자세하게 설명 할 거예요. 이더리움에 대한 이해를 듣고자 설명과 다이어그램을 덧붙였습니다.

블록체인 정의

블록체인은 “상태가 공유되는 암호학적으로 안전한 트랜잭션 싱글톤 머신”입니다. 말이 참 복잡하죠?

  • “암호학적으로 안전하다”는 것은 디지털 화폐의 생성이 몹시 깨지기 어려운 복잡한 수학적 알고리즘을 사용했기에 안전하다는 것을 의미합니다. 방화벽 같은 걸 생각해 보세요. 시스템을 속이는 것은 거의 불가능하게 만듭니다.(예: 가짜 거래 생성, 거래 삭제 등)
  • “트랜잭션 싱글톤 머신”은 시스템에서 생성되는 모든 트랜잭션을 담당하는 단일 표준 머신 인스턴스가 있다는 것을 의미합니다. 즉, 모두가 믿는 하나의 세계적 진실이 있다는 것입니다.
  • “상태가 공유되는”은 이 기계에 저장된 상태가 공유되어 모든 사용자에게 공개됨을 의미합니다.

이더리움은 이러한 블록체인 패러다임을 구현합니다.

이더리움 블록체인 패러다임 설명

이더리움 블록체인은 본질적으로 트랜잭션 기반의 상태 기계입니다. 컴퓨터 과학에서 상태 기계(state machine)란 일련의 입력을 읽고, 그 입력에 따라 새로운 상태로 전환되는 것을 말합니다.

state-machine

이더리움의 상태 기계는 “제네시스 상태(genesis state)“로 시작합니다. 이는 네트워크에서 트랜잭션이 발생하기 전에는 빈 판자와 유사합니다. 트랜잭션이 실행되면 이 ‘제네시스 상태’는 어떤 최종 상태로 전환됩니다. 이 최종 상태는 이더리움의 현재 상태를 나타냅니다.

ethereum-state

이더리움 상태는 수백만 건의 거래가 있습니다. 이러한 트랜잭션은 “블록”으로써 그룹화됩니다. 블록마다 일련의 트랜잭션이 들어있고, 각 블록은 이전 블록에 연결됩니다.

chained-blocks

한 상태에서 다음 상태로 전환하려면 트랜잭션이 유효해야 합니다. 거래가 유효한 것으로 간주되려면 마이닝(Mining)이라는 유효성 검사 프로세스를 거쳐야 합니다. 마이닝은 노드 그룹(즉, 컴퓨터)이 컴퓨팅 리소스를 사용하여 유효한 트랜잭션 블록을 만드는 것입니다.

네트워크에서 자신을 채굴자로 선언하는 모든 노드는 블록을 만들고 유효성을 검사하려고 시도할 수 있습니다. 전 세계의 많은 채굴자들이 동시에 블록을 만들고 검증하려고 노력합니다. 각 채굴자는 블록체인에 블록을 제출할 때 수학적인 “증명”을 제공하며, 이 증명은 증명이 존재한다면 블록이 유효해야 한다는 보증 역할을 합니다.

메인 블록체인에 블록이 추가되려면 채굴자가 다른 경쟁 채굴자보다 빠르게 증명해야 합니다. 채굴자가 수학적 증명을 제공하도록 하여 각 블록을 검증하는 과정을 “작업 증명”이라고 한다

새로운 블록의 유효성을 검사하는 채굴자는 이 작업에 대해 일정한 가치를 보상을 받는다. 얼마나 받을까요? 이더리움 블록체인은 ‘이더(Ether)‘라는 고유 디지털 토큰을 사용합니다. 채굴자가 블록을 증명할 때마다 새로운 이더 토큰이 생성되고 수여됩니다.

이쯤되면 궁금해집니다. 무엇이 모든 사람들이 하나의 블록 체인을 고수한다는 것을 보장하는가? 어떻게 우리가 그들만의 블록 체인을 만들기로 결정할 채굴자들의 하위 집합이 존재하지 않는다고 확신할 수 있을까?

앞서 우리는 블록체인이란 공유 상태를 가진 트랜잭션 싱글톤 머신이라고 정의했습니다. 이 정의에 따르면, 우리는 정확한 현재 상태가 모든 사람이 받아들여야 하는 유일한 진실이라는 것을 이해할 수 있습니다. 여러 개의 상태(또는 체인)를 갖는 것은 전체 시스템을 망칠 것입니다. 왜냐하면 어떤 상태가 올바른 상태인지 합의하는 것은 불가능하기 때문입니다. 만약 체인이 갈라진다면, 당신은 한 체인에 10개, 다른 체인에 20개, 그리고 다른 체인에 40개의 동전을 소유할 수 있을 것입니다. 이러한 상황에서는 어떤 체인이 가장 “유효”했는지 확인할 방법이 없습니다.

여러 경로가 생성될 때마다 “포크(fork)“가 발생합니다. 일반적으로 포크는 발생하지 않는게 좋습니다. 포크는 시스템을 방해하고 사람들이 어떤 체인을 “신뢰”하는지 선택하도록 강요하기 때문입니다.

path-forks

이더리움은 어떤 경로가 가장 유효한지 판단하고 여러 체인을 방지하기 위해, ‘Ghost 프로토콜’이라는 메커니즘을 사용합니다.

“Ghost” = “Greedy Highest Observed Subtree”

간단히 말해서, Ghost 프로토콜은 가장 많은 계산을 한 경로를 선택해야 한다고 말합니다. 경로를 결정하는 방법 중 하나는 현재 경로의 총 블록 수를 나타내는 가장 최근 블록의 블록 번호(“리프 블록”)를 사용하는 것입니다. 블록 번호가 높을수록 경로가 길고 리프에 도달하는 데 필요한 채굴 노력이 커집니다. 이러한 방식으로 생각했을 때, 현재 상태의 표준 버전에 동의할 수 있습니다.