블록체인 Block-Chain - 이더리움 ( SmartContract, EVM, Transaction, Account, Geth 설치 )

dev_swan·2022년 6월 27일
0

블록체인

목록 보기
13/36
post-thumbnail
post-custom-banner

이더리움

1. Smart Contract (스마트 컨트렉트)

  • 스마트 컨트랙트디지털로 작성된 계약서를 의미합니다.
  • 비트코인과 다르게 이더리움은 Transaction안에 코드를 넣어 계약을 코드로 구현하고 일정 조건이 충족되면 거래가 이행되게 하는 계약입니다.

2. EVM (Ethereum Virtual Machine)

  • 이더리움 가상 머신의 준말로 이더리움 네트워크 내 각 노드가 공유하는 하나의 거대한 컴퓨터로 ERC 20 토큰들이 생성되고, 모든 스마트 컨트렉트가 실행되는곳입니다.
  • EVM은 누구나 사용할 수 있지만 아무 제약이 없다면 네트워크 상에 과부하를 일으킬수도 있고, 누군가 악의로 스팸성 코드를 삽입하거나 할 수 있기때문에 EVM을 사용하려면 GAS라는 비용을 지불합니다

EVM 장점

  • EVM 내 수행되는 모든 코드는 사전에 GAS를 지불학디 때문에 DDos 공격을 방어 할 수 있습니다.
  • 각각의 스마트 컨트렉트는 서로 격리되어 서로의 상태를 변경할 수 없기에 안정성을 확보할 수 있습니다.

EVM 단점

  • 실행코드 기반의 GAS 책정합니다, 이더리움은 더 큰 가치가 아닌 더 큰 많은 코드 실행에 대한 GAS가 책정됩니다. 이는 금액을 비례하여 수수료가 책정되는것이 아닌 코드의 양에 따라 수수료가 책정되는것 입니다.
  • 공격자 비용과 사용자 비용의 딜레마가 있습니다, 이는 사용자 입장에서는 수수료가 낮아야 하지만 공격자의 입장에서는 수수료를 높여야 하는 이중성이 있습니다.

2-1. EVM 실행과정

  1. 컴퓨터 언어 솔리디티(solidity)로 프로그램 작성 - 사람을 위한 언어
  2. 솔리디티 언어로 만든 프로그램 코드를 이더리움 바이트코드로 변환 - 기계를 위한 언어
  3. 변환된 바이트 코드를 EVM에서 실행

2-2. ERC 20 토큰 , ERC 721 토큰

  • ERCEthereum Request for Comments의 준말로 이더리움 표준을 의미 합니다.
  • 간단하게 이해하면 ERC-20 규격으로 만든 토큰은 대체 가능한 토큰이고 ERC-721 규격으로 만든 토큰은 대체 불가능한 토큰이라고 보면 됩니다, 대체 불가능한 토큰 (Non-Fungible Token)은 추후에 자세히 알아보겠습니다.

2-3. GAS (수수료)

  • 가스비란 단순하게 공격으로부터 네트워크를 보호하고 네트워크의 여러 계산을 수행해주는 노드들에게 주어지는 보상이라고 생각하면 됩니다, 채굴자들에게 보상을 제공하기 전에 채굴자들이 일의 우선 순위를 정하도록 이더리움이 하는 일을 수치화 해야합니다. 이것을 측정하는 것이 가스 단위(Gas Unit) 입니다.
  • 이더리움은 일정 시간동안 제한된 가스 가격만 처리할 수 있습니다, 따라서 채굴자들은 이더리움에 보내지는 수많은 요청들을 조절해야 합니다. 속도를 조절하지 않을경우 네트워크 과부하가 걸릴 수 있기에 채굴자들은 무엇을 먼저 수행해야 하는지 선택하기 위해 가스 가격(Gas Price)과 가스 한도(Gas Limit)에 의존합니다.

GAS Price (가스 가격) , Gas Limit (가스 한도)

  • 가스 가격 (Gas Price) : 채굴자에게 보상에 대한 금전적인 지불하기 위해 Gwei라는 이더리움의 작은 값으로 단위를 나타냅니다. 이것을 가스 가격이라 부릅니다. 채굴자에게 가스 가격을 더 많이 지불하고 내 요청을 먼저 수행하게 할 수도 있습니다.
  • 가스 한도 (Gas Limit) : 가스 한도는 요청하는 작업량의 추측입니다, 일반적으로 많은 지갑앱이 한도를 정하고 대부분 21000 가스 한도로 정해놓습니다. 가스 한도는 작업 중단 시점을 보장함으로 무제한으로 이더리움을 사용하는 것은 방지합니다.
  • 정리하면 가스는 이더리움에서 네트워크의 과부하를 막는 역할을 함과 동시에 이더리움이 계속해서 돌아갈 수 있도록 채굴자들에게 인센티브 역할도 합니다.

