無知

갈 길이 먼 공부 일기

기술 공부/블록체인

이더리움의 작동방식 (1) | 블록체인, 상태 기계, 고스트 프로토콜

moozii 2022. 1. 5. 20:06
Devcon2: Ethereum in 25 Minutes

Devcon2: Ethereum in 25 Minutes라고,
Ethereum Foundation Chief Scientist, Vitalik Buterin이 직접 설명해주는 영상이다.

 

이더리움 프로토콜만의 방식은, 기존의 잭나이프 같이 기능이 덕지덕지 늘어나는 것이 아니라, 

앱 생태계를 이루는 플랫폼으로 나아간다는 것.. 정도만 이해했다.

 

 

 

How does Ethereum work, anyway?

Introduction

preethikasireddy.medium.com

그래서 이 글을 읽어보면서 조금 더 깊이 이해해보고자 한다.

 

* 이 글은 How does Ethereum work, anyway? 라는 글을 읽어가며 이해한 바를 한국어로 번역하여 정리하는 글입니다. 시리즈의 형태로 끊어가며 업로드되었으니, 참고 부탁드립니다.

 

 

시작하며

Odds are you’ve heard about the Ethereum blockchain, whether or not you know what it is. It’s been in the news a lot lately, including the cover of some major magazines, but reading those articles can be like gibberish if you don’t have a foundation for what exactly Ethereum is. So what is it? In essence, a public database that keeps a permanent record of digital transactions. Importantly, this database doesn’t require any central authority to maintain and secure it. Instead it operates as a “trustless” transactional system — a framework in which individuals can make peer-to-peer transactions without needing to trust a third party OR one another.

https://preethikasireddy.medium.com/how-does-ethereum-work-anyway-22d1df506369

디지털 상호작용(transaction)의 공개된 거래 장부로서, 분산된 신뢰 체계를 기반으로 운영되는 것. 

이더리움이라기보단 블록체인 프로토콜 기반의 체계를 먼저 가볍게 소개한 듯하다.

그 이후에는 복잡한 수학 없이, 기술적인 분석을 폭넓게 진행하겠다고 하니 한번 따라가 보자.

 

앞으로 계속 나오는 트랜잭션에 대해서는 별도 설명이 없어서, 하나의 글을 가져왔다.

트랜잭션은 외부 소유 계정(EOA)에 의해 서명된 메시지로,
이더리움 네트워크에 의해 전송되고 이더리움 블록체인에 기록됩니다.
➡️ 트랜잭션은 다음 데이터를 포함하는 시리얼라이즈 된 바이너리 메시지입니다.
논스(nonce): 발신 EOA에 의해 발행되어 메시지 재사용을 방지하는 데 사용되는 일련번호
가스 가격(gas price): 발신자가 지급하는 가스의 가격(웨이, wei)
가스 한도(gas limit): 이 트랜잭션을 위해 구입할 가스의 최대량
수신자(recipient): 목적지 이더리움 주소
값(value): 목적지에 보낼 이더의 양
데이터: 가변 길이 바이너리 데이터 페이로드
v, r, s: EOA의 ECDSA 디지털 서명의 세 가지 구성요소

https://velog.io/@holim0/%EB%A7%88%EC%8A%A4%ED%84%B0%EB%A7%81-%EC%9D%B4%EB%8D%94%EB%A6%AC%EC%9B%80-Chapter-6.-%ED%8A%B8%EB%9E%9C%EC%9E%AD%EC%85%98-grpbze5t

 

 

블록체인의 정의

A blockchain is a cryptographically secure transactional singleton machine with shared-state.

블록체인이란, 암호화된 보안 체계를 갖추고, 상태를 공유하는, 싱글톤 방식의 트랜잭션 머신을 의미한다. 

 

1. 암호화된 보안 체계를 갖추었다는 것은, 

방화벽과 같이 트랜잭션의 조작을 금하도록 하는, 암호화폐 생성 등에 관한 강력한 보안 체계를 수학적인 알고리즘에 기반하여 갖추었다는 것을 의미한다.

 

2. 싱글톤 방식의 트랜잭션 머신이라는 의미는, 

