반응형

EVM은 Ethereum Virtual Machine로 이더리움 블록체인 네트워크 노드들이 공유하는 하나의 가상 머신이다. 즉, 하나의 거대한 분산 컴퓨터라고 생각해도 무방하다.


EVM에는 여러 사용자가 프로그램 실행을 위해 접근이 가능하고 트랜잭션을 보낼 수 있는데 동시에 A가 C를 1로 바꾸고 B가 C를 2로바꾸는 동시성 문제에 대해 마이닝과 합의 알고리즘을 통해 해결해주는 역할을 한다.


EVM을 이용하기 위해서는 솔리디티로 짠 스마트 컨트랙트 코드를 솔리디티 컴파일러가 이더리움 바이트 코드(Ethereum Bytecode)로 변환시켜 EVM에서 실행시킬 수 있다.



비트코인 블록체인은 튜링 불완전성이기에 while문 같은 코드를 이용 할 수 없지만, 이더리움에서는 튜링 완전성을 지원한다.


이 튜링 완전성을 지원하기 위해 EVM에서는 가스(Gas)를 받게 되고 해당 프로그램 소스 코드가 돌기위해 얼만큼의 가스가 필요한지 EVM에서 계산하여 사용자에게 알려주고 해당 사용자가 계산된 가스 이상의 가스를 가지고 있으면 실행을 허가해준다.


이때 가스는 Ether로 변환되는데 트랜잭션에 필요한 Gas * 1Gas당 비용(Ether)으로 계산된다.

(이때 가스는 여러 외부 요소에 의해 시세가 정해지게 된다.)


이때 EVM을 이용하기 위해 사용자는 Gas Limit을 설정해야하는데 실제로 코드를 실행하기 전까지 가스가 얼마나 필요한지 모르기에 넉넉하게 명시해야한다.


이때 마이너들은 Gas Limit을 보고 트랜잭션의 우선순위를 두게 되는데 고의적으로 크게두면 마이너들이 고의성을 판단하고 채굴하지 않아주면 영원히 해당 트랜잭션을 사용하지 못할 수도 있다.



EVM이 동작하는 순서는 다음과 같다.


  1. 트랜잭션이 올바른 형식인지 확인

  2. 트랜잭션 수수료 계산(Gas limit x Gas Price)

  3. Gas 지불 초기화. 이 시점부터 트랜잭션에서 처리된 바이트만큼 특정 양의 가스를 차감

  4. 트랜잭션 금액을 수신 계정으로 보냄 (Smart Contract도 이 단계에서 실행됨)

  5. 송신 계정에 트랜잭션을 완료할 수 있을 만큼 Gas Price가 충분하지 않으면 트랜잭션의 모든 변경 사항이 되돌려지지만 트랙잰션 수수료는 채굴자에게 지불되고 환불되지 않음

  6. 5번의 경우와 다른 이유로 트랜잭션이 실패한 경우, 송신 계정에 Gas price를 환불하고, 채굴자가 사용된 Gas와 관련된 비용은 채굴자에게 전달됨







반응형