**이더리움 가상 머신(EVM, Ethereum Virtual Machine)**은 스마트 계약을 이더리움 네트워크에서 실행하는 분산형 컴퓨팅 엔진입니다. EVM은 네트워크 전반의 규칙을 적용하고 일관성을 유지함으로써 스마트 계약 내 코드가 의도한 대로 정확하게 실행되도록 합니다. [1][2]
가상 머신(VM)은 이름에서 알 수 있듯이 실제 컴퓨터의 가상화와 관련이 있습니다. EVM 블록체인은 이더리움 기반 스마트 계약을 위한 인프라로 설계되었습니다. 초기에는 암호화폐 공간에 위협이 되는 서비스 거부 공격을 방지하기 위해 구축되었습니다. [3]
이더리움 가상 머신(EVM)은 Gavin Wood가 이더리움 작업 중에 설계했습니다. C++로 작성되고 LLVM 프로젝트 컴파일러를 사용하는 EVM은 지속적으로 작동하는 특수한 상태 머신이며, 변경 불가능한 연산이 이더리움 블록체인의 각 블록 상태를 결정합니다. [1]
이더리움 가상 머신(EVM)은 이더리움 네트워크의 기본 구성 요소입니다. EVM은 이더리움을 비트코인과 같은 분산 원장 이상으로 만드는 핵심 기능입니다. 이더리움 블록체인의 기반을 형성하는 EVM은 개발자에게 Solidity, Vyper, Python, Yul 등 여러 언어로 스마트 계약 및 탈중앙화 애플리케이션(DApp)을 생성할 수 있는 런타임 환경을 제공합니다. [1][4]
EVM은 네트워크의 모든 노드에 액세스하고, 스마트 계약 실행을 처리하며, 주요 가동 중단 없이 이더리움 블록체인의 모든 트랜잭션을 처리합니다. [1]
EVM opcode는 스마트 계약 또는 트랜잭션의 특정 작업을 실행하는 데 EVM을 지원합니다. 효율성을 위해 EVM은 바이트코드를 opcode로 변환하며, 각 opcode에는 바이트코드에서 1바이트가 할당됩니다. 각 opcode 연산에는 EVM이 사용하는 특정 양의 가스가 필요합니다. [4]
스마트 계약이 실행될 때마다 EVM은 이더리움 네트워크의 새로운 상태를 계산하여 계정 잔액, 스마트 계약의 데이터 저장소 및 계정 및 계약 수준의 트랜잭션을 업데이트합니다. 이러한 모든 기능은 소위 상태 내부에 존재하는 것입니다. EVM은 이러한 스마트 계약이 상호 작용하고 존재할 수 있는 환경이며, EVM은 이더리움 네트워크에 연결된 수천 개의 CPU 리소스를 결합합니다. EVM은 Solidity를 직접 실행할 수 없으므로 코드는 opcode라고 하는 기계 명령어로 컴파일되며, opcode를 사용하려면 가스가 필요합니다. [4][8]
가스의 주요 목적은 이더리움 네트워크의 각 노드가 수행하는 스마트 계약 연산에 대한 수수료 역할을 하는 것입니다. 계산 수수료는 공격자가 네트워크를 중단시키는 데 오랜 계산 시간이 필요한 많은 복잡한 계약을 배포하는 것을 방지합니다. 이러한 수수료는 이러한 유형의 DDoS(분산 서비스 거부) 공격이 실행되는 것을 너무 비싸게 만듭니다.
가스는 또한 트랜잭션의 정보가 유효하다는 것을 보장하는 책임이 있는 검증자에 대한 보상 역할을 합니다. 네트워크 활동이 높으면 사람들은 트랜잭션을 실행하고 검증하기 위해 가스 한도를 높입니다. 이렇게 하면 검증자는 더 높은 가스 한도를 가진 트랜잭션을 메모리 풀에서 선택합니다. [4]