[블록체인 스터디] 이더리움이란 무엇인가?

Wonkyun Jung·2023년 2월 17일
1

블록체인

목록 보기
1/1
post-thumbnail

이더리움(Ethereum) 이란?

이더리움은 종종 월드 컴퓨터(world computer)라고도 한다

이더리움은 스마트 컨트랙트(Smart Contract)라는 프로그램을 실행하는 오픈 소스에 기반을 둔, 전 세계에 걸쳐 탈중앙화된 컴퓨팅 인프라 스트럭쳐이다

-> 블록체인을 사용하여 시스템의 상태 변화를 동기화하고 저장하며, 이더(Ether)라고 하는 암호화폐를 이용하여 실행 자원비용을 측정하고 제한한다.

비트코인 VS 이더리움

공통요소

  • 참여자들을 연결하는 peer-to-peer 네트워크
  • 상태 변경을 동기화하는 *비잔틴 결함 허용 합의 알고리즘
  • 디지털 서명과 해시, 디지털 화폐(이더)같은 암호학 기반 기술의 사용

차별점

  • 이더리움의 주된 목적은 디지털 화폐 지급 네트워크가 아님 이더의 본질적인 사용 목적은 월드 컴퓨터로서의 이더리움 플랫폼 사용료를 지불하기 위한 유틸리티 화폐이다.

  • 매우 제한된 스크립트 언어를 사용하는 비트코인과 달리, 이더리움은 임의성과 무한 복잡성을 가진 코드를 실행할 수 있는 가상머신을 운용하는 범용 프로그래밍이 가능한 블록체인으로 설계

  • 비트코인의 스크립트 언어가 의도적으로 지불건에 대한 단순한 참/거짓 평가에만 제한되어 있지만, 이더리움 언어는     *튜링완전 언어이다 -> 이더리움이 범용 컴퓨터로 작동할 수 있다는 의미


* 비잔틴 결함 허용 합의 알고리즘 (비잔틴 장애 허용)

비잔틴 장군의 문제는 광활한 영토 지역마다 장군들이 통치하는 것을 가정한다. 이웃 나라 공격이 성공하려면 같은 날, 같은 시각에 모든 장군이 이끄는 병력을 집중시켜야 하는데, 이러한 목적을 달성하기 위한 메시지가 올바르게 전달되지 못하면 병력이 분산되어 공격은 실패하게 된다. 또한 장군들 가운데 배신자가 있다면 이러한 가능성은 더욱 커지게 된다. 여기서 비잔틴 장군 문제의 핵심은 동일한 내용의 메시지를 장군들끼리 공유할 수 있는 방법을 찾는 것이다.

비잔틴 장군의 문제를 블록체인에 적용해 본다면, 각 장군은 하나의 노드가 되며, 노드들은 현 시스템 상태에 합의를 달성할 수 있는 방법을 찾아야 한다. 분산화된 네트워크의 대다수의 참가자는 완전한 실패를 막기 위해 동일한 행동을 하기로 결정하고 이를 실천해야 한다. 그러므로 분산화된 시스템에서 이러한 합의를 달성할 수 있는 유일한 방법은 최소 3분의 2 혹은 그 이상의 신뢰할 수 있는 정직한 네트워크 노드를 확보하는 것이다. 시스템에 장애가 존재하더라도 전체의 1/3을 넘지 않는 다면 시스템이 정상작동 하도록 허용하는 합의 알고리즘이 비잔틴 장애허용 알고리즘이다


* 튜링완전 언어

튜링 완전(turing completeness)이란 어떤 프로그래밍 언어나 추상 기계가 튜링 기계와 동일한 계산 능력을 가진다는 의미이다. 이것은 튜링 기계로 풀 수 있는 문제, 즉 계산적인 문제를 그 프로그래밍 언어나 추상 기계로 풀 수 있다는 의미.

-> 임의로 주어진 튜링 머신이 주어진 입력 테이프에 대해 정지하는가 정지 하지 않는가를 판정하는 알고리즘의 존재 여부를 묻는 문제가 해결되어야 함

이더리움에서 튜링 완전의 함축적 의미:
튜링 완전 시스템은 종료되지 않는 프로그램을 설명하기 위해 사용되는 용어인 '무한 루프'에서 실행될 수 있다. 이더리움 역시 스마트 컨트랙트가 언제 종료될지 혹은 실제로 스마트 컨트랙트를 실행하지 않고 얼마나 오랫동안 실행될지를 예측할 수 없다

