블록체인/레벨 VI · 비트코인 이후/6.3 Ethereum과 스마트 컨트랙트/수업 1
이더리움 백서와 EVM
가스를 동력으로 하여 모든 노드에서 실행되는 상태 기계
준비물이더리움 백서(2014년) 사본이더리움 옐로우 페이퍼(개빈 우드, 2014)Etherscan 같은 블록 탐색기에 접속할 수 있는 환경
호기심
- 수천 대의 머신에 복제된 컴퓨터는 왜 명령어 하나하나마다 요금을 부과해야 할까요?
- 그 머신들에서 실행되는 코드가 아무런 대가 없이 무한히 반복될 수 있다면 무엇이 망가질까요?
- UTXO와 그 자리에서 갱신되는 잔액이라는 서로 다른 두 계정 모델은 같은 자산을 어떻게 다르게 표현할까요?
탐구
- 당시 19세였던 비탈릭 부테린은 2013년 말 이더리움 백서를 작성해, 특정 화폐가 아닌 범용 컴퓨팅 플랫폼을 제안했습니다. 2014년 1월 공개적으로 발표된 이 프로젝트에는 개빈 우드, 조셉 루빈, 찰스 호스킨슨, 앤서니 디 이오리오, 미하이 알리시에 등이 공동 창립자로 합류했습니다. 2014년 7월부터 8월까지 진행된 크라우드세일로 이 프로젝트는 약 31,500 BTC를 조달했습니다. 네트워크는 2015년 7월 30일 공식 출시되었으며, 이는 비트코인의 제한적인 스크립팅에서 벗어나 개발자가 복잡한 애플리케이션을 온체인에서 직접 구축할 수 있는 완전히 프로그래밍 가능한 환경으로의 전환을 의미했습니다.
- 이 아키텍처의 핵심은 모든 풀노드에 복제되는 튜링 완전한 상태 기계, 이더리움 가상 머신(EVM)입니다. 개별 미사용 출력을 추적하는 비트코인의 UTXO 모델과 달리, 이더리움은 잔액이 그 자리에서 갱신되는 계정 모델을 사용합니다. 개인 키로 제어되든 코드로 제어되든, 각 계정은 논스와 잔액을 유지합니다. 트랜잭션이 실행되면 EVM은 이를 결정론적으로 처리하며, 모든 노드가 각자 동일한 결과를 계산하므로 참여자 간의 신뢰 없이도 합의가 보장됩니다.
- 스마트 컨트랙트는 Solidity 같은 고수준 언어로 작성된 프로그램으로, EVM이 실행하는 저수준 옵코드로 컴파일됩니다. 이러한 컨트랙트는 가치와 로직을 동시에 담고 있습니다. 컨트랙트는 이더를 보유하거나, 조건부 거래를 실행하거나, 다른 계정의 입력에 따라 거버넌스 투표를 관리할 수 있습니다. 실행이 결정론적이고 많은 컨트랙트가 소스 코드를 공개하기 때문에, 누구나 상호작용하기 전에 그 로직을 확인할 수 있습니다. 규칙이 사람의 재량이 아니라 소프트웨어에 의해 집행되므로, 이러한 투명성은 많은 금융 애플리케이션에서 신뢰할 수 있는 중개자의 필요성을 없애 줍니다.
- 무한 루프와 서비스 거부 공격을 막기 위해, 모든 EVM 연산은 이더로 지불되는 연산 단위인 ‘가스’를 소모합니다. 발신자는 사전에 가스 한도를 지정하며, 실행 중 이 연료가 바닥나면 상태 변경은 되돌려지지만 이미 소모된 가스는 그대로 차감됩니다. 이러한 경제적 제약은 개발자가 효율적인 코드를 작성하도록 강제하고, 자칫 체인을 멈춰 세울 수 있는 악의적이거나 버그가 있는 컨트랙트로부터 네트워크를 보호합니다. 가스 가격은 수요에 따라 오르내리는데, 처음에는 사용자가 단순히 가격을 제시해 입찰했고, 2021년부터는 프로토콜이 정하는 기본 수수료가 자동으로 조정되며 그 위에 팁이 더해집니다(이후 강의에서 다룹니다).
- EVM의 설계 선택은 표현력과 보안 사이의 트레이드오프를 반영합니다. 튜링 완전성은 임의의 연산을 가능하게 하지만, 취약점이 숨어들 수 있는 복잡성도 함께 가져옵니다. 계정 모델은 일부 프로그램을 UTXO보다 단순하게 만들어 주지만, 서로를 호출하는 컨트랙트는 The DAO 해킹의 원인이 된 재진입(reentrancy) 같은 버그를 피하도록 신중하게 작성해야 합니다(이후 강의에서 다룹니다). EVM의 표준화 덕분에 이 특정 명령어 집합에 익숙한 도구와 감사 업체로 이루어진 거대한 생태계가 형성되었습니다.
- Etherscan 같은 블록 탐색기를 열고, 스마트 컨트랙트를 배포한 최근 트랜잭션 아무것이나 살펴보세요. ‘Contract Creation’ 상태와 가스 한도 대비 사용된 가스 양을 확인하세요. 트랜잭션의 입력 데이터에 새 주소에 저장될 컴파일된 바이트코드가 담겨 있다는 점도 주목하세요. 이 구체적인 단계를 통해 배포의 실제 작동 방식을 알 수 있습니다. 코드가 업로드되고, 모든 노드가 이를 검증하며, 체인의 상태 기계에 고정되어 이후 상호작용이 일어날 때 실행될 준비를 마칩니다.
핵심 사실
- 비탈릭 부테린은 2013년 말에 이더리움 백서를 작성했으며, 해당 프로젝트는 2014년 1월에 공개되었습니다.
- 2014년 7월-8월에 진행된 크라우드세일을 통해 이더리움 개발 기금으로 약 31,500BTC가 모였습니다.
- 이더리움의 메인넷은 튜링 완전 가상 머신을 도입하며 2015년 7월 30일에 출시되었습니다.
- 무한 루프를 방지하고 작업이 정상적으로 종료되도록 하기 위해 모든 EVM 작업에는 이더로 지불하는 가스가 소모됩니다.
- 이더리움은 비트코인의 UTXO 시스템과는 달리, 잔액을 그 자리에서 업데이트하는 계정 모델을 사용합니다.
- 스마트 컨트랙트는 일반적으로 Solidity로 작성되며, 이는 결정론적인 EVM 바이트코드로 컴파일됩니다.
연습 아홉, 여섯, 셋, 하나
9모으기이더리움 백서에 담긴 기술적 제약이나 설계 결정 가운데 비트코인 프로토콜과 다른 것 9가지를 나열하세요.
6묶기이 9개 항목을 영향을 미치는 영역에 따라 상태 관리, 보안, 실행 비용, 언어 지원, 합의, 거버넌스의 6가지 범주로 묶으세요.
3추리기6개 묶음을 튜링 완전성에 가스 메커니즘이 필요한 3가지 핵심 이유로 압축하세요.
1결정화EVM의 결정론적 특성이 상태 전환에 대한 전역적 합의를 어떻게 보장하는지 한 문장으로 설명하세요.
팩트 체크
날짜, 수치 및 주장은 아래에 명시된 출처들을 통해 확인되었습니다.