BlockChain/Ethereum

Ethereum - EVM(Ethereum Virtual Machine)와 가스(Gas)

char1ey 2023. 5. 27. 02:05
목차
1. EVM(Ethereum Virtual Machine)
2. EVM의 의의
3. 가스(Gas)
4. 가스를 사용하는 이유

 

1. EVM(Ethereum Virtual Machine)

 

이더리움 블록체인에서 실행되는 가상 머신이다.

 

EVM은 스마트 컨트랙트 코드를 실행하고 그 결과를 블록체인에 기록하는 역할을 한다.

 

EVM은 계약 실행에 필요한 가스라는 단위로 수수료를 지불받고,

 

스마트 컨트랙트의 실행에 필요한 계산 작업을 처리하기 위해 가스를 소비한다.

 

EVM은 스마트 컨트랙트의 실행을 안전하고 일관되게 처리한다.

 

각각의 노드는 하나하나 다 EVM 환경이다.

 

EVM

 

 

2. EVM의 의의

 

 

스마트 컨트랙트 실행

EVM은 스마트 컨트랙트 코드를 실행한다.
EVM에서는 스마트 컨트랙트를 실행하고 결과를 블록체인에 기록한다.
따라서  EVM을 사용하면 스마트 컨트랙트를 신뢰성 있게 실행하고 상태를 추적할 수 있다.

 

분산 앱 개발

EVM은 분산 앱(DApp) 개발을 지원한다.
EVM을 사용하여 스마트 컨트랙트를 실행하면, 분산 앱을 구축하고
네트워크와 상호작용 할 수 있다.

 

환경의 표준화

EVM은 가상 머신 표준으로서 다양한 환경에서 작업한 코드를 동일한 환경에서 스마트 계약을 작성하고 실행할 수 있다. 이더리움 생태계의 개방성과 상호 연동성을 높여준다.

 

보안

EVM은 스마트 컨트랙트 코드를 격리된 환경에서 처리하여 보안성을 제공한다.
각 스마트 컨트랙트는 독립된 가상 머신에서 실행되므로, 다른 계약에 영향을 주지 않고 실행된다.

이 방식으로 악의적인 코드의 영향을 최소화하고 사용자의 자산을 안전하게 보호할 수 있는 보안 기능을 제공한다.

 

개발자 생태계 지원

EVM을 기반으로 한 개발 도구, 프레임워크, 테스팅 및 디버깅 도구 등이 존재하며,
이 것들을 활용하여 효율적으로 스마트 계약을 작성하고 테스트하기가 수월하다.

 

 

3. 가스(Gas)

 

가스는 이더리움 블록체인에서 스마트 컨트랙트 코드 및 트랙잭션 처리를 위한 수수료 단위이다.

 

이더리움은 가스를 사용하여 컨트랙트 실행에 필요한 컴퓨팅 작업을 지불하고,

 

네트워크 리소스를 공정하게 분배하는 메커니즘을 가지고 있다.

 

사용자는 트랜잭션을 발송할 때 가스 가격과 소비량을 적절하게 설정하여 적정 수수료를 지불하게 되어있다.

 

 

4. 가스를 사용하는 이유

 

 

가스는 이더리움 네트워크에서 중요한 역할을 수행한다.

 

스마트 컨트랙트의 실행과 트랜잭션 처리를 원활하게 진행하기 위한 핵심 매커니즘이다.

 

바로 아래의 역할을 수행하기 때문이다.

 

가스 비용 책정

 

가스는 아래의 방식으로 책정된다. 가스의 양은 컨트랙트 코드의 복장성, 수행시간에 따라 책정된다.

Gas(가스) X GasPrice(가스가격)

 

 

비용 지불

스마트 컨트랙트 혹은 트랜잭션 처리에는 컴퓨팅 리소스가 필요한데, 가스를 사용해서 해당 계산 작업의 비용을 지불한다.

각 작업들은 가스 소비량을 가지며, 계산의 복잡성과 작업 수행의 시간에 따라 가스 비용이 결정된다.
가스 비용은 가스 가격과 곱해서 최종적인 트랜잭션 수수료로 지불된다.

 

네트워크 리소스 관리

가스는 이더리움 네트워크의 리소스를 공정하게 분배하기 위해 사용된다. 네트워크는 수많은 트랜잭션과 스마트 컨트랙트의 실행을 처리해야하기 때문에 가스를 사용해 우선순위 리소스의 할당을 조절한다.
높은 가스 비용을 제시한 트랜잭션은 우선 처리되며, 네트워크 사용량이 높을 때는 가스 가격이 상승할 수 있다.

 

악성코드 방지

가스는 스팸이나 악성코드를 방지하는 역할을 한다.

가스 비용을 지불하지 않는 트랜잭션은 처리되지 않고, 가스 비용을 지불해야 네크워크 리소스를 사용할 수 있다.
이를 통해서 과도하게 리소스를 사용하거나 부정하게 사용하는 것을 방지한다.

예를 들어 무한 루프가 도는 코드가 있을때 가스를 상한선 까지 책정되어 실행되지 않도록 할 수 있다.