3. Transaction

트랜잭션(Transaction)은 EOA가 보낼 메시지를 가지고 있는 서명된 데이터 패키지입니다.

  • 트랜잭션 구성
  • to : 수신 지갑 주소
  • from : 발신자 지갑 주소
  • signature : 발신자를 확인할 서명
  • value : 발신자가 수신자로 보내는 이더의 양
  • data : 선택적(optional) 데이터 필드 -> 컨트랙트 메시지를 담을 수 있는 데이터 필드
  • nonce : 발신자의 Transaction의 Count
  • gaslimit (가스 한도) : 트랜잭션 실행이 수행되도록 허용된 최대 계산 단계수
  • gasprice (가스 가격) : 매 계산단계마다 발신자가 지불하는 수수료

4. Account (지갑)

4-1 EOA (Eternally Owned Account)

  • 비트코인 지갑을 생성할 때처럼 임의의 값으로 개인키를 생성하고 개인키를 가지고 공개키를 생성하고 공개키를 가지고 생성한 지갑을 EOA(외부 소유 어카운트)라고 하고 이는 개인 키에 의해 통제되는 계정 정보입니다.
  • 주역할은 이더 전송입니다.

EOA 생성 과정

EOA 구성

  • Nonce : Account에서 전송된 트랜잭션의 수
  • Balance : 계정의 현재 이더(ether) 보유량으로 wei 단위로 표시
  • storageRoot : Merkle Paticia Tree의 Root Hash
  • codeHash : 빈 문자열의 Hash 정보

4-2 CA (Contract Accounts)

  • 컨트랙트 계정으로 EOA와 다르게 개인키가 없고 스마트 컨트랙트를 블록체인에 배포할 때 생성되며 컨트랙트 코드에 의해 통제되는 계정 정보입니다.
  • 스마트 컨트랙트 코드를 담고있으며 EOA와 마찬가지로 이더를 보내고 받을 수 있으며 다른 컨트랙트 혹은 EOA의 호출을 통해 트랜잭션을 발생시킬 수 있습니다.
  • 주역할은 스마트 컨트랙트 실행입니다.

CA 구성

  • Nonce : Account에서 생성된 Contract 수
  • Balance : 계정의 현재 이더(ether) 보유량으로 wei 단위로 표시
  • storageRoot : Merkle Paticia Tree의 Root Hash
  • codeHash : Account에 포함된 이더리움 버츄얼 머신(EVM) code의 Hash

4-3 Account 구성

  • nonce: Transaction의 전송 횟수
  • value: 계정의 현재 이더(ether) 보유량
  • contract code (CA only) : 실제로 실행될 계약의 내용이 적혀져 있는 솔리디티 코드 (값이 없을 수 있음)
  • storage (CA only) : 계약코드 실행에 필요한 정보들을 저장하는 공간 (초기설정에는 비어있음)

Geth 설치

  • Geth란?

Geth는 Go Ethereum의 약자로 Go 언어로 만들어진 Ethereum입니다.

  • Go 언어 설치
sudo apt update
sudo apt install golang -y
sudo apt install -y libgmp3-dev tree make build-essential
  • 이더리움 사용할 디렉토리 만들고 해당 디렉토리로 이동

git clone https://github.com/ethereum/go-ethereum

cd go-ethereum

make geth
  • make geth가 안되면 Golang 삭제후 재설치
sudo apt-get remove golang-go -y
sudo apt-get remove --auto-remove golang-go -y

sudo add-apt-repository ppa:longsleep/golang-backports

sudo apt-get update

sudo apt-get install golang-go
  • Golang이 정상적으로 설치되었으면
cd go-ethereum

make geth

cd build/bin
./geth version

./geth

post-custom-banner

1개의 댓글

comment-user-thumbnail
2024년 3월 23일

EVM 은 따로 어떻게 설치해야하는 걸까요??

답글 달기