안녕하세요, 모두의 연구소 블록체인 연구실입니다.
10월 12일 3회차 스터디에서 진행한 Introducing Ethereum and Solidity의 3장 요약본입니다.
3장 EVM(이더리움 가상 머신)
EVM
- EVM: 네트워크의 각 노드에서 로컬인 모든 트랜잭션이 상대적으로 동기화되어 실행되는 단일 글로벌 256비트 ‘컴퓨터’
- 노드 또는 지갑 응용프로그램을 가지고 있는 사람이면 누구나 쉽게 액세스하고, 많은 가치(돈)를 거의 즉시 이동시킬 수 있음.
- 누구나 사용할 수 있지만, 아무도 그 안에서 가짜 돈을 만들거나 무단으로 자금을 이동할 수 없음.
- 동일한 트랜잭션을 복제하고 수천 대의 개별 컴퓨터 상에서 동일한 상태를 유지: 낭비 아닌가? 그럼 기존의 모델과 비교해 보자.
기존 중앙은행 네트워크
- 다양한 자금의 유입과 유출을 중재하는 곳은 보통 대형 상업 은행으로, 고유의 아키텍처, 정책, 코드베이스, 데이터베이스 및 인프라 계층을 갖추고 있음
- 은행 시스템의 기저에는 연방 준비은행(Federal Reserve)의 실시간 총체 정산 시스템(RTGS) 인 페드와이어(Fedwire)가 있음
- 페드와이어는 모든 연방 준비은행 회원 은행이 최종 지불 금액을 전자 미국 달러로 결제하는 데 사용. 공인된 주 정부 공인 은행은 주식을 사는 방법으로 이 시스템의 회원이 될 수 있음. 페드와이어는 12개 연방 준비은행이 자체 소유하고 운영. 수수료 부과. 매일 수 조 달러 처리하며 100년간 운영.
- 페드와이어 보안/안정성 운영에 엄청난 비용 소요. 결국 소비자에 부담.
가상 머신
- 일반적으로 다른 컴퓨터 시스템에 의해 에뮬레이션된 컴퓨터 시스템을 말함. 이러한 에뮬레이션은 대개 에뮬레이션 대상의 기반 하드웨어와 다른 하드웨어에서 해당 아키텍처를 재현하는 용도
- 가상 머신은 하드웨어, 소프트웨어 또는 둘 다를 사용하여 만들 수 있으며, 이더리움 가상 머신의 경우 두 가지를 모두 사용
- EVM은 수십 가지 버전의 컴퓨터에서 실행되는 총체적 에뮬레이션으로서 윈도우, 리눅스, 맥OS , ethOS 등 여러 버전이 있음
은행 vs 이더리움 프로토콜
- 페드와이어 시스템은 주 정부의 은행 및 운영자를 위한 사용자 경험을 담은 맞춤형 결제 시스템. 다시 말하면, 이 시스템은 소매 은행의 최종 사용자는 거의 신경쓰지 않음
- 소프트웨어 관점에서 페드와이어는 ‘은행을 위한 플랫폼’으로 인식
- 이더리움 상에서는 누구나 페드와이어보다 좋거나, 더 나은 보안과 안정성을 갖춘 네트워크를 구축하고 거의 즉시 가치를 전송할 수 있음
- 이더리움이 페드와이어와 같은 시스템의 속도와 크기에 맞춰 확장되는 것이 가능할까? 가능. 블록 크기와 트랜잭션 속도가 유동적.
EVM의 역할
- EVM: 일반화된, 안전한, 소유자가 없는 페드와이어 시스템?
- EVM은 솔리디티 언어로 작성된 임의의 컴퓨터 프로그램(1장에서 언급한 스마트 계약)을 실행. 이러한 프로그램은 특정 입력이 주어지면 상태 변경과 함께 출력을 생성
- 솔리디티 프로그램은 튜링 완전성을 지님.
- 관련 정보: Homestead Documentation Initiative(www.ethdocs.org/en/latest)
- EIP(이더리움 개선 제안, Ethereum Improvement Proposals): https://github.com/ethereum/wiki/wiki
- EVM은 공유 상태(shared state)를 담은 트랜잭션 싱글톤 머신(transaction singleton machine) : 하나의 거대한 데이터 객체
스마트 계약이 곧 EVM 애플리케이션
- 스마트 계약이 ‘스마트’한 이유: 실행과 자산(이더 또는 기타 토큰) 이동이 시스템에 의해 자동으로 실행. 수백 년이 지나도 실행.
- EVM은 완전한 샌드백스이며 간섭으로부터 자유로움
- EVM 바이트코드: EVM에는 스마트 계약을 컴파일한 결과로 그 자체 언어. 고수준 언어인 솔리디티를 컴파일한 결과
PPT는 아래 링크에서 확인하실 수 있습니다.
https://docs.google.com/presentation/d/1RbPXPeFV0LnXbIG1rmed5v4Y9HpOy_xxm60tux0I1WU/edit?usp=sharing
감사합니다.