[마스터링 이더리움] chapter 13. 이더리움 가상 머신

이희제·2021년 2월 5일
3

EVM 이란 무엇인가?

  • EVM은 스마트 컨프랙트 배포 및 실행을 처리하는 이더리움의 일부입니다.

  • 이더리움 블록체인에서 실행되는 EVM은 자체 영구 데이터 저장소가 있는 수백만 개의 실행 가능 객체를 가진 전 세계의 탈중앙화된 컴퓨터입니다.

EVM은 메모리 내의 모든 값을 스택에 저장하는 스택 기반 아키텍쳐입니다.

주소지정이 가능한 여러 개의 데이터 구성요소를 가지고 있습니다.

  • 실행할 스마트 컨트랙트의 바이트코드가 저장되는 불변 프로그램 코드 ROM
  • 모든 위치가 명시적으로 0으로 초기화된 휘발성 메모리
  • 이더리움 상태의 일부인 영구 스토리지. 0으로 초기화됨

EVM 명령어 집합(바이트코드 연산)

  • 산술 및 비트 논리 연산
  • 실행 컨텍스트 조회
  • 스택, 메모리 및 스토리지 접근
  • 흐름 제어 작업
  • 로깅, 호출 및 기타 연산자

이더리움 상태

➡️ EVM의 작업은 이더리움 프로토콜에 정의된 대로 스마트 컨트랙트 코드의 실행 결과로 유효한 상태 변화를 계산하여 이더리움 상태를 업데이트하는 것입니다.

  • 가장 상위 레벨: 이더리움 월드 상태

=> 월드 상태는 이더리움 주소를 계정으로 매핑한 것입니다.

여기서 이더리움 주소는 이더 잔액, 논스, 계정의 스토리지, 계정의 프로그램 코드를 의미합니다.


가스

  • 가스는 이더리움 블록체인에서 작업을 수행하는 데 필요한 계산 및 스토리지 자원을 측정하는 이더리움의 단위입니다.

=> 트랜잭션 또는 컨트랙트에 의해 수행되는 각 작업에는 고정된 양의 가스가 소비됩니다.

  • 2개의 숫자를 추가하는 것의 3개의 가스를 소비한다.
  • Keccak-256 해시 계산 시 해시되는 각 256비트 데이터에 대해 30가스 + 6가스 비용이 든다.
  • 트랜잭선 비용은 21,000가스다.

실행 중 가스 계산

  • 트랜잭션을 완료하는 데 EVM이 필요한 경우, 첫 번째 인스턴스에는 트랜잭션의 가스 한도로 지정된 양과 동일한 가스 공급량이 제공됩니다.
  • 실행되는 모든 연산코드에는 가스가 소비되므로 EVM이 프로그램을 단계별로 진행함에 따라 EVM의 가스 공급량이 감소합니다.
  • 각 작업을 수행하기 전에 EVM은 작업 실행에 피룡한 비용을 지급할 만큼 충분한 가스가 있는지 확인합니다.

가스 비용 대 가스 가격

➡️ 가스 비용은 EVM에 사용되는 계산 및 스토리지의 척도이지만, 가스 자체는 이더로 측정한 가격도 가지고 있습니다.

트랜잭션 수수료 = 사용된 총 가스 X 지급된 가스 가격(이더)

가스 비용가스 가격의 차이에 대해서 분명히 하는 것이 중요합니다.

  • 가스 비용은 특정 작업을 수행하는 필요한 가스 단위 수이다.
  • 가스 가격은 이더리움 네트워크로 트랜잭션을 보낼 때 가스 단위당 지급하고자 하는 이더의 양이다.
profile
오늘만 열심히 살고 모든 걸 남기되 후회는 남기지 말자

0개의 댓글