본문 바로가기

BlockChain

[EVM] 이더리움 가상머신

EVM : Ethereum Virtual Machine 이란?

EVM, 즉 이더리움 가상머신은 이더리움 네트워크의 노드들이 공유하는 하나의 가상머신이다.

거대한 분산 컴퓨터라고도 볼 수 있다.

 

가상 머신 : 물리적 하드웨어 시스템에 구축되어 자체 cpu, 메모리, 네트워크 등을 갖추고 가상 컴퓨터 시스템으로 작동하는 가상 환경이다.

 

블록체인 네트워크 상의 노드들이 가상머신에 접근하여 컴퓨터가 가지고 있는 데이터를 가지고 오거나 변경할 수 있다. (상태변경)

이더리움 가상머신에서는 스마트 컨트랙트가 실행되게 되는데 솔리디티로 짠 스마트 컨트랙트 그 자체로는 실행할 수 가 없다.

왜냐하면 솔리디티는 C언어나 Java처럼 사람이 이해하기 위해서 만든 언어이기 때문이다.

기계가 바로 이해할 수 없는 사람이 이해하는 언어로 만들어진 코드는 컴퓨터가 알아들을 수 있는 명령어로 바뀌어야한다.

그래서 솔리디티 컴파일러를 거쳐 솔리디티 파일을 컴퓨터 언어로 변경한것이 Ethereum Bytecode이다.

이렇게 기계도 이해할 수 있는 바이트코드가 EVM에서 실행되는 것이다. (이미지 참고)

 

EVM의 역할

EVM은 모든 노드들이 공유하는 머신이기 때문에 동시에 많은 노드들이 접근하여 동일 상태를 변경하게 될 수 있다.

그럴경우 일어나는 데이터의 충돌을 마이닝과 합의 알고리즘으로 중재하는 역할을 한다.

또한 EVM은 반복적으로 트랜잭션을 실행하고 각 루프에 대한 시스템 state와 machine state를 연산한다.

machine state :

  • 이용가능한 gas
  • 프로그램 카운터
  • 메모리 내용
  • 메모리 상 활성화된 단어의 수
  • 스택의 내용

EVM의 사용비용

EVM은 누구나 사용할 수는 있지만 공짜는 아니다.

만일 아무런 대가 없이 사용한다면 무수히 많은 의미없는 스팸성의 코드들이 넘쳐나고 사용자들이 네트워크에 과부화를 걸게 될 수 있다(DDos).

그래서 EVM을 사용할때는 비용을 지불해야 합니다. 그 비용은 트랜잭션의 크기로만 결정되는 것이 아니라 트랜잭션을 실행하는데 필요한 비용이다.

이때 사용되는 개념이 바로 Gas이다.

여기서 Gas Limit이라는 개념을 통해 사용할 수 있는 gas의 (트랜잭션 실행 수 라고도 볼 수 있다) 한도를 걸어놈으로써 무한 루프를 방지할 수 있다.

  • 이더리움 상에 1기가의 데이터를 기록하려면 약 1억원 가량의 transaction fee가 필요하다.

EVM이 동작하는 순서

  1. 트랜잭션 형식 확인
  2. 트랜잭션 수수료 계산 (Gas Limit * Gas Price)
  3. 트랜잭션 (smart contract) 실행
  • 이때 gas price가 충분하지 않으면 트랜잭션이 캔슬됨 — gas price는 환불되지 않음
  • 위와 다른 이유로 트랜잭션이 실패할 경우 gas price는 환불된다.

EVM의 시각화

 

 


 

참고:

https://hersheythings.xyz/entry/ethtereumstructure

https://opentutorials.org/course/2869/18360

 
 
 
 
 
 
 
 
 
 

'BlockChain' 카테고리의 다른 글

Wallet 호환 Token 만들기  (0) 2022.04.25
부트스트랩 노드  (1) 2022.03.28
머클 패트리시아 트리  (0) 2022.03.14
openethereum 메인넷 구축  (1) 2021.11.30
스마트 컨트랙트 연산 gas(가스) 소모  (0) 2021.10.26