본문 바로가기
Studynote/Blockchain

[솔리디티/Solidity] 비트코인과 이더리움의 차이

by e.sunie 2019. 6. 8.

이더리움(Ethereum)

2015년 비탈릭 부테린이 개발한 블록체인 플랫폼이다.

이더리움 애플리케이션은 특정 조건의 처리를 사전에 설정하며 해당 조건을 만족하면 실행된다 → 스마트계약

 


스마트계약(Smart Contract)
현실의 권리 증명이나 이동등을 포함한 계약을 자동으로 실행하는 구조

- 상태(필드) 와 함수를 갖는 평범한 프로그램
- 이더리움에 접속한 노드에서 동작하는 전용 가상머신 EVM에서 실행
- 튜링 완전한 언어를 사용하므로 더 복잡한 처리 구현 가능
어떤 컴퓨터 알고리즘이든 이론적으로 시뮬레이션 할 수 있는 프로그래밍 언어 
1. 투명한 거래가능 : 상대를 신뢰하지 않아도 거래에 문제가 발생되지 않는다. 
2. 비용절감 : 중개자가 필요하지 않다.

 


비트코인은 암호화폐 플랫폼인 반면,

이더리움은 암호화폐 + 스마트계약 등의 애플리케이션을 블록체인에서 실행하려는 플랫폼이다. 

 


1. 이더리움의 로드맵(Roadmap)

단계 단계명 내용
0단계 올림픽(Olympic)

2015년 05월 09일

이더리움 네트워크의 실질적인 구축 이전에 다양한 테스트를 진행하는 단계

1단계 프론티어(Frontier)

2015년 7월 30일

명령 줄 인터페이스 기반 탈중앙화 애플리케이션 개발의 기초 테스트 단계

이더리움을 개발/채굴하고 네트워크를 형성하는 단계

2단계 홈스테드(Homestead)

2016년 03월 14일

노드가 생기면서 생태계를 진행하는 단계

거래의 고속화 및 안정화 추구

3단계 메트로폴리스(Metropolis)

2017년 10월 17일

대중화를 위한 인프라 형성 단계

- 1 단계 하드포크 : 비잔티움 

  • 4,370,000번째 블록 기준 제로지식 증명 zk-SNARK
  • 블록 생성 시간 안정화
  • 예외처리로 가스(Gas) 반환 

- 2 단계 하드포크 : 콘스탄티노플(실패, 재시도 예정)

  • 이더리움 채굴을 작업증명(POW)과 지분증명(POS)를 혼합 방식으로 전환 
4단계 세레니티(Serenity) 지분 증명 알고리즘의 안정화를 위한 마지막 단계

 


2. 이더리움의 화폐 단위

  • 이더리움 내부 화폐 단위 : 이더(ETHER)
  • 이더리움의 최소 단위 : wei
No 통화단위 최소 단위(wei) 기준 환산 금액 지수승
1 wei 1 1
2 kwei 1,000 10^3
3 mwei 1,000,000 10^6
4 gwei 1,000,000,000 10^9
5 micro 1,000,000,000,000 10^12
6 pwei 1,000,000,000,000,000 10^15
7 ether 1,000,000,000,000,000,000 10^18
8 kether 1,000,000,000,000,000,000,000 10^21
9 mether 1,000,000,000,000,000,000,000,000 10^24
10 gether 1,000,000,000,000,000,000,000,000,000 10^27
11 tether 1,000,000,000,000,000,000,000,000,000,000 10^30

 


3. 거래수수료 가스(Gas)

가스(Gas)  
프로그램 연산을 위한 연료
채굴자에게 수수료로 지불 = 가스 가격 * 가스 소비량
- 가스량은 OPCODE(바이트코드) 양에 따라 결정된다. 
- 유닛 당 가스가격이 다르다 ex) 메모리 사용시, if문 사용 시 등
  • 가스가격(Gas Price)
  • 가스제한(Gas Limit)
  • 가스제한 = 가스가격 * 가스 소비량

[특징]

  • 가스가 부족한 경우, 거래가 실패된다.
  • 사용하지 않는 가스는 돌려받는다. 
  • 가스상한의 목적은 무한 루프 제어를 위함이다(보안매커니즘)
    • 이더리움에서는 무한루프를 강제 종료하는 방법이 없다 → 가스 상한 모두 소모 시, 무한루프 중지 유도

 


4. 계정구조

이더리움 역시 비밀키 계정 개념 사용

: 비밀키를 가진 사람만이 소유권을 가진 암호화폐를 송금할 수 있다. 

 

외부(비밀키)계정 | EOA(Extenerally Owned Account)
: 이더리움 사용자를 위한 계정
  • 주소(address)
  • 잔액정보 : 주소와 연결해 잔액정보를 갖는다.
  • 비밀키 
계약계정 | CA(Contract Account)
: 계약증명이 있는 계정
- EOA에서 거래를 통해 만들어지며, EOA가 발신하는 거래가 트리거가 되어 계약코드가 실행된다. 
- CA에서 다른 CA를 생성하거나 코드 실행 가능
  • 주소(address)
  • 잔액정보 : 주소와 연결해 잔액정보를 갖는다.

5. 계정과 연결된 정보

