본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.
Ethereum Virtual Machine; EVM
이더리움 네트워크의 모든 노드가 똑같이 돌리는 가상 머신. 스마트 계약의 바이트코드를 실행한다

약어 EVM 은 프로젝트 관리의 획득가치기법(Earned Value Method)을 가리키기도 한다.

  • 네트워크의 모든 노드가 같은 입력에 대해 같은 결과를 내야 하므로 완전히 결정적(deterministic)이다.
 난수, 현재 시각, 파일 입출력처럼 노드마다 달라질 수 있는 것은 쓸 수 없다.
  • 256비트 워드를 쓰는 스택 기반 머신이다. 해시 연산에 쓰는 수의 크기에 맞춘 것이다.
  • 솔리디티 같은 언어로 쓴 계약이 EVM 바이트코드로 컴파일되어 블록체인에 올라가고,
 호출이 들어올 때마다 모든 노드가 그 바이트코드를 실행해 상태를 갱신한다.
  • 샌드박스다. 계약 코드는 호스트의 파일이나 네트워크에 닿지 못하고 EVM 안의 상태만 바꾼다.
  • 명령마다 정해진 가스 비용이 있다. 실행자가 그만큼을 이더로 낸다.
  • 거래를 보낼 때 가스 한도를 정하고, 실행 중 이것을 넘기면 실행이 되돌려진다(revert).
 이미 쓴 가스는 돌려받지 못한다.
  • 정지 문제를 우회하는 장치다. 무한 반복하는 계약이 네트워크를 멈추게 할 수 없다.
영역 수명 비용
스택 실행 중에만 가장 싸다. 깊이 1024 제한
메모리 호출이 끝나면 사라진다 쓴 만큼 늘어난다
저장소(Storage) 블록체인에 영구히 남는다 가장 비싸다

저장소 쓰기가 압도적으로 비싸므로, 계약을 짤 때 상태 변수를 얼마나 건드리는지가 곧 비용이다.