관리 메뉴

A seeker after truth

이더리움과 솔리디티 입문(3) - EVM 본문

Blockchain

이더리움과 솔리디티 입문(3) - EVM

dr.meteor 2019. 10. 10. 23:57

*본문은 경희대 블록체인 학회원으로서 상반기 동안 블록체인 기초 교육을 이수한 뒤 2019년 7월 경 <이더리움과 솔리디티 입문>(위키북스,2018) 을 읽으며 문서에 메모한 내용을 옮겨온 것입니다.

*소웨 = 소프트웨어, 하웨 = 하드웨어, 플밍 = 프로그래밍, 데베 = 데이터베이스, 컴터 = 컴퓨터, 컴과 = 컴퓨터 과학, 알고 = 알고리즘, 컴네 = 컴퓨터 네트워크 의 줄임말입니다.

 

 

단일 글로벌 256비트짜리 컴퓨터이다. 오늘날 금융 서비스 ITEVM을 비교해보면 이게 얼마나 단순성과 효율성의 모범인지 알 수 있음!

동기화 작업 자체가 네트워크를 보호하는 일을 한다.

 

1)    기존 중앙 은행 네트워크

오늘날 기업 보험회사 대학 기타 대형 기관은 직업 및 모든 사업 부서에 소웨 서비스 및 IT를 구축하고 유지보수하는 데 많은 돈을 투자한다. 다양한 자금의 유입/출을 중재하는 곳은 보통 대형 상업 은행으로 고유 아키텍처, 정책, 코드베이스, 데베, 인프라 계층을 갖추고 있다. 이런 은행 시스템 기저에는 연방 준비은행(real time gross settlement system. RTGS)=미국 중앙은행인 페드와이어가 있다. 페드와이어는 모든 연방 준비은행 회원 은행이 최종 지불 금액을 전자 미국 달러로 결제하는 데 사용된다. 공인된 주 정부 공인 은행은 주식을 사는 방법으로 이 시스템의 회원이 될 수 있다. 페드와이어는 12개 연방 준비은행이 자체 소유하고 운영하며, 수수료를 부과하긴 하지만 이익을 위해 운영되진 않는다.

이 시스템은 매일 엄청난 금액의 미국 달러를 매일 처리한다. 시스템 안정성은 매우 뛰어남. 100년째 유지되고 있을 정도.

당연히 이 소웨의 보안 및 안정성을 유지하는 데는 극도로 높은 비용이 투입된다. 그리고 보안 요구 사항 때문에 RTGS 상단에 레이어를 만들고 유지하는데 드는 비용 역시 높다. 궁극적으로 이러한 비용 부담은 수수료의 형태로 시중 은행을 이용하는 기업에 전가된다. 이런 회사는 자체 IT 인프라 비용으로 이런 비용을 할당한다. 이 비용은 소비자가 치르게 되는 가격 및 수수료를 상승시킨다.

페드와이어는 은행을 위한 플랫폼이고, 각 은행이 페드와이어의 맨 위(고객 경험, 온라인 뱅킹 도구, 오프라인 연동, 금융 상품, 교차 판매)에 레이어를 어떻게 구축하였는가가 은행이 가질 수 있는 차별점이다.

 

2)    상태에 대한 데이터의 역할

 컴퓨터의 메모리에서 데이터를 변경할 때마다 내부에 있는 무수히 많은 스위치(여기서는 다 가상화 되어 있)가 조금씩 구성을 바꾸게 된다. 상태는 일반적으로 시스템의 현재 상태를 의미한다. 컴퓨터의 수많은 메모리 주소에서 일어나는 일련의 정보 변화가 현재 메모리 내용으로 이어지게 된다.

 

상태와 속성을 잘 구분해야만 한다. 상태는 쉽게, 예측 가능한 방식으로 바뀔 수 있다. 자동차의 색상이 자주 바뀌도록 컴퓨터에 지시한다고 가정해 보자. 이는 자동차의 색상을 변수로 만드는 것에 다름 아니다. 변수는 상태를 가질 수 있으며, 이 상태가 곧 값이고 변경될 수 있다.

 

3)     EVM 내부 작동 원리

 EVM은 반복문을 계속 실행해 현재 프로그램 카운터에 있는 모든 명령을 실행하려고 시도한다. 프로그램 카운터는 큐! 이 반복문에는 몇 가지 작업이 포함된다. 우선 각 명령에 대한 가스 비용을 계산하며, preamble 계산에 문제가 없으면, 필요한 경우 메모리를 사용해 트랜잭션을 실행한다. 이 반복문은 VM이 대기 중인 모든 코드를 실행하거나 예외 또는 오류를 던져서 해당 트랜잭션이 롤백될 때까지 반복한다.

 

