liminfo

EVM Opcode Reference

EVM 옵코드 레퍼런스 - 가스비, 스택 입출력 테이블

33개 결과
OpcodeHexGasStack InStack Out카테고리
STOP0x00000제어
ADD0x01321산술
MUL0x02521산술
SUB0x03321산술
DIV0x04521산술
MOD0x06521산술
EXP0x0A1021산술
LT0x10321비교
GT0x11321비교
EQ0x14321비교
ISZERO0x15311비교
MLOAD0x51311메모리
MSTORE0x52320메모리
MSIZE0x59201메모리
SLOAD0x542,10011스토리지
SSTORE0x5520,00020스토리지
JUMP0x56810제어
JUMPI0x571020제어
JUMPDEST0x5B100제어
REVERT0xFD020제어
PUSH10x60301스택
PUSH320x7F301스택
DUP10x80312스택
SWAP10x90322스택
POP0x50210스택
CALL0xF110071시스템
DELEGATECALL0xF410061시스템
CREATE0xF032,00031시스템
CREATE20xF532,00041시스템
SELFDESTRUCT0xFF5,00010시스템
CALLER0x33201시스템
CALLVALUE0x34201시스템
BALANCE0x3110011시스템

EVM Opcode Reference 소개

EVM Opcode 레퍼런스는 이더리움 가상 머신(EVM)의 핵심 opcode를 검색·필터링할 수 있는 치트 시트입니다. 각 항목에는 opcode 니모닉, 16진수 인코딩, 가스 비용, 스택 소비 수(Stack In), 스택 생성 수(Stack Out)가 표시됩니다. 카테고리는 산술(ADD, MUL, SUB, DIV, MOD, EXP), 비교(LT, GT, EQ, ISZERO), 메모리(MLOAD, MSTORE, MSIZE), 스토리지(SLOAD, SSTORE), 제어(JUMP, JUMPI, JUMPDEST, REVERT, STOP), 스택(PUSH1, PUSH32, DUP1, SWAP1, POP), 시스템(CALL, DELEGATECALL, CREATE, CREATE2, SELFDESTRUCT, CALLER, CALLVALUE, BALANCE)으로 구성되어 있습니다.

이더리움 스마트 컨트랙트 개발자, Solidity 감사자, EVM 연구자들은 저수준 어셈블리(Yul/인라인 어셈블리) 작성, 바이트코드 분석, 가스 최적화 작업 시 이 레퍼런스를 활용합니다. 예를 들어 SSTORE는 20,000 가스인 반면 ADD는 단 3 가스라는 사실을 정확히 파악하는 것은 가스 효율적인 컨트랙트 작성과 트랜잭션 수수료 추정에 핵심적입니다.

이 레퍼런스는 브라우저에서 완전히 실행되며 서버 통신이 없습니다. 검색창에 "CALL" 같은 opcode 이름이나 "0xF1" 같은 16진수 값을 입력하면 해당 행으로 즉시 이동합니다. 카테고리 필터를 사용하면 특정 기능 그룹의 opcode만 모아 볼 수 있어 EVM 내부 구조를 배우는 입문자와 보안 감사를 수행하는 전문가 모두에게 유용합니다.

주요 기능

  • 전체 opcode 표: 니모닉, 16진수 코드, 가스 비용, 스택 입력 수, 스택 출력 수, 카테고리
  • opcode 이름 또는 16진수 값으로 실시간 검색 (예: "SSTORE" 또는 "0x55")
  • 카테고리 필터: 산술, 비교, 메모리, 스토리지, 제어, 스택, 시스템
  • EIP-2929 콜드/웜 스토리지 접근 규칙이 반영된 가스 비용 데이터 (SLOAD 2100, SSTORE 20000)
  • 정확한 스택 깊이를 포함한 시스템 호출 opcode: CALL, DELEGATECALL, CREATE, CREATE2, SELFDESTRUCT
  • 한국어·영어 완전 지원 — 로케일 전환 시 UI 전체가 자동 변경
  • 100% 클라이언트 사이드 — 서버 요청 없음, 데이터 전송 없음, 즉각적인 결과
  • 다크 모드 및 모바일 반응형 테이블 레이아웃

자주 묻는 질문

EVM이란 무엇이고 opcode는 왜 중요한가요?

이더리움 가상 머신(EVM)은 이더리움 및 호환 체인에서 스마트 컨트랙트를 실행하는 샌드박스 런타임입니다. Solidity나 Vyper로 작성한 함수는 모두 EVM opcode — 저수준 바이트코드 명령어 시퀀스로 컴파일됩니다. opcode를 이해하면 가스 최적화, 바이트코드 분석, Yul 어셈블리 작성, 보안 감사에 직접 활용할 수 있습니다.

특정 opcode를 어떻게 검색하나요?

상단 검색창에 opcode 니모닉(예: "SLOAD") 또는 16진수 코드(예: "0x54")를 입력하세요. 입력하는 즉시 테이블이 실시간으로 필터링되어 일치하는 항목만 표시됩니다.

Stack In과 Stack Out은 무슨 의미인가요?

Stack In은 opcode 실행 전에 스택에서 꺼내는(pop) 아이템 수입니다. Stack Out은 실행 후 스택에 다시 올리는(push) 아이템 수입니다. 예를 들어 ADD는 Stack In = 2(두 값을 팝), Stack Out = 1(합계를 푸시)입니다.

SSTORE는 왜 가스 비용이 20,000이나 되나요?

SSTORE는 이더리움 상태 트리에 영구적으로 저장되는 컨트랙트 스토리지에 값을 씁니다. 이 높은 가스 비용은 전 세계 모든 이더리움 노드가 해당 데이터를 영구 복제해야 하는 디스크·네트워크 부담을 반영합니다.

CALL과 DELEGATECALL의 차이는 무엇인가요?

CALL은 외부 컨트랙트의 코드를 그 컨트랙트 자신의 스토리지 컨텍스트에서 실행합니다. DELEGATECALL은 외부 코드를 호출 컨트랙트의 스토리지 컨텍스트에서 실행하며 msg.sender와 msg.value가 그대로 유지됩니다. 이 차이는 프록시 패턴과 업그레이더블 컨트랙트 구현에서 매우 중요합니다.

REVERT opcode는 어떤 역할을 하나요?

REVERT는 실행을 중단하고 현재 콜 프레임에서 발생한 모든 상태 변경을 롤백합니다. 스택에서 메모리 오프셋과 크기를 인수로 받아 선택적 오류 메시지를 반환할 수 있습니다. 실행을 단순 중단하는 STOP과 달리 미사용 가스를 환불하고 호출자에게 실패를 알립니다.

CREATE2가 CREATE와 다른 점은?

CREATE는 배포자의 주소와 논스(nonce)를 기반으로 컨트랙트 주소를 결정합니다. CREATE2는 논스 대신 사용자가 제공한 솔트(salt)를 사용하므로 배포 전에 주소를 미리 결정할 수 있습니다. 이는 카운터팩추얼 컨트랙트 패턴과 레이어 2 프로토콜에서 활용됩니다.

이 레퍼런스는 최신 이더리움 업그레이드를 반영하나요?

이 레퍼런스는 이더리움 Yellow Paper에 정의된 핵심 opcode와 EIP-2929(Berlin) 기준의 스토리지 접근 가스 비용을 반영합니다. EIP-3855(PUSH0) 등 이후 EIP는 아직 포함되지 않았습니다. 가장 권위 있는 명세는 공식 이더리움 실행 스펙을 참조하세요.