즉 노드가 유효성 검사를 시도할 때 우연히 또는 의도적으로 스마트 컨트랙트가 영원히 지속하도록 만들 수 있고, 이는 결국 DDOS 공격과 유사함 So, 이러한 자원낭비를 막기 위해서 가스(gas)라는 과금 매커니즘을 도입

EVM이 스마트 컨트랙트를 실행하게 되면, 가스는 각 명령어의 비용을 일일이 계산한다. & 스마트 컨트랙트를 실행시킬 때 트랜잭션은 스마트 컨트랙트를 실행하는 데 사용할 수 있는 가스의 최대 사용량을 가지고 있어야 한다.

If 계산에 소비되는 가스의 총향이 트랜잭션에서의 가스 가용량을 초과한다면 EVM은 실행을 중지: 가스는 각 프로그램이 사용할 수 있는 리소스를 제한해서 이더리움 튜링 완전 계산을 허용하게 하는 메커니즘이다.


범용 블록체인으로써의 이더리움

최초의 블록체인, 비트코인 블록체인은 비트코인 단위 및 소유 상태를 추적. 트랜잭션이 상태전이를 일으켜 코인의 소유권을 변경하는 탈중앙화된 합의 상태머신이다. 상태 전이는 여러 블록이 채굴된 후 모든 참가자가 시스템의 공통(합의)상태로 수렴할 수 있도록 합의 규칙에 따라 제한된다.

이더리움 역시 탈중앙화 상태머신, But 화폐 소유 상태만 추적하는 비트코인과 달리 이더리움은 범용 데이터 저장소, 키-벨류 튜플로 표현할 수 있는 모든 데이터를 저장할 수 있는 상태 전이를 추적한다.

이더리움에는 코드와 데이터를 저장하는 메모리가 있으며, 이더리움은 블록체인을 사용하여 이 메모리가 시간에 따라 어떻게 변하는지를 추적한다. 즉 범용 저장 프로그램 컴퓨터와 마찬가지로, 이더리움은 상태 머신에 코드를 로드하고 그 코드를 실행하고 그 결과 상태를 저장할 수 있다. 다른 점은 이더리움의 상태 변화가 합의 규칙에 의해 관리되고 상태가 전체적으로 배포된다는 것


이더리움의 구성요소

  • peer-to-peer 네트워크(P2P network)
    - 이더리움은 TCP 포트 30303으로 접속 가능한 이더리움 메인 네트워크에서 실행되며 devP2P라는 프로토콜을 실행한다.

  • 합의 규칙(consensus rules)
    - 이더리움의 합의 규칙은 기중 사양인 황서(Yellow paper)에 정의되어 있다

  • 트랜잭션(transaction)
    - 이더리움 트랜잭션은 보낸 사람, 받는 사람, 값, 및 데이터 페이로드가 포함된 네트워크 메세지다

  • 상태머신(state machine)
    - 이더리움 상태 전이는 바이트코드를 실행하는 스택 기반 가상 머신인 EVM(Ethereum Virtual Machine)에 의해 처리된다. '스마트 컨트랙트'라는 EVM 프로그램은 고수준 프로그래밍 언어(ex. 솔리디티)로 작성되고. EVM에서 실행되도록 바이트코드로 컴파일 된다.

  • 데이터 구조(data structure)
    - 이더리움의 상태는 트랜잭션 및 시스템 상태가 머클 패트리샤 트리라고 하는 시리얼라이즈 된 해시 데이터 구조로, 각 노드의 데이터베이스에 저장된다.

  • 합의 알고리즘(consensus algorithm)
    - 이더리움은 비트코인의 합의 모델인 나카모토 합의를 사용한다. 나카모토 합의는 순차 단일 서명 블록을 사용하여 작업증명(PoW)의 중요도 가중치가 가장 긴 체인을 결정한다. but 조만간 지분증명(PoS) 가중 투표 시스템인 코드명 캐스퍼(Casper)로 전환될 계획   =>   PoW, PoS에 대한 개념은 따로 게시물을 출간할 예정

  • 경제적 보안성(economic security)
    - 이더리움은 현재 이대시(Ethash)라는 작업증명(PoW) 알고리즘을 사용하지만 향후에 지분증명(PoS)알고리즘을 사용할 예정

  • 클라이언트(clients)
    - 이더리움은 클라이언트 소프트웨를 상호운용할 수 있는 몇 가지 구현체를 갖고 있는데, 가장 유명한 것은 게스(Go-Ethereum, Geth)와 패리티(Parity)다.

0개의 댓글