시스템 내에 생성된 트랜잭션(거래) 내역 전체를 담당하는, 단 하나로 규정된 머신이 존재함을 의미한다.

소프트웨어 디자인 패턴에서 싱글턴 패턴(Singleton pattern)을 따르는 클래스는, 생성자가 여러 차례 호출되더라도 실제로 생성되는 객체는 하나이고 최초 생성 이후에 호출된 생성자는 최초의 생성자가 생성한 객체를 리턴한다. 이와 같은 디자인 유형을 싱글턴 패턴이라고 한다. 주로 공통된 객체를 여러 개 생성해서 사용하는 DBCP(DataBase Connection Pool)와 같은 상황에서 많이 사용된다.

https://ko.wikipedia.org/wiki/%EC%8B%B1%EA%B8%80%ED%84%B4_%ED%8C%A8%ED%84%B4

 

3. 상태를 공유한다는 의미는, 

머신에 저장되어 있는 상태가, 모두와 공유하며, 모두에게 공개됨을 의미한다.

 

이더리움도 상기 블록체인의 정의를 따른다. 

 

 

이더리움 블록체인 패러다임의 이해

사실 이 아티클의 작업 증명 내용은 비교적 서술이 복잡하게 압축되어 있는 편인데, 
이전 아티클을 참고하는 것이 훨씬 이해가 빠를 듯하다.

 

이더리움 블록체인은 트랜잭션 기반의 상태 머신 / 상태 기계이다.

간단히 얘기해서, 상태 기계는 입력 값의 집합과, 그 입력값을 넣을 경우 전이되는 새로운 상태를 정의해놓은 것을 의미한다.

유한 상태 기계(finite-state machine, FSM) 또는 유한 오토마톤(finite automaton, FA; 복수형: 유한 오토마타 finite automata)는 컴퓨터 프로그램과 전자 논리 회로를 설계하는 데에 쓰이는 수학적 모델이다. 간단히 '상태 기계'라고 부르기도 한다.
유한 상태 기계는 유한한 개수의 상태를 가질 수 있는 오토마타, 즉 추상 기계라고 할 수 있다. 이러한 기계는 한 번에 오로지 하나의 상태만을 가지게 되며, 현재 상태(Current State)란 임의의 주어진 시간의 상태를 칭한다. 이러한 기계는 어떠한 사건(Event)에 의해 한 상태에서 다른 상태로 변화할 수 있으며, 이를 전이(Transition)이라 한다. 특정한 유한 오토마톤은 현재 상태로부터 가능한 전이 상태와, 이러한 전이를 유발하는 조건들의 집합으로서 정의된다.

https://ko.wikipedia.org/wiki/%EC%9C%A0%ED%95%9C_%EC%83%81%ED%83%9C_%EA%B8%B0%EA%B3%84

이더리움 상태 기계는, <Genesis Status 생성 상태>에서 출발한다. 

아무 상호작용(트랜잭션)도 일어나기 전의 백지상태인 초기 상태를 의미한다.

트랜잭션 / 상호작용이 진행되면, 이 초기 Genesis Status에서 다른 상태로 전이하게 되는데,

지금까지 도달한 최종 상태가 현재 상태를 의미한다.

 

https://preethikasireddy.medium.com/how-does-ethereum-work-anyway-22d1df506369

이더리움 블록체인 내의 <상태>는 수백만 개의 상호작용 내역을 담고 있다.

각 상호작용 내역은 <블록>의 형태로 모여 있으며, 각 블록은 일련의 상호작용 내역을 담고 있다. 

각 블록은 앞뒤의 다른 블록과 상호 연결되어 있다.

https://preethikasireddy.medium.com/how-does-ethereum-work-anyway-22d1df506369

 

상태의 전이, 한 상태에서 다른 상태로 넘어가는 일이 일어나기 위해서는, 거래/상호작용이 유효해야 한다.

유효하다는 것의 증명은, 채굴이라 하는 작업 증명 과정을 거쳐서 진행된다. 

채굴은, 컴퓨터들과 같이 특정 노드 그룹이 컴퓨팅 자원을 소비하여 유효한 상호작용의 블록을 생성하는 행위이다.

 

