이더리움 EVM이란 dAPP(스마트컨트랙트)이 구동되는 이더리움 내 가상머신(Virtual Machine)이다. 이더리움블록체인상에 배포되는 프로그램에서 발생하는 로직들을 처리하고 계산하는 계산기(cpu/computer) 역할을 한다. 또한 JAVA의 JVM에 대해 아는 사람이라면 JVM처럼, EVM은 솔리디티라는 언어를 컴파일하면 생성되는 바이트코드를 운영체제와 상관없이 이더리움 네트워크 내에서 실행하도록 하는 역할을 한다.
보통 처음 블록체인을 공부하기 시작하면, 비트코인의 아키텍처에 대한 자료가 많다. 그런데, 비트코인에는 이 가상머신이라는 개념이 별도로 존재하지는 않는다. 스마트컨트랙트 같은 하나의 프로그램이 구동되는 방식이 아니라, 돈을 주고 받는 트랜잭션만 처리하고 각 노드들이 그것을 기록하는 일종의 장부역할만을 하기 때문이다. 그래서 이더리움으로 넘어오면, 이더리움 블록체인 노드들과 EVM에 대한 혼선이 생기고 이 둘을 별개의 것으로 생각하게 된다. 나도 처음에는 이더리움재단에서 EVM을 별도로 운영하는 줄 알았다. EVM으로 트랜잭션 처리를 해주고 그 결과값들만 노드들이 나눠서 저장 하는 줄 알았는데, 그것이 아니라 노드들이 EVM도 내장하고 있다. 즉, 둘은 하나인 것이다. 이를 좀 더 명확하게 이해하기 위해 블록체인 노드를 실행하면 발생하는 일에 대해 살펴보면 더 쉬울것 같다.
먼저, 이더리움 노드를 실행하려면 Geth라는 것을 다운받아야 한다. Geth는 이더리움 재단에서 제공하는 소프트웨어로서, 블록체인의 노드생성을 위한 명령도구(CLI)를 지원한다. 즉, 노드를 만들수 있게 해주는 프로그램으로서 Geth를 다운받아 실행하면 내 PC에서 이더리움 노드가 구동되어 1)이더리움 네트워크와 Sync가 시작된다. 이 Geth소프트웨어가 EVM을 내장하고 있어서, 2)노드를 실행함과 동시에 EVM도 구동된다.
노드가 실행되면 1)과 같이 먼저 다른 노드들이 가지고 있는 블록정보들을 내 PC에 파일로 모두 떨궈서 블록동기화를 시키게 된다. sync가 끝이나면 노드는 2)와 같이 가상머신 역할도 같이 하여, 실시간으로 블록체인 네트워크에 올라오는 스마트컨트랙트의 트랜잭션을 처리하고 그 결과값들을 블록으로 만들고 또다시 1)과 같이 각 노드들이 나눠서 sync를 하게 된다.
EVM의 역할이 정확히 어디까지인지는 모르겠으나, 노드안에 EVM이 내장되어 있고 이 노드는 각 트랜잭션의 처리와 마이닝, 그리고 블록 동기화까지 일련의 모든 과정을 처리한다 정도로 이해하면 되지 않을까 싶다.
참고자료)
What is EVM (The Ethereum Virtual Machine)? : https://www.bitrates.com/guides/ethereum/what-is-the-unstoppable-world-computer
Ethereum Virtual Machine (EVM) : https://wiki.rugdoc.io/docs/ethereum-virtual-machine-evm/
'프로그래밍 > 블록체인' 카테고리의 다른 글
비트코인 잠금 / 해제 스크립트관련 정리 (0) | 2022.02.12 |
---|---|
암호화 방식 총정리(feat.비트코인) (0) | 2022.02.11 |
이더리움 dapp 개발환경 구성 (0) | 2021.12.20 |
이더리움 노드 구성 및 실행 방법 (0) | 2021.12.20 |