Ethereum Virtual Machine 개요
가스(블록체인)
가상 머신은 컴퓨팅 환경을 소프트웨어로 구현한 것, 즉 컴퓨터 시스템을 에뮬레이션(가상현실화)하는 소프트웨어다. 가상 머신 상에서 운영체제나 응용 프로그램을 설치 및 실행을 할 수 있다.
하드웨어 가상 머신이라고도 부르며 각 운영 체제를 실행하는 가상 머신 사이의 기초가 되는 물리 컴퓨터를 다중화(multiplex)한다. 같은 컴퓨터에서 다른 운영체제를 돌릴 수 있게 해준다. 예를 들어 윈도우즈 운영체제에서 리눅스 운영체제를 쓰고 싶을 때, VMware같은 프로그램을 이용하여 리눅스 가상 머신을 만들어서 사용한다.
고급 프로그래밍 언어에서 높은 수준의 추출을 제공한다.
솔리디티로 짠 코드는 솔리디티 컴파일러에 의해 기계어가 만들어진다. 이 경우 Ethereum Bytecodes라 불리고, 이 바이트 코드가 EVM에 의해 실행되는 것이다.
EVM은 Ethereum 블록체인 네트워크의 노드들이 공유하는 하나의 가상 머신이다. 매우 거대한 하나의 분산 컴퓨터라고 볼 수 있다. 블록체인 네트워크상의 노드들은 이 거대한 컴퓨터에 누구나 접근할 수 있다. 또 수많은 사용자가 변경하는 데이터의 충동, 보안을 마이닝과 합의 알고리즘으로 해결할 수 있다.
이러한 EVM은 공짜가 아니다. transaction을 실행하는데 필요한 비용을 gas라고 한다.
gas는 일의 양을 나타내는 단위이다. gas fee는 Ether 가격변동에 따라 변하는 값이다.
Gas fee = (transaction에 필요한 Gas) x (Gas 비용 Ether) [단위:Gwei] 1Gwei=1x10^(-9)Ether
중요한 한 가지는 transaction을 생성한 주체가 트랜잭션 실행에 필요한 gas limit을 설정한다는 것이다. 이 gas fee는 채굴자들이 가져가는 것으로 넉넉하게 설정할 필요가 있지만, 너무 크게 잡아도 오히려 '뻥카'로 의심을 받아 transaction이 블락화되지 않을 수도 있다고 한다.
EVM은 프로그램을 실행시키는 프로그램이다. 또 누구나 접속할 수 있는 컴퓨터이다. 따라서 이 컴퓨터를 특정 프로그램이 독점하면 안된다. 이를 방지하기 위해 Gas가 도입되었으며, transaction을 생성할 때, gas limit을 정하고 EVM은 transaction을 처리하며 Gas를 소모한다. Gas Limit으로 설정한 Gas가 모두 소모되면 EVM은 해당 transaction을 종료시킨다. 따라서 무한정 도는 Loop는 존재할 수가 없는 것이다.