들어가기 전에

  • 계산 이론’ 및 ‘알고리즘’, ‘분산시스템’ 개념이 있다면 좋을 것

    • deterministic,
    • unbounded state machine,
    • singleton
  • 암호화폐 이더 (ether)
    - 실행 자원 비용을 측정 및 제한 - DDOS 공격을 막을 수 있음


비트코인(Bitcoin)과의 비교

  • 공통점

    • P2P 네트워크
    • 비잔틴 결함 허용 합의 알고리즘 (PoW: 작업증명)
    • 디지털 서명, 해시, 디지털 화폐 (암호학 기반 기술 사용)
  • 다른 블록체인과 공통점이 많지만, 차별화되는 점도 많음
    • 이더리움의 목적과 구성은 다른 블록체인과 현저히 다름.

      • 이더리움의 주된 목적은 네트워크 위에 어플리케이션을 만들 수 있게 함에 있음.
      • 따라서 이더 (ether) 또한 이더리움 플랫폼 사용료를 지불하기 위해 유틸리티 화폐의 목적성을 띰.
    • 비트코인과 비교했을 때 언어도 다름.

      • 이더리움의 언어는 이더리움이 범용 컴퓨터로 작동할 수 있게 하는 튜링 완전(Turing-complete) 언어
      • 이더리움은 임의성과 무한 복잡성을 가진 코드를 실행할 수 있는 가상 머신(Virtual machine)을 운영하는 범용 프로그래밍이 가능한 블록체인으로 설계됨.
      • 그에 반해, 비트코인은 T/F 질문에만 답할 수 있는 스크립트 언어(Script)이다.

블록체인 구성요소

퍼블릭 블록체인의 구성요소:

  • 가십 프로토콜을 기반으로 트랜잭션을 전파하는 P2P 네트워크

    가십 프로토콜(gossip protocol)이란?

    분산환경에 메시지를 전달하는 커뮤니케이션 방식의 하나로, “Epidemic protocol”이라고도 불린다.

    Two forms of epidemics (두 가지 전파 방식)

    • Anti-entropy
    • Rumor spreading
  • 상태 전이를 나타내는 트랜잭션 형식의 메시지

  • 트랜잭션의 구성요소와 유효성을 판단하는 합의 규칙의 집합

  • 합의 규칙에 따라 트랜잭션을 처리하는 상태 머신(state machine)

  • 검증되고 적용된 모든 상태 전이의 장부 역할을 해줄 수 있는 체인

  • PoS나 PoW같이 강제화된 합의 알고리즘

  • 게임이론적으로 유효한 인센티브 메커니즘(즉, 적절한 보상 시스템) ex)PoW costs + block rewards

  • 위에서 언급한 것들을 구현한 하나 이상의 오픈 소스 소프트웨어(clients)


  • 비트코인은 기준이 되는 구현체를 클라어언트 소프트웨어로 개발해놓음.

  • 반면 이더리움에서는 구현체가 아닌 기준이 되는 사양을 제시(황서에 제시, Yellow Paper)하고 여러 클라이언트들은 이 사양에 맞춰서 개발된다.


이더리움의 탄생

  • 비트코인 위에서 개발을 하기에는 여러 한계가 있었다.

  • 이에 2013 12월, 비탈릭 부테린이 이더리움 백서(white paper)를 공유하기 시작했다.

  • 개발자가 P2P 네트워크, 블록체인, 합의 알고리즘 등의 기본 메커니즘을 구현하지 않고도 그들의 어플리케이션을 프로그래밍할 수 있게 하자는 게 이더리움의 생각이었다.

  • 즉, 그냥 새로운 기술을 발명한 것이 아닌 발명한 신기술과 기존 기술을 새로운 방식으로 결합한 것이다.

  • 2015년 7월 30일, 첫 번째 이더리움 블록이 채굴되었다.