기억 장치가 있는 기계, 즉 상태 기계는 절대로 잠들지 않는다. EVM 역시 상태 기계이기에, EVM은 메모리 뱅크 내에 모든 트랜잭션에 대한 고정된 이력을 보관하고 모든 트랜잭션을 최초의 트랜잭션으로 추적할 수 있다.

 

4)    블록 주기 문제점

길 경우: 비트는 트랜잭션 시간이 긴데, 이러면 상거래 및 기타 실용적인 응용을 어렵게 만든다.

짧을 경우: 트랜잭션이 더 빨리 이뤄져 사용자 경험은 향상된다. 하지만 주어진 노드가 트랜잭션 순서를 잘못 잡을 가능성이 커진다. 멀리 떨어진 위치에서 생성된 트랜잭션을 수신하지 못하거나 늦게 수신할 수 있기 때문이다.

 

엉클 블록 = 유효함에도 불구하고 승자 블록으로 인정되지 못하는 블록을 찾아낸 채굴자도 낮은 수준의 보상을 받을 수 있다.

 

5)    상태 전이 함수에서 채굴의 위치

채굴 = 채굴자가 계산적인 방법을 사용해 채굴자 입장에서 가장 최근의 트랜잭션 이력인 블록을 체인 입장에서 최신 블록으로 만드는 작업.

채굴 보상은 상태 전이 함수의 일부.

채굴은 유효한 상태 변경을 위해 필요한 합의를 달성하고, 채굴자는 합의를 이뤄내는 과정에 대한 비용을 받게 된다. 그리고 이는 이더와 비트가 생성되는 방식이기도 하다.

 

6)    EVM 상의 시간 대여

(1)   비용은 네트워크의 계산 시간이 적절하게 책정되도록 보장한다. 트랜잭션의 크기 기준으로 수수료를 책정하는 비트와는 다른 체계이다. EVM의 수수료는 거래 규모가 아닌 일의 양을 기준으로 한다. 일은 말 그대로 전기의 그 일이고. 이더 대신 가스를 쓰는 이유는, 연산 작업에 가스라는 단위를 따로 만들어 계산량에 대한 가격을 분리하기 위한 수단이다. 이더는 암호화폐 상에서 공개적으로 거래되기 때문에 투기적 인플레이션과 디플레이션을 겪게 되기 때문이다.

(2)   비트, 이더 같은 네트워크는 경제적 인센티브와 불이익을 사용해 특정 공격 경로를 약화시킨다. 수수료는 불이익의 범주에 속한다.

이더리움 노드의 동작에는 위험성이 포함되어 있음을 인식하는 것이 중요하다. 하웨 비용, 운영자의 시간과 에너지, 블록 헤더를 다운로드하고 작업 증명을 확인하는 데 드는 네트워크 비용 등이 소모된다. 따라서 악의를 지닌 누군가가 네트워크 용량을 낭비하지 않도록 거래 수수료를 부과하는 것이 합리적인 방안이다.

 

7)    EVM의 연산 코드

EVM 작업 중 일부는 메소드로 호출할 수 있다. 블록체인 패러다임이 어려운 이유 중 하나는 컴퓨터 과학 네트워킹의 여러 영역에서 제공되는 기술 용어가 결합되어 있다는 점이다. 그 중 한 예가 이더/비트의 연산 코드(opcode)이다. 이더리움 네트워크는 http 웹에 연결되어 있지 않기 때문에 http 메소드를 사용하지 않는다. 대신 같은 로컬 호스트 내에서 메시지를 전달하기 위해 전통적으로 사용되는 명령 코드를 사용한다. 이것이 하나의 글로벌 시스템과 같은 수식어가 의미하는 바이기도 하다. 비트코인도 유사하게 작동한다.

 전통적인 웹 개발에서 연산 코드에 대응되는 것은 http 메소드로 잘 알려진 http 어휘, get post head options put delete trace connect가 포함된다. 이런 문법 체계는 신뢰성이 높고 잘 알려져 있다.

이더리움 및 비트코인에서는 상황이 다르다. 네트워크가 글로벌 시스템이기 때문에 네트워크를 통한 호출에 쓰이는 메소드는 개별 컴퓨터 내부에서 사용되는 종류의 기계어 코드일 뿐이다.

 

EVM에서 프로그램을 실행한다는 것은 스마트 계약의 작성, 배포, 분산 어플리케이션의 실행이다. 스마트 계약을 구성하는 명령은 EVM 바이트코드에 저장된다. 그러나 바이트코드로 컴파일되기 전에 이를 솔리디티로 작성하는 것.