블록체인

[블록체인] 이더리움이란?

윤밥밥 2023. 12. 17. 15:53

이더리움

기존의 비트 코인은 스크립트 언어로만 제한해 둬서 튜링 컴플리트 하지 못하며, smart contract가 존재하지만, 이 또한 매우 제한되어 있었다.

이에 이더리움은 튜링 컴플리트하며, 자유로운 smart contract를 추구하면서 나타났다.
이더리움도 비트코인과 마찬가지로 탈중앙화를 추구한다.

이더리움은 블록체인에 암호화폐와 더불어 거래 기록과 소프트웨어를 저장한다.

  • 분산된 튜링 시스템: 합의에 이르는 네트워크에 의하여 스마트 컨트랙트가 실행된다.
  • 블록체인의 보호 안에서 존재하는 튜링머신: 컨트랙트 상태를 블록체인에 저장하여 누구도 이를 수정, 부인할 수 없게 한다.

이더리움은 범용 컴퓨터(world computer)이다.

상태 수가 무한으로 갈 수 있으며(= state marchine), 프로그램이 싱글톤으로 구성되어 가상머신에 의해 여러 상태를 적용할 수있다.
ether라는 화폐를 통해 자원의 소모(실행 시간)을 제한한다. 즉 ether를 프로그램 실행하는 쪽에 주는 것이다.
스마트 컨트랙트를 통해 프로그램을 실행하며, 프로그램의 상태 변화를 블록체인에 저장한다.

따라서 이더리움을 통해 내 프로그램이 특정 서버에서만이 아닌, 전 세계에서 실행될 수 있도록 하며, 이로 인하여 정전 등의 상황에서도 프로그램이 실행될 수 있도록 한다.

이더리움과 비트코인의 차이점

  • 이더리움의 목적은 payment가 아니다.
  • 이더리움의 ether는 utility 화폐로써, 이더리움 플랫폼 사용에 대한 지불용도이다.
  • 비트코인의 스크립트 언어는 매우 제한되어 단순히 true/false의 결과 평가로만 제한된다면, 이더리움은 임의의 제한 없는 복잡한 코드를 실행할 수 있는 가상머신을 돌리는 블록체인이다.
    # 참고로 이더리움의 virtual marchine을 EVM이라고 부른다. 스마트 컨트랙트를 highlevel languege로 구현하면, 이를 이더리움 바이트 코드 변환시켜 EVM상에서 돌린다.

즉 이더리움을 통해서 개발자들은 이더리움의 내부 구조(합의 알고리즘 p2p)를 전혀 몰라도 특정 애플리케이션을 프로그래밍하는 것이 가능하다. 이더리움은 또한 보장을 해주며(수정, 변경 x), 보안도 제공해준다.

범용 목적의 블록체인으로서의 이더리움

기존 비트코인은 비트코인에 대한 소유, 양도등에 대해 모든 사용자가 consensus를 하는 분산 상태 머신(distributed state machine)이다.
이더리움 또한 분산 상태 머신이다. 하지만 이더리움은 화페의 소유뿐만 아니라 키와 밸류로 이루어진 데이터의 저장 역할도 한다.
이더리움을통해 코드와 데이터를 저장할 수 있으며, 어떻게 상태가 변해가는 지 또한 추적할 수 있다. 또한 누구나 이러한 코드를 실행시키며, 그 결과 또한 저장할 수 있다.
이렇게 변한 상태는 각자가 결정하게 된다. 즉 블록체인처럼 대세를 따르게 된다.

위에서 14c5f8ba, bb76a980등은 키이다. 그 안에 각각의 value가 존재한다.

  • 14c5f8ba의 value는 ether화폐이다. 즉 계좌이다. 이를 externaly owned account라고 한다.
  • bb76a980에서 value는 계좌와 코드 이다. 이를 contract account라고 한다.

Transaction에서 from 과 to는 from에 있는 계좌의 돈을 to에게 보내는데, value만큼 보내겠다는 것이다.
또한 data에는 코드를 실행시킬 때 넣을 argument가 포함된다.
sig은 from에 대한 서명이다.

state'을 보면 이 트랜잭션에 의하여 14c5f8ba의 잔돈이 줄어들었고, 반면 bb76a980는 잔돈이 늘어나면서 코드가 변한 것을 알 수 있다.

이더리움은 Turing completeness하다.

튜링머신: 수학적 모델이며, 저장장치가 존재하며 여기에 읽고 쓰는 액션을 할 수있는 state marchine이다.

  • 튜링머신에는 halting problem이라는 문제가 있다.
    halting problem: 프로그램과 그에 대한 입력이 주어지면 이 프로그램이 문제에 대한 답을 구할 수 있을지 없을 지 판별할 수 없다는 문제. 즉 입력이 주어져도 이게 오류가 없을 지 모른다는 것이다.
  • 튜링 완전한 시스템
    튜링 완전한 시스템이란 튜링머신이 할 수 있는 모든 것을 할 수 있는 시스템. 예를 들어 이더리움은 튜링 머신인데, 왜냐하면 튜링 머신인 파이썬이 할 수 있는 모든 일을 할 수 있기 때문이다.
    즉 이더리움은 어떤 복잡한 문제도 계산할 수 있다.