이더리움 개발의 4단계

  1. Frontier (2015년 7월 시작)

    • 이더리움의 초기 단계

    • 제네시스블록(최초블록) 이후 노드가 활성화되는 단계. 즉, 블록체인이 생성되는 단계

    • 채굴과 이더 교환을 가능하게 하여 커뮤니티가 채굴 장치를 돌릴 수 있게 하고, 사람들이 디앱을 테스트하고 이더를 획득하여 자신의 소프트웨어를 이더리움에 업로드할 수 있는 환경을 구축하기 위한 단계.

  2. Homestead (2016년 3월 시작)

    • 이더리움의 두 번째 단계

    • 이더리움 생태계를 구축해나가는 단계

  3. Metropolis (2017년 10월 시작)

    • 이더리움의 세 번째 단계

    • 좀 더 가볍고, 빠르고, 안전한 이더리움으로 2번은 배포(release)로 나뉨:

      • the Byzantium hard fork (2017년 10월) : 채굴 보상 5 → 3 ETH

      • the Constantinople hard fork (2019년 2월) : 채굴 보상 3 → 2 ETH

  4. Serenity = ETH 2.0 (2021년 시작)

    • PoS 알고리즘(지분증명 알고리즘)으로의 전환(Capser), 샤딩, 새로운 가상머신 (EWASM).

      추가 자료: EVM to eWASM: 이더리움 실행환경의 변화에서 발견한 투자 포인트

    • 이더리움 2.0은 3단계를 거쳐 진행된다:

      • Phase 0: 비콘 체인(Beacon Chain) 및 PoS 알고리즘 캐스퍼(Capser) 출시

      • Phase 1: 샤드 체인 활성화

      • Phase 2: The Merge - 이더리움 2.0의 중요한 기능들을 모아서 체인별로 업그레이드하고 지갑이체를 허용하고 계약을 실행하는 단계

        참고: ETH 2.0, What is it?

    • the Merge, Surge, Verge, Purge, Splurge 단계도 나뉘는 데 이에 대해서 이후 다른 포스팅으로 자세하게 다룰 것.
      자세한 설명은 여기 :Understanding the Merge, Surge, Verge, Purge, and Splurge


이더리움: 범용 블록체인

  • 최초의 블록체인인 비트코인

    • 비트코인 단위 및 소유 상태를 추적
    • 트랜잭션이 상태 전이를 일으켜 코인의 소유권을 변경하는 탈중앙화된 합의 상태 머신
    • 이 때 상태 전이는, 여러 블록이 채굴된 후 모든 참가자가 시스템의 합의 상태로 수렴할 수 있도록 합의 규칙에 의해 제한
  • 이더리움

    • 마찬가지로 탈중앙화 상태 머신이지만 화폐 소유 상태만 추적하는 것이 아닌 범용 데이터 저장소

      • key-value tuple(키-밸류 튜플)로 표현할 수 있는 모든 데이터를 저장할 수 있는 저장소의 상태 전이를 추적
    • 범용 컴퓨터에서 사용되는 RAM의 데이터 스토리지 모델과 동일한 용도

    • 코드와 데이터를 저장하는 메모리가 있고, 블록체인을 사용하여 이 메모리가 시간에 따라 어떻게 변하는 지를 추적

    • 범용 저장 프로그램 컴퓨터와 마찬가지로, 이더리움은 상태 머신에 코드를 로드하고 그 코드를 실행하고 그 결과 상태를 저장할 수 있다.

    • 다만, 일반 범용 컴퓨터와의 차이는

      • 이더리움의 상태 변화는 합의 규칙에 의해 관리되고
      • 상태가 전체적으로 배포된다는 것이다.

