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이 동작하는 순서
- 트랜잭션 형식 확인
- 트랜잭션 수수료 계산 (Gas Limit * Gas Price)
- 트랜잭션 (smart contract) 실행
- 이때 gas price가 충분하지 않으면 트랜잭션이 캔슬됨 — gas price는 환불되지 않음
- 위와 다른 이유로 트랜잭션이 실패할 경우 gas price는 환불된다.
EVM의 시각화

참고:
'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 |