블록체인
Ethereum Virtual MachineEVM
EVM(Ethereum Virtual Machine, 이더리움 가상 머신)은 이더리움 블록체인의 모든 노드에서 동일하게 실행되는 가상 머신이다. 스마트 컨트랙트 코드를 EVM 바이트코드로 컴파일해 실행하며, 결정론적으로 동작해 네트워크 전체에서 동일한 결과를 보장한다.
EVM의 역할
핵심 특성
| 특성 | 설명 |
|---|---|
| 스택 기반 | 256비트 스택으로 연산 수행 (깊이 1024) |
| 결정론적 | 같은 입력 → 항상 같은 출력 |
| 샌드박스 | 외부 시스템에 직접 접근 불가 |
| 튜링 완전 | 임의의 계산 표현 가능 |
| Gas 제한 | 무한 루프 방지, 자원 남용 방어 |
메모리 구조
EVM은 세 가지 데이터 영역으로 구성된다.
| 영역 | 특성 | Gas 비용 |
|---|---|---|
| 스택(Stack) | LIFO 구조, 즉각적 계산용 임시 저장 | 낮음 |
| 메모리(Memory) | 선형 확장 가능, 트랜잭션 중에만 존재 | 중간 |
| 스토리지(Storage) | 블록체인에 영구 저장 | 높음 (SSTORE) |
| 일시적 스토리지(Transient) | 트랜잭션 내에서만 유효, EIP-1153 (Cancun) | 낮음 |
주요 Opcode 카테고리
| 카테고리 | 예시 opcode |
|---|---|
| 산술·논리 | ADD, SUB, MUL, DIV, AND, OR, XOR |
| 환경 | ADDRESS, CALLER, CALLVALUE, GASPRICE |
| 블록 정보 | BLOCKHASH, COINBASE, TIMESTAMP, NUMBER |
| 스토리지 | SLOAD, SSTORE, TLOAD, TSTORE |
| 흐름 제어 | JUMP, JUMPI, STOP, REVERT, RETURN |
| 로그 | LOG0~LOG4 (이벤트 발생) |
Gas와 EVM
EVM의 모든 opcode는 고정된 Gas 비용을 가진다. SSTORE(스토리지 쓰기)는 비싸고, ADD(덧셈)는 저렴하다. 트랜잭션 실행 중 Gas가 고갈되면 실행이 롤백된다.
주요 업그레이드 이력
| 업그레이드 | 주요 변경사항 |
|---|---|
| Shanghai (2023) | stETH 출금 활성화, PUSH0 opcode 추가 |
| Cancun (2024) | EIP-4844(blob), EIP-1153(일시적 스토리지) |
| Fusaka (예정) | EVM Object Format, 추가 opcode |
EVM 호환 체인
EVM 사양은 공개되어 있어 다양한 체인이 이를 채택한다.
| 체인 | 특징 |
|---|---|
| Ethereum | 원조 EVM (~$120B TVL) |
| Polygon PoS | 이더리움 호환 Sidechain |
| BNB Chain | 바이낸스 운영 EVM 체인 |
| Avalanche C-Chain | 고성능 EVM |
| Arbitrum One | Optimistic Rollup L2 (~$13.8B TVL) |
| Base | OP Stack 기반 L2 (~$11.2B TVL) |
EVM 호환성 덕분에 이더리움 생태계의 스마트 컨트랙트와 도구를 그대로 다른 체인에 이식할 수 있다.
비EVM 체인과의 비교
| 항목 | EVM 체인 | 비EVM (Solana, Near 등) |
|---|---|---|
| 스마트 컨트랙트 언어 | Solidity, Vyper | Rust, AssemblyScript |
| 가상 머신 | EVM | SBF, WASM 등 |
| 개발 도구 공유 | 가능 (MetaMask, Hardhat 등) | 별도 생태계 필요 |
| 이더리움 이식성 | 코드 재사용 가능 | 재작성 필요 |
관련 개념
- •스마트 컨트랙트 — EVM이 실행하는 대상
- •Gas — EVM 연산 비용 단위
- •튜링 완전 — EVM의 계산 능력 특성
- •Solidity — EVM 스마트 컨트랙트 언어
- •결정론적 실행 — EVM의 핵심 보장