이더리움의 구성요소

  • P2P 네트워크

    • 이더리움은 TCP 포트 30303으로 접속 가능한 이더리움 메인 네트워크에서 실행되며, DEVp2p라는 프로토콜을 실행한다.
    • **What is DEVp2p Wire Protocol?** DEVp2p Wire Protocol defines the protocols for communication in the way TCP does across networks. Developers can raise issues to discuss improvements, contribute, or provide feedback to the DEVp2p Wire Protocol and the other network protocol specifications contained in the same project. Although hosted by Ethereum, these specifications apply across chains.
  • 합의 규칙

  • 트랜잭션

    • 보낸사람, 받는사람, 값 및 데이터 페이로드가포함된 네트워크 메시지
  • 상태 머신(State machine)

    • 이더리움 상태 전이는 바이트코드(bytecode, 기계어명령어)를 실행하는 스택 기반 가상 머신인 EVM(EthereumVirtual Machine, 이더리움가상머신)에 의해 처리된다. '스마트 컨트랙트라는 EVM 프로그램은 high-level language(예: 솔리디티(Solidity)로 작성되고, EVM에서 실행되도록 바이트 코드로 컴파일된다.
  • Data structures

    • 이더리움의 상태는 트랜잭션 및 시스템 상태가 머클 패트리샤 트리(Merkle Patricia Tree)라고 하는 시리얼라이즈(serialize)된 해시 데이터구조로, 각 노드의 데이터베이스(database, 보통 구글의 LevelDB)에 저장된다.
  • 합의 알고리즘

    • 이더리움은 비트코인의 합의 모델인 나카모토 합의(NakamotoConsensus)를 사용한다.
      나카모토 합의는 순차 단일 서명 블록을 사용하여 작업증명(PoW)의 중요도 가중치가 가장 긴체인(현재상태)을 결정한다. 그러나 조만간 지분 증명(PoS) 가중 투표 시스템인 코드명 캐스퍼(Casper)로 전환할 계획이다.
    • Serenity (ETH 2.0) PoS 전환완료. (2022.09)
  • Economic security

    • 2022년 9월까지, 이대시(Ethash)라는 PoW 알고리즘 사용.
    • The Merge 이후, PoS 알고리즘으로 전환.
  • 클라이언트

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

이더리움과 튜링 완전

  • 이더리움은 튜링완전 머신 (비트코인은 튜링불완전 머신)

< 튜링완전이란 무엇인가? >

먼저 튜링머신(Turing Machine, UTM)이 뭔지에 대해서 이야기를 해보면,

  • 영국의 수학자인 알란 튜링에 의해 고안된 기계로, 가상적인 기계 (수학적 상상)
  • 무한한 저장공간만 있다면 이 세상의 모든 문제를 풀 수 있는 기계

튜링 완전이란,

어떤 프로그래밍 언어나 추상 머신이 튜링머신과 동일한 계산 능력으로 문제를 풀 수 있다는 의미로 만약 보편 만능 기계가 수행할 수 있는 모든 기능을 수행할 수 있다면, 이를 튜링 완전하다고 함.

  • 정지 문제 (Halting Problem)

    • 튜링 머신이 모든 수학적 문제를 해결할 수 없다는 것을 증명하기 위한 반례
    • 정지 문제를 통해서 알 수 있는 가장 중요한 사실은 “튜링완전 머신이 무한 루프에 빠질지 아니면 작동을 하다가 결국에는 정상 수행하여 종료될 지 판별할 수 없다는 사실”이다.
    • 예를 들어, 전체 연산을 수행하는데 1시간이 걸리는 반복문이 존재할 경우, 개발자는 해당 루프가 무한 루프인지 아니면 언젠가 종료될 것인지 판별할 수 없고 머신 또한 마찬가지.
  • 이더리움 가상 머신 (EVM)이라는 상태 머신 상에서 메모리에 데이터를 읽고 쓰면서 저장된 프로그램을 실행할 수 있는 이더리움은 튜링 완전 시스템을 가능하게 하므라 UTM(튜링 머신)이라고 볼 수 있음.

  • 이더리움은 한정된 메모리라는 제한 조건에서 모든 튜링 머신으로 계산될 수 있는 어떠한 알고리즘도 계산

  • 이더리움 프로그램은 ‘어디에서나’ 실행되지만, 합의 규칙에 의해 보장되는 공통 상태를 만듦.


‘기능’으로서의 튜링 완전

  • 튜링 완전이 좋은 것만은 아님.

  • 특히 개방형 액세스 (open access) 시스템에서는 매우 위험

    • 정지 문제(Halting problem) 때문
  • 단일 시스템의 경우, 응답하지 않거나 무한 루프를 돌 때 그냥 껐다가 키면 그만이지만, 공개 블록체인에서 이는 불가능


튜링 완전의 함축적 의미

  • 프로그램을 실행하지 않고는 프로그램의 경로를 예측할 수 없음.

    • 모든 참여 노드(클라이언트)는 모든 트랜잭션을 검증하고 그 트랜잭션이 호출하는 스마트 컨트랙트를 실행
    • 이더리움은 스마트 컨트랙트가 종료될지 혹은 얼마나 오랫동안 실행될 지 예측할 수 없음.
    • 트랜잭션에 대한 실행 및 검증이 완료된 후에 블록이 생성되는 데, 무한 루프를 돌 경우에 블록이 영원히 생성되지 않는다는 문제점 발생 - DOS attack (서비스 거부 공격)
  • 위와 같은 상황을 해결하기 위해 가스(gas)라는 과금 메커니즘을 도입 //부테린은 천재인것일까..

