본문 바로가기
CS/3-2 블록체인

[블록체인] 08. Ethereum - An Overview

by 이지이즤 2022. 11. 19.

이더리움이란?

더보기
  • 이더리움
    블록체인 기술을 기반으로 한 가상자산의 일종으로, 비탈리크 부테린이 2014년 개발했다.
    2016년 하드포크를 거치면서 현재의 이더리움이 탄생했고, 이전 베타 버전은 이더리움 클래식이라고 부른다.

  • 스마트 계약(smart contract)
    계약 조건을 블록체인에 기록하고 조건이 충족됐을 경우 자동으로 계약이 실행되게 하는 프로그램이다.
    금융 거래 등 다양한 계약에 활용할 수 있다. 비탈릭 부테린(Vitalik Buterin)이 비트코인을 포크해 이더리움이라는 새로운 암호화폐를 만든 후 스마트 계약 기능을 구현했다. 
    개발자가 계약의 조건, 내용을 코딩할 수 있어 어떤 종류의 계약에도 활용할 수 있다. 예를 들어 5월 5일 비가 오면 10이더리움을 지급한다는 계약을 블록체인에 기록하면, 자동으로 실행이 되는 원리이다.

  • 솔리디티(solidity)
    이더리움에서 스마트 계약을 코딩하기 위해 사용하는 프로그래밍 언어이다.

  • 이더리움 가상머신(EVM: ethereum virtual machine)
    스마트 계약을 처리하는 가상의 컴퓨터로, 이더리움 블록체인의 노드들이 작동시킨다.

  • 가스(gas)
    이더리움 스마트 계약을 구성하고 있는 코드를 실행하기 위한 수수료를 말한다.
    스마트 계약이 무한정 반복되는 것을 막기 위한 장치이다.

  • 디앱(Dapps: Decentralized application)
    중앙에서 관리하는 중앙 서버가 없고 블록체인을 기반으로 해 P2P(개인과 개인) 형태로 작동하는 애플리케이션으로, ‘탈중앙화한 애플리케이션’의 줄임말이다. 스마트 계약과 사용자 인터페이스로 구성된다.


* Bitcoin, Ethereun플랫폼임.
* BTC, ETH : 각각의 암호화폐(currency) 그 자체를 의미

 

Ethereum

Bitcoin은 payment를 위한 platform이지만, Ethereum은 general purposeplatform임.
ATM machine과 노트북/컴퓨터 간의 차이라고 빗댈 수 있을 정도임.
목적은 Dapp(=dApp, decentralized applications) 실행. <- smart contract 코드에 의해 만들어짐.

2013/11에 Vitalik Buterin이 이더리움 개념 발표함.
블록체인에서 Dapp을 구동시키기위해 program(smart contract)를 생성할 수 있는
Turing-complete language(노트북이 실행할 수 있는 모든 프로그램) 플랫폼을 개발해보자는 아이디어.

Bitcoin에서는 script language가 극히 제한되어있고 제한된 것만 허용하지만,
Ethereum은 제한이 없는 범용의 컴퓨터 프로그램을 작성해서 블록체인에 집어넣을 수 있도록 허용함.

블록체인에 암호화폐 거래 기록만 저장(bitcoin)하는 게 아니라 소프트웨어도 저장함.
(= Distributed Turing Machine with Blockchain Protection)

* Turing Machine : 추상 기계
* Turing complete : 어떤 제한도 없는 프로그램
튜링완전언어 + 무한한 저장공간 =  모든 계산 가능한 문제를 계산해내는 기계 = 튜링기계(인간의 뇌)
ex) 파이썬으로 작성한 어떤 프로그램도 실행할 수 있는 플랫폼을 만들자.
그리고 그 실행의 결과를 블록체인에 저장함으로써 그 누구도 변조하거나 조작할 수 없게 하자.
파이썬 프로그램 자체도 블록체인에 집어넣어서 이것 또한 변조나 조작하지 못하게 하자.
인기있는 파이썬 프로그램이 블록체인에 들어가있다면, 사람들이 돈(일정 수수료)을 지불하고
파이썬 프로그램을 실행시킬 수 있도록 하자. 이것이 바로 이더리움의 아이디어!
즉, Blockchain Protection을 제공하는 Turing Machine임.
Turing Machine의 실행 결과로 변경되는 내용이 블록체인에 저장됨.


computer science 관점에서의 Ethereum

: 채굴자들이 열심히 실행시켜주는 world computer(하나의 글로벌 컴퓨터)
프로그램에 의해서 작동하니까 deterministic하지만 어떤 상태의 제한이 존재하지 않음. state 개수도 제한 없음.
무제한의 능력을 가진 컴퓨터!