다만 이더리움이 튜링 완전함으로써 문제가 생긴다. 프로그램이 무한 루프를 돌 게 되면 이는 과부하의 원인이 되며, 이것은 공격자들이 ddos 공격을 할 계기가 되기 때문이다.
이더리움은 무한 루프를 돌지 판별할 수 없으므로 이를 해결해야한다.
해결책: gas라는 프로그램을 돌리는 데 사용되는 금액을 정해서, 정해진 gas를 모두 소모하면 프로그램을 멈추며, 원래 초기 상태로 되돌린다.(즉 중간 상태를 저장하지 않는다.) 이를 통해서 돈을 엄청 많이 내야 프로그램이 계속 도므로, 공격자들이 공격을 못한다.

이더리움의 metering mechanism

EVM은 스마트 컨트랙트를 실행할 때, 모든 명령어 하나하나(계산,데이터 접근등)에 대한 비용을 계산한다. 즉 한 명령어에 대한 비용이 미리 정해진다.
사용자는 미리 gas의 최대치를 정해두며, evm이 돌리면서 최대치를 넘기면 바로 멈춘다.

Dapps(decentralized Application), 탈중앙화 app

  • dapp은 간단하게는 스마트 컨트랙트와, web user interface로 구성되어 있다.
  • 즉 dapp은 탈중앙화된 p2p 서비스 위에 지어진 web application이다.
  • 또한 dapp은 탈중앙화된 storage protcol과 탈중앙화된 messaging protocol로 구성된다.

storage protocol이란?
기존 애플리케이션은 서버를 필요로 한다. 하지만 dapp은 탈중앙화하여 모든 노드가 서버이므로, 모든 노드가 동등하게 정보를 저장한다.
message protocol이란?
서로 다른 dapp끼리 통신할 때 사용되는 프로토콜이며, 대표적으로 whisper가 존재한다.

WEB3.0

  • web1.0이란 static한 페이지, 즉 realonly한 페이지를 클라이언트에게 보여주는 것
  • web2.0이란 readwrite한 페이지, 즉 유튜브처럼 클라이언트가 페이지를 구성할 수는 있지만, 동영상이 짤릴 수 있는 거처럼 권한이 나한테 없는 것
  • web3.0이란 탈중앙화하여, 클라이언트가 페이지를 자유롭게 구성할 수 있는 것

즉 web 3.0은 블록체인, 가상화폐, nft를 사용하여 유저에게 권한을 주는 것

web 3의 주요원칙

  • decentralized: 즉 권한이 유저들에게 분산되어 있다.
  • permissionless: 유저가 들어가고 나오는 데에 허락을 받을 필요가 없다.
  • native payment: 중앙화된 화폐를 사용하지 않고 가상화폐를 사용한다.
  • trustless: 누군가를 신뢰할 필요없다.

이더리움은 transaction에 기반을 둔 state marchine이다.

이더리움의 각 노드는 단순히 지불을 하는 것 뿐만 아니라, validating과 processing도 가능하다.
즉 각 노드는 이더를 줌으로써 프로그램을 invoke하는 smart contract를 생성하는 트랜잭션을 만들 수 있으며 , 이더리움 상에서 dapps을 개발하여 작동시킬 수 있다.

이더리움 또한 트랜잭션, 블럭이라는 개념을 사용한다.

# 참고로 이더리움이 프로그래밍 언어라면, 스마트 컨트랙트는 내장함수와 같아서, 즉 이더리움 상에서 필요하면 언제든지 호출해서 사용하는 것이다. 즉 누군가가 만들어 놓은 것을 사용하는 것.
# 여기서 state란 내장함수는 뭐가 있으며, 그에 대한 결과는 무엇이며, 계좌에는 얼마가 있는 지 등을 포함한다.

genesis는 아무 것도 없는 상태며, 트랜잭션을 모아 블럭을 만들고 이게 블록체인에 포함되면서 state가 변화한다.

어떻게 smart contract를 실행시킬까?

EVM이 스마트 컨트랙트를 실행시킬 수 있다. EVM은 모든 이더리움 거래와 블럭들, 계좌 상황(잔액), 스마트 컨트랙트의 결과등을 관리한다.

  • gas: 프로그램을 돌리면서 마이너들에게 주는 비용
  • gas price: 가스당 얼마의 ETH를 지불할 것인가
  • gas limit: 사용자가 지불할 의향이 있는 최대 gas 량
    즉 채굴비는 gas price * 가스 소모량이다.