본문 바로가기
블록체인 공부/블록체인 개념

[블록체인 개념-4] 이더리움 가상 머신(EVM) - What is Ethereum Virtual Machine (*EVM)

by 으노으뇨 2023. 1. 23.
728x90
반응형
SMALL

이더리움 가상 머신(EVM)을 바로 설명전 기초 개념부터 !

명령이란?

프로세서는 일련의 주어진 명령어를 실행하는 집적 회로이며, 각 프로세서에서는 수행할 수 있는 일련의 명령이 담겨있다.

명령은 연산 코드 (opcode) 와 연산에 사용할 입력 데이터로 구성된다.

x86 명령어 세트는 현재 사용하는 가장 일반적인 명령어 세트이며, 약 1000개의 고유 opcode를 가지고 있다.

이는 프로그램 순서대로, 맹목적으로 실행되는 명령세트이다.

어떤 코드든 컴파일 또는 인터프리트과정을 거치고 나면 일련의 원시 바이트로 회귀되며, 이는 펀치 카드이든 어셈블리로 적성했든 또는 파이썬과 같은 고급 언어로 작성되었든 마찬가지다.

이러한 원시 바이트는 컴퓨터가 아무 생각 없이 순서대로 실행할 수 잇는 일련의 프로세서 명령에 해당한다.

아래는 x86 리눅스 어셈블리로 작성된  Hello World 프로그램 형태를 보여준다.

Section	.text
global	_start	;must be declared for linker (id)
_start		;tell linker entry point

mov	edx,len	;message length
mov	ecs,msg	;message to write
mov	ebx,1	;file descriptor (stdout)
mov	eax,4	;system call number (sys_write)
int	0x80	;call kernel
mov	eax,1	;system call numver (sys_exit)
int	0x80	;call kernel

section	.data

msg	db 'Hello, World!!',0xa	;our dear string
len equ $ - msg	;length of our dear String

가상머신이란?

가상 머신 (Virtual Machine) 또는 VM은 프로세서를 흉내내는 소프트웨어 프로그램이다. 

자체 opcode집합을 가지며 명령 집합에 맞게 특별히 작성된 프로그램을 실행할 수 있다. 

VM 명령에 대응하는 하위 레벨 바이트를 바이트코드(ByteCode)라고 한다.

코드를 실행 가능한 바이트 코드로 컴파일 하는 프로그래밍 언어를 작성할 수 있다.

자바 가상 머신 (JVM : Java Virtual Machine)은 오늘날 가장 많이 사용하는 가상 머신이며,

평소 이를 자주 사용한다. 그리고 JVM은 자바, 스칼라, 그루비, 자이썬을 비록한 여러 언어를 지원한다.

가상 머신은 결국 에물레이션이기 때문에 어느 하드웨어에서 실행하든 상관없다는 이점이 있다.

자바의 "Write Once, Run Anywhere(한번 짜면 어디서나 실행)"이라는 좌우명이 떠오른다.

이더리움 가상머신 (EVM : Ethereum Virtual Machine)

이더리움에는 이더리움 가상머신(EVM : Ethereum Virtual Machine)이라고 하는 자체 VM이 있다.

이더리움은 EVM의 각 연산 코드에 연관된 가스 요금이 있기 때문에 자체 VM이 필요하다.

수수료는 네트워크를 스팸으로 부터 보호하며, EVM이 무허가형 공공자원으로 사용할 수 있도록 하는 역할을 한다.

EVM의 사용자 정의 opcode는 각각 자체 수수료를 가진다. 

즉, 스마트 컨트랙트를 어떻게 설계하느냐에 따라 수수료를 절감할 수 있다.

예를들어 SSTORE 명령은 상태 트리에 데이터를 저장하는데 이는 데이터를 전체 네트워크의 노드에 복제해야 하기 때문에 상당히 값비싼 명령에 속한다.

뭐대충 int128 이나 int 256이나 잘 써야한다... 등등내용입니다.

-> 트랜잭션의 바이트코드에 의해 누적된 가스 요금의 합계가 총 트랜잭션 수수료를 결장한다.

코드를 재사용잘하고, 메모리관리, 함수의 실행시 최적화 등등 잘 적용해서 작성해야 알뜰하게 가스를 소비할수있다..

 
Attention
아티스트
NewJeans
앨범
NewJeans 1st EP 'New Jeans'
발매일
2022.08.01
728x90
반응형
LIST

댓글