본문 바로가기
블록체인

이더리움 생태계

by 혀닙 2022. 6. 27.

목차

  1. 이더리움
  2. 이더리움 클라이언트
  3. 이더리움의 계정
  4. EVM 개념
  5. Web3

 

 

 

1. 이더리움

1-1. 이더리움이란?

  • 이더리움은 스마트 컨트랙트(smart contract)를 실행시키는 탈중앙화된 플랫폼이다.
  • 검열, 위조 또는 제 3자의 개입, 다운타임의 가능성 없이 정확히 프로그래밍한대로 코드가 실행되도록 하는 어플리케이션

 

1-2. 이더리움 적용의 예

  • Decentralized finance(DeFi)
  • Non-fungible tokens(NFT)
  • Decentralized autonomous organizations(DAOs)

 

 

1-3. 비트코인과 이더리움의 차이는?

대표적으로

  1. EVM
  2. Transaction 내용
  3. account(EOA/CA)

가 차이가 나며 그 차이의 이유는 스마트 컨트랙트 때문이다.

 

 

1-4. 이더리움의 state(상태)는?

  • 모든 계정과 잔액들 뿐만 아니라 머신 상태(machine state) 또한 가지고 있는 거대한 데이터 구조

 

  • 머신 상태(machine state)는 임의의 머신 코드를 실행할 수 있으며,
  • 사전에 정의된 일련의 규칙들에 따라 블록 간의 상태를 변화시킬 수 있다.

 

  • 그리고 이러한 블록들 간의 상태를 변화시키는 구체적인 규칙들은 EVM에 의해 정의된다.

 

 

 

2. 이더리움 클라이언트(Ethereum Clients)는?

  • 이더리움 블록체인 네트워크를 구성하는 개별 클라이언트 노드(node)
  • 이더리움은 중앙 집중형 서버 프로그램이 따로 존재하지 않으며 오로지 클라이언트 프로그램만 존재함
  • 이더리움 클라이언트는 멀티 플랫폼 환경을 지원하기 위해 다양한 프로그래밍 언어로 개발됨

 

 

2-1. 대표적인 이더리움 클라이언트

  • 게스(geth)
  • 이더리움 재단(Ethereum Foundation)이 제공하는 공식 클라이언트 소프트웨어
  • 고(Go) 언어로 개발

 

  • 패리티(Parity)
  • 패리티(Parity)는 이더리움 프로토콜의 또 다른 구현체
  • 러스트(Rust) 프로그래밍 언어로 개발
  • 현재 Parity Inc. 라는 기업에서 운영

 

 

 

 

3. 이더리움의 계정(account) 개념

3-1.  계정의 종류

EOA(Externally owned account) CA(Contract account)
계정 생성 시 비용 발생하지 않음
Transaction을 발생시킬 수 있음
EOA 간의 Tx는 ETH/token 전송만 가능함
CA 계정을소유하는 계정
돈의 입출금에 관련된 계정
네트워크 storage 사용하기 때문에 contract 생성 시 비용 발생
Tx 수신의 응답으로만 Tx 전송 가능

EOA로부터CA까지 Tx 코드를
(토큰을 전달하거나 새로운 contract 생성 하는 것과 같은) 다양한 actions를 실행시킬 수 있는 코드 작동 가능

Tx 발생 시의 리턴값
개인키를 가진 이에 의해 관리됨 EVM 코드에 의해 관리되며
네트워크에 의해 사용되는 스마트 컨트랙트
개인키> 공개키 > (해시화) > address 발신인 address + nonce > (RLP, KEC) > address
ETH와 토큰을 수신, 보유, 전송할 수 있음
스마트 컨트랙트와 상호작용함

 

 

3-2. 계정의 4가지 필드

필드 설명
nonce 계정에서 보내진 Tx의 횟수를 나타냄(EVM 동작 횟수)
Tx가 오직 한번만 처리되었음을 확인
CA에서 nonce는 계정에 의해 생성된 contract의 수를 나타냄
balance 해당 address가 소유하고 있는 wei의 수
codeHash EVM에 있는 계정의 코드를 나타내는 해시
CA는 다양한 옵션들을 수행할 수 있는 코드 조각들을 가지고 있음
이러한 코드 조각들은 상응하는 해시에 의해 state 데이터베이스에 존재함
모든 코드 조각들은 이후의 검색을 위해 상응하는 해시값 아래에, state 데이터베이스 안에 포함됨
EOA 계정에서의 codeHash의 필드는 빈 문자열의 해시값
storageRoot 스토리지 해시로도 알려져 있음
계정의 스토리지 내용을 인코딩하는 머클 패트리샤 트리의 root노드의 256 bit 해시값

