티스토리 뷰

공부한거 그냥 정리..


EVM이란?

스마트 컨트랙트를 처리 (배포, 실행) 하기 위한 이더리움 가상 머신이다.

Turing complete state machine 이라고 불리는데, 

Turing complete는 조건문과 반목문을 사용할 수 있는 것을 이야기 한다. 코드 실행에 가스비용을 부여하여 영원히 코드가 실행되는 무한루프가 없기 때문에 튜링 컴플리트하다.

State machine은 한번에 하나의 상태를 가지는 것을 의미한다. 예를 들어 대기 -> 실행 -> 결과 라는 세개의 상태를 가지고 있는 기계라고 했을 때 동시에 대기와 실행의 상태를 가질 수 없고, 단 한가지 상태만을 가질 수 있는 머신을 상태 머신이라고 명명한다. 상태는 사건(event)에 의해 다른 상태로 변화할 수 있으며 이를 Transition이라고 한다.

공식 문서에서는

§Instead of a distributed ledger, Ethereum is a distributed state machine

라는 표현을 사용한다.

일반적인 블록체인 네트워크에서 표현되는 분산원장대신 분상 상태 머신을 가지고 있다는 뜻인데, 이더리움의 트랜잭션은 영수증형태의 거내래역 뿐 아니라 스마트컨트랙트의 코드가 블록체인 네트워크에 올라가게 되고, 그 코드에 의하여 상태를 변화시키므로 이렇게 말하는 것 같다. 

EVM이 이더리움 네트워크 노드들이 유지하는 가상의 컴퓨터라는 이야기도 많이 하는데... 사실 어디까지 동의해야하는지 모르겠다. 처리 과정을 보면 스마트컨트랙트가 이더리움 네트워크에 트랜잭션 형태로 존재하게 되고, 그걸 실행시켜주는것이 채굴자가 블록을 채굴할 때 컨펌되고 실행된다.

클라이언트를 가진 트랜잭션 요청자들이 Gas를 담아서 요청을 전송하게 되면, 블록 생성자인 채굴자는 트랜잭션을 블록에 담아 실행시키는 대가로 Gas를 지급받게 된다. 

이때, 모든 이더리움 네트워크가 같은 상태(내용)를 가지고 있어야 하기 때문에 블록을 생성한 노드는 다른 노드들에게 전파하고, 모든 노드는 결국 같은 트랜잭션을 실행하여 네트워크의 상태가 

 

(항상 실행되는 것이 아닌 채굴이 일어나야만 즉 블록이 완성 되어 네트워크에 공유되어야만 실행이 됨)  


그래서 EVM은 어떻게 동작할 수 있는가?

생각해 본다면

스마트 컨트랙트의 코드는 솔리디티로 작성한다. 작성된 코드를 컴파일시키면, 바이트코드 형태가 된다. (솔리디티 -> 고급언어 | 바이트코드 -> EVM이 이해 가능한 기계어)

이를 이더리움 가상 머신 (EVM)은 OPCODE단위로 해석하여 실행시키게 된다.

사실 컴퓨터 구조와 같다. C, JAVA등으로 작성된 고급언어를 컴파일하여 CPU가 해석할 수 있는 기계어 형태로 컴파일해주면, CPU는 그걸 해석하여 연산처리한다.

그 구조를 그대로 따와서 EVM은 사용하고 있다.

이더리움 공식 사이트에서 채택하고 있는 EVM 다이어그램이다.

https://ethereum.org/en/developers/docs/evm/

 

Home | ethereum.org

Ethereum is a global, decentralized platform for money and new kinds of applications. On Ethereum, you can write code that controls money, and build applications accessible anywhere in the world.

ethereum.org

 

 

댓글
최근에 올라온 글
최근에 달린 댓글
250x250