이더리움 마스터하기, 2nd Edition
by Carlo Parisi, Alessandro Mazza, Niccolo Pozzolini, Gavin Wood, Andreas M. Antonopoulos
14장. 이더리움 가상 머신
이 작품은 AI를 사용하여 번역되었습니다. 여러분의 피드백과 의견을 환영합니다: translation-feedback@oreilly.com
이더리움 프로토콜과 운영의 핵심은 이더리움 가상 머신, 줄여서 EVM입니다. 이름에서 짐작할 수 있듯이, 이는 마이크로소프트의 .NET 프레임워크의 가상 머신이나 Java와 같은 다른 바이트코드로 컴파일된 프로그래밍 언어의 인터프리터와 크게 다르지 않은 연산 엔진입니다. 이 장에서는 이더리움 상태 업데이트의 맥락에서 명령어 세트, 구조, 작동을 포함한 EVM에 대해 자세히 살펴보겠습니다.
EVM이란 무엇인가요?
EVM은 스마트 콘트랙트 배포와 실행을 처리하는 이더리움의 일부입니다. 한 EOA에서 다른 EOA로의 간단한 가치 전송 트랜잭션은 실질적으로 EVM을 포함할 필요가 없지만, 그 외의 모든 트랜잭션에는 EVM이 계산하는 상태 업데이트가 포함됩니다. 높은 수준에서 이더리움 블록체인에서 실행되는 EVM은 각각 고유한 영구 데이터 저장소가 있는 수백만 개의 실행 가능한 개체를 포함하는 글로벌 분산 컴퓨터로 생각할 수 있습니다.
EVM은 준 튜링 완전 상태 머신입니다: 모든 실행 프로세스가 특정 스마트 콘트랙트 실행에 사용할 수 있는 가스 양에 따라 유한한 수의 계산 단계로 제한되기 때문에 "준"이라는 표현을 씁니다. 따라서 중단 문제는 "해결"(모든 프로그램 실행이 중단됨)되며, 실수로 또는 악의적으로 실행이 영원히 실행되어 이더리움 플랫폼이 완전히 중단될 수 있는 상황을 피할 수 있습니다. 이후 섹션에서 중단 문제에 대해 더 자세히 살펴보겠습니다.
EVM은 스택 기반 아키텍처로 모든 인메모리 값을 스택에 저장합니다. 주로 네이티브 해싱과 타원 곡선 연산을 용이하게 하기 위해 256비트의 워드 크기로 작동하며, 주소 지정이 가능한 여러 데이터 컴포넌트가 있습니다:
실행할 스마트 콘트랙트의 바이트코드가 로드된 불변의 프로그램 코드 ROM.
모든 위치가 명시적으로 0으로 초기화된 휘발성 메모리
단일 트랜잭션 기간 동안만 지속되는 일시적 저장소 (이더리움 상태의 일부가 아님)
이더리움 상태의 일부인 영구 저장소, 역시 0으로 초기화됨
실행 중에 사용할 수 있는 환경 변수와 데이터 세트도 있습니다. 이에 대해서는 이 장의 뒷부분에서 더 자세히 살펴보겠습니다.
그림 14-1은 EVM 아키텍처와 실행 컨텍스트를 보여줍니다.
그림 14-1. EVM 아키텍처와 실행 컨텍스트
기존 기술과의 비교
가상 머신이라는 용어는 실제 컴퓨터의 가상화, 일반적으로 VirtualBox나 QEMU와 같은 하이퍼바이저 또는 Linux의 KVM과 같은 전체 운영 체제 인스턴스의 가상화에 종종 적용됩니다. 이들은 각각 실제 하드웨어와 시스템 호출 및 기타 커널 기능에 대한 소프트웨어 추상화를 제공해야 합니다.
EVM은 훨씬 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access