‘계산 이론’ 및 ‘알고리즘’, ‘분산시스템’ 개념이 있다면 좋을 것
암호화폐 이더 (ether)
- 실행 자원 비용을 측정 및 제한 - DDOS 공격을 막을 수 있음
공통점
이더리움의 목적과 구성은 다른 블록체인과 현저히 다름.
비트코인과 비교했을 때 언어도 다름.
퍼블릭 블록체인의 구성요소:
가십 프로토콜을 기반으로 트랜잭션을 전파하는 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일, 첫 번째 이더리움 블록이 채굴되었다.
Frontier (2015년 7월 시작)
이더리움의 초기 단계
제네시스블록(최초블록) 이후 노드가 활성화되는 단계. 즉, 블록체인이 생성되는 단계
채굴과 이더 교환을 가능하게 하여 커뮤니티가 채굴 장치를 돌릴 수 있게 하고, 사람들이 디앱을 테스트하고 이더를 획득하여 자신의 소프트웨어를 이더리움에 업로드할 수 있는 환경을 구축하기 위한 단계.
Homestead (2016년 3월 시작)
이더리움의 두 번째 단계
이더리움 생태계를 구축해나가는 단계
Metropolis (2017년 10월 시작)
이더리움의 세 번째 단계
좀 더 가볍고, 빠르고, 안전한 이더리움으로 2번은 배포(release)로 나뉨:
the Byzantium hard fork (2017년 10월) : 채굴 보상 5 → 3 ETH
the Constantinople hard fork (2019년 2월) : 채굴 보상 3 → 2 ETH
Serenity = ETH 2.0 (2021년 시작)
PoS 알고리즘(지분증명 알고리즘)으로의 전환(Capser), 샤딩, 새로운 가상머신 (EWASM).
이더리움 2.0은 3단계를 거쳐 진행된다:
Phase 0: 비콘 체인(Beacon Chain) 및 PoS 알고리즘 캐스퍼(Capser) 출시
Phase 1: 샤드 체인 활성화
Phase 2: The Merge - 이더리움 2.0의 중요한 기능들을 모아서 체인별로 업그레이드하고 지갑이체를 허용하고 계약을 실행하는 단계
the Merge, Surge, Verge, Purge, Splurge 단계도 나뉘는 데 이에 대해서 이후 다른 포스팅으로 자세하게 다룰 것.
자세한 설명은 여기 :Understanding the Merge, Surge, Verge, Purge, and Splurge
최초의 블록체인인 비트코인
이더리움
마찬가지로 탈중앙화 상태 머신이지만 화폐 소유 상태만 추적하는 것이 아닌 범용 데이터 저장소
범용 컴퓨터에서 사용되는 RAM의 데이터 스토리지 모델과 동일한 용도
코드와 데이터를 저장하는 메모리가 있고, 블록체인을 사용하여 이 메모리가 시간에 따라 어떻게 변하는 지를 추적
범용 저장 프로그램 컴퓨터와 마찬가지로, 이더리움은 상태 머신에 코드를 로드하고 그 코드를 실행하고 그 결과 상태를 저장할 수 있다.
다만, 일반 범용 컴퓨터와의 차이는
P2P 네트워크
합의 규칙
트랜잭션
상태 머신(State machine)
Data structures
합의 알고리즘
Economic security
클라이언트
< 튜링완전이란 무엇인가? >
먼저 튜링머신(Turing Machine, UTM)이 뭔지에 대해서 이야기를 해보면,
- 영국의 수학자인 알란 튜링에 의해 고안된 기계로, 가상적인 기계 (수학적 상상)
- 무한한 저장공간만 있다면 이 세상의 모든 문제를 풀 수 있는 기계
튜링 완전이란,
어떤 프로그래밍 언어나 추상 머신이 튜링머신과 동일한 계산 능력으로 문제를 풀 수 있다는 의미로 만약 보편 만능 기계가 수행할 수 있는 모든 기능을 수행할 수 있다면, 이를 튜링 완전하다고 함.
정지 문제 (Halting Problem)
이더리움 가상 머신 (EVM)이라는 상태 머신 상에서 메모리에 데이터를 읽고 쓰면서 저장된 프로그램을 실행할 수 있는 이더리움은 튜링 완전 시스템을 가능하게 하므라 UTM(튜링 머신)이라고 볼 수 있음.
이더리움은 한정된 메모리라는 제한 조건에서 모든 튜링 머신으로 계산될 수 있는 어떠한 알고리즘도 계산
이더리움 프로그램은 ‘어디에서나’ 실행되지만, 합의 규칙에 의해 보장되는 공통 상태를 만듦.
튜링 완전이 좋은 것만은 아님.
특히 개방형 액세스 (open access) 시스템에서는 매우 위험
단일 시스템의 경우, 응답하지 않거나 무한 루프를 돌 때 그냥 껐다가 키면 그만이지만, 공개 블록체인에서 이는 불가능
프로그램을 실행하지 않고는 프로그램의 경로를 예측할 수 없음.
위와 같은 상황을 해결하기 위해 가스(gas)라는 과금 메커니즘을 도입 //부테린은 천재인것일까..
💡 가스 (Gas)
- EVM이 스마트 컨트랙트를 실행하게 되면, 가스는 각 명령어(계산, 데이터 접근 등)의 비용을 하나하나 계산함. (각 명령어는 각각 정해진 가스 단위 비용 있음—소요되는 시간, 난이도에 따라 다름.)
- 스마트 컨트랙트를 실행하려는 트랜잭션은 스마트 컨트랙트를 실행하는 데 사용할 수 있는 가스의 최대 사용량을 가지고 있어야 함. 그렇지 않으면 EVM은 실행 중지함.
- 예를 들어, 무한 루프를 돈다고 해도 언제가는 가스가 동나기 때문에 작동을 멈출 수 밖에 없음.
- 즉, 가스는 각 프로그램이 사용할 수 있는 리소스를 제한해서 이더리움 튜링 완전 계산을 허용하게 하는 메커니즘
DApps > Smart Contracts (dApp이 스마트 컨트랙트보다 포괄적인 개념)
DApp의 최소 구성요소:
추가로, DApps은 아래와 같은 탈중앙화 구성요소 포함:
💡 ÐApps
문자 Ð는 라틴어로 “ETH”를 나타낸다. (이더리움을 나타내는 것과 비슷)
유니코드 코드포인터는 ‘0xD0’, HTML는 문자 entity ‘eth’
Gavin Wood박사가 처음 제안한 것으로, 웹3는 웹 애플리케이션에 초점을 두는 새로운 버전을 말한다 (중앙 집중적으로 관리되는 애플리케이션으로부터 탈중앙화 프로토콜에 의해 구축된 애플리케이션으로의 전환).
web3.js
비트코인(Bitcoin) - 과거에 초점 (보수적인 원칙)
이더리움(Ethereum) - 미래에 초점
개발자로서,
스마트 컨트랙트에 대한 어느 정도의 통제권을 가지고 있다는 점에서 완벽한 탈중앙화는 아니다.(플랫폼을 진화하기 위해 스마트컨트랙트를 폐기하고 재배포하기 때문.)
긍정적인 점은 “바이크 셰딩(bike-shedding, 사소한 논쟁으로 개발을 지연하는 것 )”이 거의 없다는 점이다.
무엇보다도 이더리움은 개발자를 위해 만든 개발자의 블록체인이다.
자바스크립트 어플리케이션에 익숙한 개발자라면, 작동 가능한 이더리움 코드들을 매우 빠르게 만들 수 있을 것이다.