EVM

2025. 5. 25. 14:00·Hacking/Web3
728x90
반응형

Ethereum Virtual Machine

  • 이더리움에서 사용되는 가상 머신
  • 모든 이더리움 노드에서 코드를 일관되고 안전하게 실행하는 분산형 가상 환경

EVM은, 블록이 추가될 때 state를 어떻게 변경할지에 대한 규칙을 정의하고 있다. 

-> 수학적 함수 같은 것

 

EVM 구조

https://ethereum.org/en/developers/docs/evm/

Machine state (volatile)

휘발성 메모리에 해당하며, 스마트 컨트랙트 실행 중에만 유지됨

블록이 끝나면 사라진다. 

  • PC : 현재 실행 중인 명령어의 위치, 스마트 컨트랙트 코드의 어느 줄을 실행 중인지 추적함
  • Stack : 연산을 수행할 때 사용되는 스택 -> EVM은 레지스터 기반이 아닌 스택 기반의 머신
  • Gas available : 현재 트랜젝션이 사용할 수 있는 가스의 양 -> 가스가 부족하면 실행 중단
  • Memory : 실행 중인 트랜잭션만 사용하는 임시 메모리 (배열, 문자열 등 데이터)

EVM의 stack 구조

Virtual ROM (immutable)

  • EVM Code가 저장되어 있다.
  • 스마트 컨트랙트를 구성하는 바이트 코드
  • 변경할 수 없는 읽기 전용 데이터
  • 디플로이 (배포) 된 후에는 수정할 수 없음

World state (persistent)

  • 각 계정 EOA or CA의 영속적인 저장소
  • 스마트 컨트랙트의 상태 변수들이 저장됨
  • 블록체인 전체 상태에 영향을 줌

 

State Trasition Function

EVM은 수학적 함수처럼 동작한다. 

입력이 주어지면 항상 결정적인 (예측 가능한) 출력을 생성한다. 

따라서 이더리움을 보다 형식적으로 상태 전이 함수로 설명하는 것이 유용함

 

Y(S, T)= S'

 

유효한 이전 상태 S, 유효한 트랜젝션 집합 T가 주어지면, 이더리움 상태 전이 함수 Y(S,T) 는 새로운 유요한 출력 상태 S'를 생성한다 

 

더보기

[ 개인적인 생각 ]

컴퓨터이션 이론과 관련된 생각이 들었다. 

나중에, 복잡한 솔리디티 코드 등을 짜게 된다면 상태 다이어그램 등, 컴퓨테이션 이론에서 배웠던걸 사용할 날이 올 것 같다.

State

이더리움에서 'state'란 매우 거대한 데이터 구조

Modified Merkle Patricia Trie라는 구조를 사용한다. 

이 구조는 모든 계정을 해시로 연결하여 하나의 루트 해시로 축약할 수 있다. 

이 루트 해시는 블록체인 상에 저장된다. 

 

Transactions

트랜젝션은 계정에서 보내는 암호화된 서명 명령 (Instruction)

  1. Message Call을 발생시키는 트랜젝션
  2. 스마트 컨트랙트 생성을 발생시키는 트랜젝션 -> CA 생성

 

EVM Instruction 

https://ethereum.org/en/developers/docs/evm/

EVM은 스택 기반 머신으로, 1024개의 아이템을 저장할 수 있다. 

* 각 아이템은 256bit (32byte) 정수 -> 이더리움 암호화 연산 (Keccak0256해시 등)과 호환

 

Transient memory (휘발성 메모리)

  • 트랜잭션 실행 중에만 존재하는 메모리 (트랜잭션 끝나면 사라짐)
  • 바이트 배열(byte array)로 구성된 워드 주소 기반 메모리 (word-addressed)
  • 일반적인 배열, 문자열, 중간 계산 결과 등 저장에 사용

Storage (영구 저장소)

  • 각 스마트 컨트랙트 계정에 연결된 Merkle Patricia Trie 구조
  • 글로벌 상태(state)의 일부로, 트랜잭션이 끝나도 유지됨
  • 변수 값 저장 등 장기적인 상태 추적에 사용됨

Gas (가스의 필요성)

  • EVM의 각 명령어는 가스를 소비합니다.
  • 이는 무한 루프 방지와 노드의 리소스 남용을 방지하기 위한 것
  • 예시:
    • ADD 같은 단순 연산은 적은 가스 소모
    • SSTORE 같은 저장 연산은 많은 가스 소모
  • 가스가 부족하면 실행이 중단(Revert)됩니다.
728x90
반응형
저작자표시 비영리 변경금지 (새창열림)

'Hacking > Web3' 카테고리의 다른 글

PoW | PoS | DPoS  (0) 2025.05.25
DeFi  (0) 2025.05.25
Bitcoin Node  (0) 2025.05.25
PoS | 지분증명  (0) 2025.05.25
DApp  (0) 2025.05.25
'Hacking/Web3' 카테고리의 다른 글
  • PoW | PoS | DPoS
  • DeFi
  • Bitcoin Node
  • PoS | 지분증명
min_zu
min_zu
  • min_zu
    민주제도
    min_zu
  • 전체
    오늘
    어제
    • ._. (176)
      • AI (2)
        • DeepLearning (2)
        • CS231n (0)
      • Web (2)
        • ReactJS (0)
      • CS (83)
        • OS (7)
        • Data Structure (23)
        • Computer Architecture (8)
        • Computer Network (20)
        • Algorithm (25)
      • Linux (3)
        • KaliLinux (0)
        • Docker (1)
      • Hacking (83)
        • Write Up (25)
        • Pwnable (13)
        • Reversing (2)
        • Cryptography (12)
        • Web Hacking (4)
        • Window (6)
        • Network (7)
        • Web3 (13)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Mac
    WinAFL
    ComputerArchitecture
    Linux
    Tree
    Search
    Sort
    Graph
    OS
    DeepLearning
    DataStructure
    AI
    UTM
    Web
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
min_zu
EVM
상단으로

티스토리툴바