이 컴퓨터의 모든 상태가 블록체인에 저장되어있기 때문에 멀리 떨어진 거리에서도 블록체인에
어떤 프로그램을 구동시켜달라고 요청 가능. 내 프로그램을 블록체인에 올려달라는 요청도 가능.
즉, computing을 제공하는 platform -> 이때 사용하는 프로그램을 smart contract라고 함.
smart contract라는 코드 자체가 블록체인에 기록되고 누구든지 사용 가능.
이더리움을 통해 다른 사람이 만든 인기있는 프로그램을 얼마든지 사용 가능. 
계약관계가 기록되므로 계약을 절대로 어길 수 없음.

* ether
 : 프로그램 호출/등록을 위해 필요한 cryptocurrency. (이더리움에서 사용하는 암호화폐)

 

Compare Ethereum to Bitcoin

  • 공통점
    - P2P network
    - Ethash 알고리즘을 사용해서 Proof-of-Work을 했었음.
      (현재 이더리움은 The Merge upgrade 이후에 Casper 알고리즘을 사용하는 Proof-of-Stake로 바뀌었음.)
    - 크게 2종류의 crypto 사용중
      ① digital signature
          : ECDSA 사용 (Elliptic Curve Digital Signature Algorithm) 비트코인의 ECC 가져다 씀.
      ② hashes
          : 비트코인은 SHA-2 family의 SHA-256 사용, 이더리움은 SHA-3 family의 Keccak 알고리즘 사용
    - 자체 화폐 체계를 갖고 있음(BTC, ETH)

  • 차이점
    이더리움은 지불이 주 목적은 아님. (범용의 목적)
    그러다보니 payment를 위한 BTC와는 달리, 이더리움의 currency는 사실상 utility currency 역할

    이더리움은 general-purpose programmable blockchain이며,
    임의의 제한 없는 complexity를 가지는 코드를 실행시킬 수 있는
    전 세계적인 규모의 virtual machine을 돌리는 게 목적임.

    이더리움에서 실행시키는 코드에는 어떠한 제한도 없음.(Turing complete)
    비트코인의 script는 지극히 제한되어있고 payment가 받아들여질 수 있는지 T/F로 구분하는 역할만 제공함.

 

Ethereum in short

개발자들을 위한 프로그래밍 플랫폼임.
어떠한 제약 없이 원하는 프로그램을 작성하고, 블록체인에 저장하고,
다수가 실행시키고, 실행 결과를 저장하는 것 등을 가능하게 하는 플랫폼임.
즉, 개발자들이 개발한 프로그램(Dapp; 탈중앙화된 앱)이 이더리움의 존재 목적임.

여러 매커니즘들을 따로 구현할 필요 없이 이더리움 블록체인 위에서 application 개발 가능.

* 이더리움 블록체인이 제공하는 기능들
 : P2P network, distributed ledger(저장소), consensus algorithms, etc

 

Ethereum in Detail

 

* EVM (Ethereum Virtual Machine)
 : Solidity등의 이더리움에서 지원하는 프로그래밍 언어로 작성된 코드(smart contract)를
   Ethereum Bytecodes로 바꿔서 EVM에서 실행함.

 

 


Ethereum’s stages of development

암기x, 참고삼아 알아두자
1. Frontier : from July 30, 2015 to March 2016 (아이디어는 2013에 나왔었음)
2. Homestead : from March 2016 to October 2017
3. 
Metropolis : from October 2017 to January 2020* (지켜지지 않았음)
4. 
Serenity : expected January 2020* (지켜지지 않았음. 지난 달에 시작했음. PoS로 넘어가는 단계.)
   메인 넷과 별도인 네트워크를 테스트하는 것이 주 목적이었음. 충분한 테스트 후 이더리움 메인 넷과 합쳐졌음.
   (
-> Beacon chain (Phase 0 of Serenity) finally merged with the original Ethereum chain in September 2022)

cf. (July 2016) an unplanned hard fork(해커의 공격 이전 시점으로 undo)
    : the DAO hard fork
(after $50 million worth of ETH was stolen due to a contract vulnerability,
      to cause the creation of
Ethereum Classic)
      -> Ethereum(ETH)과 Ethereum Classic(ETC)으로 크게 갈라짐

* DAO (Decentralized Autonomous Organization)
 : 탈중앙화된 자율 조직 (기관이나 조직을 프로그램으로 구현해놓은 것)

 

Ethereum : A General-Purpose Blockchain

비트코인은 코인의 소유권이 변경되는 것을 기록하는 데에 관심이 있음.
이더리움은 지불보다는, 프로그램을 실행시키는 것이 주된 목적임.
프로그램을 실행시켜서 A가 B로 바뀌었다는 것을 블록체인에 기록함.
-> general-purpose data store 역할. (프로그램의 실행결과까지도 저장.) 
    {key(메모리 주소)-value(내용)}을 가지는 data와, code까지도 포함시킬 수 있는 store를 가지고있음.

