c0mpos3r

[Web3] Ethererum Virtual Machine (EVM) 본문

Web3

[Web3] Ethererum Virtual Machine (EVM)

음대생 2025. 6. 7. 09:17

EVM 이란?

EVM : 스마트 계약을 실행하고 이더리움 블록체인 상에서의 DApps를 실행하는 가상 머신


EVM 역활

Smart Contrace(스마트 계약) 실행

분산 애플리케이션 (Dapps 구동)

 


EVM 작동 방식

트랜잭션 수신 → 가스 계산 → 바이트코드 해석 → 명령어 실행 → 상태 업데이트


ByteCode

ByteCode : 고수준의 언어로 작성 된 스마트 계약을 EVM이 이해 할 수 있는 명령어 집합 세트 변환 한 것


EVM 명령어 세트

연산 명령어

연산 명령어는 산술 및 논리 연산 수행

ADD 두 값을 더한다
MUL 두 값을 곱한다
SUB 두 값을 뺀다
DIV 두 값을 나눈다
SDIV 두 값을 부호 있는 정수로 나눈다
MOD 두 값의 나머지를 구한다
SMOD 부호 있는 정수로 나머지를 구한다
ADDMOD 두 값을 더한 후 모듈러 연산을 수행
MULMOD 두 값을 곱한 후 모듈러 연산을 수행
EXP 거듭제곱을 계산

Stack 조작 명령어

스택 조작 명령어는 스택의 상태를 변경

POP 스택의 최상단 값을 제거
PUSH1 to PUSH32 1바이트에서 32바이트 길이의 데이터를 Stack에 PUSH
DUP1 to DUP16 스택의 최상단에서 n번째 값을 복사하여 Stack에 PUSH
SWAP1 to SWAP16 스택의 최상단 값과 n번째 값을 교환

Memory 및 Storage 접근 명령어

Memory 및 Storage 접근 명령어는 Memory와 Storage에 데이터를 읽고 쓴다.

MLOAD Memory에서 값을 읽는다
MSTORE Memory에 값을 쓴다
MSTORE8 8bit 값을 Memory에 쓴다
SLOAD Storage에서 값을 읽는다
SSTORE Storage에 값을 쓴다

Flow Control 명령어

흐름 제어 명령어는 코드의 실행 흐름을 제어한다.

JUMP 지정된 위치로 코드 실행을 이동
JUMP I 조건이 참이면 지정된 위치로 코드 실행을 이동
PC 현재 Program Counter 값을 반환
JUMPDEST 유요한 점프 대상 위치를 표시

 


Environment Information 명령어

환경 정보 명령어는 Transaction 및 BlockChain 관련 정보를 제공한다.

BALANCE 특정 주소의 잔액을 반환
ORIGIN Transaction의 발신 주소를 반환
CALLER 현재 호출자의 주소를 반환
CALLVALUE Transaction의 값을 반환
CALLDATALOAD 호출 데이터의 특정 위치에서 데이터를 읽는다
CALLDATASIZE 호출 데이터의 크기를 반환
CALLDATACOPY 호출 데이터를 Memory 복사
CODESIZE 현재 코드의 크기를 반환
CODECOPY 현재 코드를 Memory에 복사
GASPRICE Transaction의 GAS 가격을 반환
EXTCODESIZE 외부 주소의 코드 크기를 반환
EXTCODECOPY 외부 주소의 코드를 Memory에 복사

 

System 명령어

시스템 명령어는 Smart Contract의 실행 환경을 관리한다.

CREATE 새로운 Smart Contract를 생성
CALL 다른 Smart Contract를 호출
CALLCODE 현재 컨텍스트에서 다른 Smart Contract의 코드 실행
RETURN 실행을 종료하고 출력을 반환
DELEGATECALL 호출자의 컨텍스트에서 다른 Smart Contract 호출
STATICALL 상태를 변경하지 않은 호출을 수행
REVERT 실행을 중단하고 모든 상태 변경을 되돌림
SELFDESTRUCT 현재 계약을 파기하고 잔액을 지정된 주소로 보냄

 

'Web3' 카테고리의 다른 글

[Web3] Ethereum Block  (0) 2025.06.07
[Web3] Ethereum 구조  (1) 2025.06.06