💡 가스 (Gas)

  • EVM이 스마트 컨트랙트를 실행하게 되면, 가스는 각 명령어(계산, 데이터 접근 등)의 비용을 하나하나 계산함. (각 명령어는 각각 정해진 가스 단위 비용 있음—소요되는 시간, 난이도에 따라 다름.)
  • 스마트 컨트랙트를 실행하려는 트랜잭션은 스마트 컨트랙트를 실행하는 데 사용할 수 있는 가스의 최대 사용량을 가지고 있어야 함. 그렇지 않으면 EVM은 실행 중지함.
  • 예를 들어, 무한 루프를 돈다고 해도 언제가는 가스가 동나기 때문에 작동을 멈출 수 밖에 없음.
  • 즉, 가스는 각 프로그램이 사용할 수 있는 리소스를 제한해서 이더리움 튜링 완전 계산을 허용하게 하는 메커니즘

범용적인 블록체인에서 탈중앙화 애플리케이션 (DApps)

  • DApps > Smart Contracts (dApp이 스마트 컨트랙트보다 포괄적인 개념)

  • DApp의 최소 구성요소:

    • 블록체인 스마트 컨트랙트
    • 웹 프론트엔드 사용자 인터페이스
  • 추가로, DApps은 아래와 같은 탈중앙화 구성요소 포함:

    • P2P 스토리지 프로토콜과 플랫폼
    • P2P 메시지 프로토콜과 플랫폼

💡 ÐApps

문자 Ð는 라틴어로 “ETH”를 나타낸다. (이더리움을 나타내는 것과 비슷)

유니코드 코드포인터는 ‘0xD0’, HTML는 문자 entity ‘eth’


제 3세대 인터넷

  • Gavin Wood박사가 처음 제안한 것으로, 웹3는 웹 애플리케이션에 초점을 두는 새로운 버전을 말한다 (중앙 집중적으로 관리되는 애플리케이션으로부터 탈중앙화 프로토콜에 의해 구축된 애플리케이션으로의 전환).

  • web3.js

    • 자바스크립트 라이브러리, 브라우저 안에서 실행되는 자바스크립트 애플리케이션과 이더리움 블록체인을 연결한다.
    • 스웜(Swarm)이라는 P2P 스토리지 네트워크와 위스퍼(Whisper)라는 P2P 메시징 서비스를 포함한다.

이더리움의 개발 문화

  • 비트코인(Bitcoin) - 과거에 초점 (보수적인 원칙)

    • 이전 변경사항과 호환이 되는 경우에만 변경사항이 업데이트됨.
    • 기존 클라이언트가 업그레이드를 원하지 않는 경우 안할 수도 있음.
  • 이더리움(Ethereum) - 미래에 초점

    • 변화가 필요하다면 결과가 어떻든 한다. (이전과 호환성이 깨지거나 해도 업그레이드함)
    • 빠른 혁신, 빠른 진화, 미래 지향적인 개선을 전개하는 것이 큰 특징
  • 개발자로서,

    • 유연함을 가져야하고
    • 기존 가정의 일부가 변경되는 것에 따른 인프라 재구축을 준비할 수 있어야 한다.
    • 블록체인의 불변성으로 인해 새로운 것을 배포하고, 사용자와 앱, 자금을 이전하고 다시 시작할 준비가 되어야 함.
  • 스마트 컨트랙트에 대한 어느 정도의 통제권을 가지고 있다는 점에서 완벽한 탈중앙화는 아니다.(플랫폼을 진화하기 위해 스마트컨트랙트를 폐기하고 재배포하기 때문.)

  • 긍정적인 점은 “바이크 셰딩(bike-shedding, 사소한 논쟁으로 개발을 지연하는 것 )”이 거의 없다는 점이다.


왜 이더리움을 배우나?

  • 무엇보다도 이더리움은 개발자를 위해 만든 개발자의 블록체인이다.

  • 자바스크립트 어플리케이션에 익숙한 개발자라면, 작동 가능한 이더리움 코드들을 매우 빠르게 만들 수 있을 것이다.


하트는 사랑입니다 ❤️

0개의 댓글