원하면 코드 업로드하여 블록체인에 기록 가능, 얼마든지 호출해서 사용도 가능
-> 세계 전 인류가 개발자이자 사용자인 world computer! (distributed globally)

 

Ethereum and Turing Completeness

* Turing Machine
 : 실물 컴퓨터가 등장하기 전에, 아이디어 개념으로 제시된 추상적인 컴퓨팅 기계로,
   symbol을 읽거나 쓸 수있음.

* Halting problem
 : uncomputable한 problem.
   임의의 프로그램과 집어넣을 입력이 주어졌을 때, 그 input을 가지고 프로그램을 실제로 실행시켜보기 전에는
   이 프로그램이 halt(종료)할 것인지 아닐 것인지 판단할 수 없음. (infinite loop 미리 판단 불가능)

부테린이 이더리움을 turing complete한 프로그래밍 언어로 실행할 수 있는 머신으로 만들겠다고 하는 순간
halting problem을 피해갈 수 없음. -> 누군가가 smart contract를 통해서 악성코드(어떤 input을 집어넣든지 무한히 돌아감)를 올려놓았을 때 걸러낼 수 없음(미리 알아챌 수 없음)..

따라서 turing complete machine을 이더리움으로 제공하려면 halting problem을 해결해야함.
그렇지 않으면 DOS공격 가능하므로.

=> 코드를 실행할 때마다 수수료(gas)를 붙이자!
(내가 수수료로 지불하는 돈) < (코드를 실행함으로써 발생하는 비용) 이 되는 순간 코드 실행이 강제 종료됨.

 

Ethereum’s metering mechanism

* gas (실행 수수료)
 : 이더리움을 작동시키는 휘발유 역할. 

transaction이 smart contract 코드 실행을 유발(≒function call)할 때,
지불할 용의가 있는 gas의 총량(upper limit)을 지정해서 보냄.
EVM은 이 upper limit보다 더 초과된 gas가 사용되어야하는 시점에서 실행을 중단시킴.
(infinite loop실행 방지하여 공격자들이 자원을 무한히 소비하는 것을 막을 수 있음)
-> Turing-complete computation이 이더리움 블록체인 상에서 가능해짐. 

 

 


Decentralized Applications(DApps)

이더리움의 존재 목적!! 이더리움은 DApp을 위한 플랫폼임.

일반 사용자가 사용하기 편하도록 smart contract를 적절하게 포장한 것임. (smart contract + web interface)
open, decentralized, peer-to-peer infrastructure services에서 구현된 web application이며,
그것의 핵심에 smart contract가 있음.


* DApp과 App의 차이점
 : DApp은 구동하려면 gas수수료도 내야하는데 왜 쓰는 것일까?
   서버가 아니라 블록체인 기반이므로, 모든 노드를 다운시키지 않는 한 이더리움의 앱이 다운되지 않음.
   이더리움을 구성하는 일부 노드가 없어져도 DApp은 잘 동작함. 굉장히 견고함.

 

Ethereum and “Web 3.0”(coined by Ethereum co-founder Gavin Wood)

  • Web 1.0 : read-only
    static한 object를 server에서 client로 끌어와서 보여줌

  • Web 2.0 : read-write (현재)
    개별 사용자가 컨텐츠 업로드 가능 ex) 유튜브

  • Web 3.0 : read-write-own
    소유권! 어떤 컨텐츠의 가치와 소유를 판단 ex) NFT
    Gavin Wood는 Web 3.0 시대가 오면 블록체인이 핵심 기술이 될 것이라고 말했음.

더 새롭도 뛰어난 인터넷 세상이 올 것인데 그때는 blockchains, cryptocurrencies, and NFTs가 핵심 기술이 될 것임.

Web 3’s core principles (핵심 원리)

- decentralized 
 : 지금은 탈중앙 아님. big player가 있음(ex. 구글, 아마존).
   근데 big player가 없어지는 시대가 될 것임! 컨텐츠 생성이나 소유 등이 각 개인에게 동등하게 돌아갈 것임.

- permissionless 
 : 업로드 할 때 누군가의 허락이 필요하지 않음. 접근 권한이 있다든지 비용을 지불해야 한다는지 하는 일은 없을 것임.

-
native payments 
 : 고유의 payment 체계가 필요함. cryptocurrency가 쓰일 것임.(not relying on outdated banks)

- trustless 
 : 누구도 신뢰할 필요 없음. incentive나 경제 매커니즘을 이용해서 누군가를 믿을 필요 없게 만들 것임.
  (miner가 정직하게 행동할 것이라는 기반을 두지 않고 모두가 단지 자기 이익을 극대화 하는 방향으로
  행동할 것이라고
가정하는 비트코인에서의 사상과 일맥상통함)

 

댓글