네트워크 내의 어떠한 노드이든, 채굴 노드(miner)임을 선언하면, 블록을 생성하고 유효 증명 / 작업 증명을 진행할 수 있다.

전 세계 수많은 채굴자들은 동시에 채굴을 진행하고, 각 채굴자는 블록체인의 블록을 제출할 때 수학적인 증명 과정을 거친다.

이 증명 작업 자체는 : 증명이 존재하면, 블록이 유효하다는 보장을 해준다.

 

메인 블록체인에 블록을 추가하기 위해서는, 이처럼 채굴자가 다른 경쟁 채굴자보다 빠르게 증명을 해내야 하고, 

그 증명 작업은 작업 증명이라 부르는 수학적인 증명을 제공하도록 하여 진행된다.

그렇게 새로운 블록의 유효성을 검증해 증명해낸 채굴자는 인센티브로서 암호화폐를 수령하는데, 

이더리움 블록체인의 경우 그 내재된 디지털 토큰인 <이더리움>을 받게 되는 것이다. 

 

 

결론적으로는, 앞서서 살펴본 블록체인의 증명 작업에 대한 대가로 주어지는 암호화폐가,
이번 경우에는 이더리움이라는 설명

 

이때, 다들 하나의 블록체인에 대해서 모두가 채굴 경쟁을 한다는 보장이 되어 있는지를 살펴보려면, 

블록체인의 원 정의로 돌아갈 필요가 있다.

transactional singleton machine with shared-state 라 함은, 

현재의 상태를 글로벌하게 (모든 영역, 전체에서) 모두가 납득하는 단 하나의 진실된 상태로 본다는 의미이다.

즉 현재의 상태가 여러 개로 나뉘어 무엇이 옳은가를 논쟁할 필요 없이 단 하나의 상태만 존재한다는 것이다.

 

만약 여러 갈래의 체인으로 나뉘어져 생성된다면, 이는 "Fork", 포크가 발생했다고 한다.

포크(fork) 또는 소프트웨어 개발 포크, 프로젝트 포크(project fork)는 개발자들이 하나의 소프트웨어 소스 코드를 통째로 복사하여 독립적인 새로운 소프트웨어를 개발하는 것을 말한다. 오픈 소스 소프트웨어의 경우 소스 코드가 공개되어 있고, 프로젝트에서 소스 코드를 통째로 복사하는 것이 허용되는 라이선스를 채택한 경우, 원저작자에 의해 재사용을 허가받은 코드이기에 포크를 통한 새로운 소프트웨어 개발이 가능하다. 

https://ko.wikipedia.org/wiki/%ED%8F%AC%ED%81%AC_(%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4_%EA%B0%9C%EB%B0%9C)

우리는 이러한 포크를 일반적으로 일어나지 않도록 하여, 시스템이 붕괴되지 않고, 공동체가 분열되지 않도록 한다.

 

가장 유효한 체인이 무엇인지를 판단하기 위해서, 

이더리움은 고스트 프로토콜이라는 메커니즘을 활용한다. 

 

GHOST = Greedy Heaviest Observed Subtree

가장 많은 계산이 소요된 체인이 가장 진실된 체인이라는 아이디어를 기반으로 하는 고스트 프로토콜은, 

이전에 살펴본 블록체인 작동 방식 아티클에서도 가볍게 다룬 원리이다.(이름만 이야기하지 않았을 뿐)

가장 긴 체인이 무엇인가를 확인하기 위해서, 가장 최근에 생성된 블록(Leaf 블록)의 블록 넘버를 확인한다.

최초로 생성된 제네시스 블록부터 넘버링이 붙어있는 것이기 때문에 현재까지의 체인의 블록 길이를 확인할 수 있다.

 

In simple terms, the GHOST protocol says we must pick the path that has had the most computation done upon it. One way to determine that path is to use the block number of the most recent block (the “leaf block”), which represents the total number of blocks in the current path (not counting the genesis block). The higher the block number, the longer the path and the greater the mining effort that must have gone into arriving at the leaf. Using this reasoning allows us to agree on the canonical version of the current state.

https://preethikasireddy.medium.com/how-does-ethereum-work-anyway-22d1df506369