상태트리
이더리움의 상태값을 다루는 해시트리
계정정보 설명
nonce

계정에서 보낸 거래 회수

  • EOA : 거래가 발생될 때마다 +1씩 증가
  • CA : 계약에서 계약을 생성할 때 +1씩 증가
balance 계정의 잔액정보를 출력(wei)
storageRoot

계정과 연결된 스토리지의 패트리샤 트리의 루트 노드를 나타내는 256bit 해쉬값

  • 스토리지 트리?
    • EOA : 머클 매트리샤 트리 안에 각 계정에 보관한 데이터의 관계를 나타낸 자료구조
    • CA : 계약정보로 다루는 배열이나 문자열 저장
codeHash

스마트 계약의 프로그램(EVM 코드)에 대한 해시값

  • EOA : 공백문자를 해시값으로 저장
  • CA : 실행코드 저장
  • 이더리움은 블록 크기에 제한을 두지 않는다.
    • 모든 이더리움 사용자의 잔액 정보를 블록에 넣을 경우, 블록크기가 너무 커지가 되므로 이를 제어하기 위해 계정정보 + 이더 잔액 정보는 상태트리에 저장
    •  

{머클 패트리샤 트리는 조금 더 공부가 필요}


6. 블록의 데이터 구조

  • 비트코인 네트워크에서는 잔액정보를 UTXO를 모두 합해서 계산
  • 이더리움에서는 계정과 연결된 잔액이 있으며, 이 잔액을 분산장부상(상태트리)에서 관리

 

잔액 확인 방식의 차이

  UTXO 계정구조
장점 다수를 보유했을 때 병렬로 거래 가능 계정정보를 별도의 자료구조로 분리해 빠른 검색 가능
단점 잔액 확인 구조가 복잡

계정 상태를 바꾸 때 FIFO 방식으로 작업 실행

(블록 생성 속도와 거래 속도를 빠르게 처리하는 구조를 만들어 단점 보완 진행)

 


7. 블록 생성 속도의 차이

  • 비트코인의 블록 생성 속도 : 1회 / 10분
  • 이더리움의 블록 생성 속도 : 15초
엉클블록에 대한 보상
이더리움은 블록 생성 속도가 비트코인의 40배로 빠르다는 강점을 갖짐나, 
블록 생성 속도가 빠르기에 동시 블록 생성의 확률이 높아진다는 문제가 존재
엉클블록 의 문제 발생 : 엉클블록이 많으면 블록체인 네트워크 참여도가 저하
채굴에 성공하여도 보상(수수료)을 받을 수 없는 블록
→ 이더리움은 고스트 프로토콜을 통해 문제해결
더 어려운 난이도와 큰 Nonce값을 가진 블록에 최대 2개의 엉클블록을 추가하고 보상

8. 블록 선택 방식의 차이

블록 높이가 같은 여러 개의 블록이 있는 경우, 

  • 비트코인 : 나카모토 합의
    • POW 알고리즘의 난이도가 높은 블록 선택
  • 이더리움 : 수정 고스트 프로토콜
    • 각 체인에 묶인 블록들의 생성 난이도 전체를 더한 결과가 가장 높은 체인을 메인 체인으로 선택
    • 두 체인 중 하나가 엉클 블록을 포함할 경우, 엉클 블록의 난이도까지 합해서 난이도를 더한 결과로 판단

9. 작업 증명 알고리즘의 차이

  • 비트코인 : Nonce를 변경한 후, SHA-256 해시함수로 연산 반복
  • 이더리움 : 이대시(ethash) 사용 → ASIC 장비 무력화를 위해 메모리를 사용하는 방식
    • 블록의 해더를 스캔 → 블록을 대상으로 계산할 수 있는 값(시드) 추출
    • 시드에서 16MB 단위의 의사 랜덤 캐시를 만들고, GB크기를 갖는 DAG기반 데이터셋을 만든다.
      • DAG(Directed Acyclic Graph) : 방향은 있지만 서로 순환하는 노드가 없는 그래프
    • 1GB 이상의 데이터셋에서 일부를 추출해 특정 조건이 될 때까지 Nonce를 변경하며 채굴 진행
    • 데이터셋은 3만 블록단위(에포크)로 바뀌며 선형으로 커진다. 
      • 일정 패턴으로 메모리 읽기 연산을 방지
      • 데이터셋 저장공간도 일정하지 않게 설정

10. 이더리움 가상머신(EVM)

이더리움 가상머신(EVM)
애플리케이션을 실행하는 기반으로 튜링 완전한 가상머신
  • 스마트 계약은 코드 작성 후, EVM에서 실행할 수 있는 상태로 이더리움 블록체인에 배포
  • 처리속도, 데이터크기, 스펙상의 제약 등과 관계없이 어떤 애플리케이션이든 실행할 수 있다는 것을 보장

11. 거래, 메시지, 콜

이더리움의 거래  발행의 경우

  • 암호화폐 송금
  • EOA로 스마트계약 생성
  • 계약 내 함수 호출
  • 메시지 : 어떤 계약이 다른 계약을 호출
  • 콜 : 데이터 변경없이 기존의 정보만 확인(가스 발생없음)

 

메시지/콜 : setter/getter함수로 이해

댓글