트리는 해당 계정의 스토리지 내용에 대한 해시를 인코딩함(디폴트는 null)

 

 

 


 

4. EVM

 

프로그래밍 언어 중 하나인 JAVA에는 JVM이라는 개념이 있다.

 

JVM은(Java Virtual Machine)의 약어로, 자바 코드를 해석할 수 있는 컴퓨터를 의미한다.

가상머신이 코드를 해석해서 결과를 던져준다는 것이며 즉, JVM만 동일하면 어떤 컴퓨터든 동일한 결과를 얻을 수 있다.

(단, 단점으로 가볍지 않다는 단점이 있음, 어떤 OS 든 동일하게 돌아가지만 퍼포먼스가 좋지는 않다)

즉 범용성에 치중되어 있다

 

 

 

빌드를 했던 OS마다 코드를 실행하는 방식이 다르다(장점이 될 수도, 단점이 될 수도 있음)

내가 빌드한 OS에 최적화된 빌드를 하기 때문에 자원낭비가 없다.

 

 

 

이와 같이 이더리움에도 자바의 JVM과 같은 개념이 있다.

 

4-1. EVM(Ethereum Virtual Machine )이란?

  • 이더리움에서 스마트 컨트랙트를 실행하는 환경(runtime environment for smart contracts)
  • Tx 내용을 리액트의 state처럼 관리함
  • 코드 해석기(contract를 바이트로 바꿔서 Tx 계산 후 리턴해 줌)

 

 

 

4-2. EVM의 실행

  1. 코드 작성
  2. 바이트 코드로 컴파일함(0101010로 바이트 코드가 됨)
  3. 바이트 코드를 evm에 던짐
  4. evm이 바이트 코드를 해석해줌

 

컴파일만 진행되면 어떤 언어로든 스마트 컨트랙트 구현 가능하다.

 

 

 

 

5. web3

 

지갑 서버와 이더리움 클라이언트(노드)간의 http 방식의 통식을 하기 위해web3라는 라이브러리를 만듦

 

web3를 잘 다룰 수록 이더리움을 잘 다룬다고 할 수 있음

스마트 컨트랙트와 web3를 잘 다루면 Dapp을 만드는 데 전혀 무리가 없다(nft마켓...디파이..)

 

 

 

 


추후 배울 내용 :

meta 마스크 통해서

geth(블록체인 이더리움 네트워크) 에서

 

1. 이더리움생태계(1주짜리 프로젝트)의 내용과 네트워크의 구성

메타마스크는 크롬 확장 서버에 연결되어있음

프론트 서버는 메타마스크랑 통신함

버튼 누르면 메타마스크에 요청 보내서 창 띄워줌

 

메타에서 버튼 클릭 시 블록체인 네트워크(게스)에 통신함

 

 

퍼블릭/프라이빗 ,메인넷/테스트넷을 직접 눈으로 보고 개념을 익히자

테스트넷은 이미 돌아가져 있는 코드를 요청해서 가져오는 것(카카오 api 쓰는 것과 같다)

 

 

2. 스마트 컨트랙트.

즉, erc-20과 erc-721을 가지고 다른 기획....

 

투표앱을 만들면서 스마트 컨트랙트 개념을 익힘

proxy 컨트랙트 등

 

 

스마트 컨트랙트 작성 후 네트워크 배포..어렵다.

 

컨트랙트 한번 등록 시 수정이 거의 불가 >> 그래서 jest 사용해서 테스트를 해본 것

 

 

 

  • 스마트 컨트랙트 작성을 쉽게 해주는 프레임 워크
  • 트러플-타입스크립트 지원은 안 해줌
  • 하드햇

 

 

선행 원한다면 크립토좀비 시도해볼 것

 


 

댓글