MSTR Cat

블록체인/레벨 VII · 진화/7.1 이더리움: 세계 컴퓨터/수업 2

계정 및 글로벌 상태

개별 코인에서 단일하고 변경 가능한 전역 상태로

준비물이더리움 옐로우 페이퍼(G. 우드)비탈릭 부테린의 이더리움 백서(2013/2014)Etherscan이나 다른 이더리움 블록 탐색기 접속

호기심

  1. 사용되지 않은 출력물들의 집합으로서 부를 추적하는 것이 범용 프로그램을 작성하기 어렵게 만드는 이유는 무엇인가요?
  2. 모든 트랜잭션이 네트워크의 전체 저장 공간을 읽고 쓸 수 있도록 하면 어떤 기계적 결과가 발생하나요?
  3. 계정 기반 모델은 UTXO 집합에 비해 이력을 확인하는 데 드는 비용을 어떻게 변화시키나요?

탐구

  1. 비트코인은 사용되지 않은 거래 출력값, 즉 UTXO를 통해 가치가 결정됩니다. 각 거래는 특정 입력값을 소모하고 새로운 출력값을 생성하며, 검증 과정에서는 오직 사용되는 코인만 확인됩니다(2.2.1절 참조). 이 모델은 로컬적이고 분리된 형태를 띱니다. 2015년 7월 비탈릭 부테린과 개빈 우드를 포함한 공동 창립자들에 의해 출시된 이더리움은 계정 기반의 상태 머신을 채택합니다. 각 주소는 그 자리에서 업데이트되는 잔액을 가지며, 네트워크의 전체 역사는 모든 계정의 현재 잔액과 배포된 모든 계약의 저장 공간으로 구성된 단일 글로벌 상태 객체로 압축됩니다.
  2. 이 모델에는 두 가지 계정 유형이 존재합니다. 개인 키에 의해 제어되는 외부 소유 계정(EOA)과 코드에 의해 제어되는 컨트랙트 계정입니다. EOA가 거래를 시작하고, 컨트랙트는 호출될 때만 로직을 실행합니다. 상태 전이 함수는 현재의 전역 상태와 거래 정보를 받아 새로운 전역 상태를 생성합니다. 모든 노드가 동일한 시작점에서 결정론적으로 이러한 전이를 계산하기 때문에 신뢰 없이도 합의가 이루어집니다. 또한 어떤 계정이든 자신의 저장 공간에 임의의 데이터를 보관할 수 있기 때문에 범용 컴퓨팅이 가능해집니다.
  3. 계정 모델의 표현력 덕분에 탈중앙화 거래소나 대출 프로토콜과 같은 복잡한 애플리케이션들이 가능해집니다. 컨트랙트는 수십억 달러 상당의 가치를 보유할 수 있으며, 전 세계적인 상황에 따라 복잡한 로직을 실행할 수도 있습니다. 하지만 이러한 강력함은 취약성도 동반합니다. 상태가 변경 가능하고 공유되기 때문에, 한 컨트랙트의 코드에 있는 단 한 개의 버그만으로도 그 컨트랙트의 전체 잔액이 소진되거나 연결된 다른 컨트랙트들이 손상될 수 있습니다. 2016년 6월에 발생한 The DAO 해킹 사건에서 악용된 리-엔트리 취약점은 국지적인 결함이 전체 시스템 상태에 어떤 영향을 미칠 수 있는지를 보여주었으며, 이로 인해 커뮤니티 주도의 포크가 일어나기도 했습니다.
  4. 상태의 증가는 이러한 설계에서 불가피하게 발생하는 결과입니다. 비트코인의 UTXO 집합도 증가하지만, 각 항목의 크기는 작으며 사용될 때 삭제됩니다. 이더리움의 컨트랙트 저장 공간은 점점 늘어납니다. 모든 `SSTORE` 작업은 명시적으로 값이 0으로 설정되지 않는 한 영구히 남아 있는 데이터를 추가하는데, 이 경우에도 가스 비용이 발생합니다. 이러한 무제한적인 증가로 인해 풀 노드를 운영할 때 디스크 공간과 메모리 사용량이 점점 더 많아집니다. 노드는 거래를 검증하기 위해 전체 글로벌 상태를 유지해야 하므로, 계산 능력과 검증 비용 사이에 타협점을 찾아야 합니다.
  5. 이더리움 옐로우 페이퍼는 이를 결정론적 상태 전이 함수로 명시합니다. EVM은 스택 기반의 머신에서 명령들을 처리하며, `ADD`나 `SLOAD`와 같은 연산들은 로컬 실행 컨텍스트를 변경하는 동시에 전역 계정 저장소도 업데이트할 수 있습니다. 이러한 아키텍처는 튜링 완전성을 보장하지만, 프로그램이 정상적으로 종료되도록 하기 위해서는 가스가 필요합니다. 모든 연산은 가스를 소비하므로 무한 루프를 방지하고, 블록의 가스 한도에 비해 개별 트랜잭션의 계산 비용을 제한할 수 있습니다.
  6. Etherscan과 같은 블록 탐색기를 열고 최근의 계약 상호작용을 살펴보세요. 계약 페이지의 ‘Storage’ 탭을 보면, 해당 계정의 영구적인 상태를 구성하는 키-값 쌍들이 나열되어 있습니다. 해당 주소와 관련된 각 거래가 실행될 때마다 이 값들이 어떻게 변화하는지 주목해 보세요. 이러한 정보를 통해 글로벌 상태의 실제 모습을 알 수 있습니다. 즉, 코드는 단순히 실행되는 것이 아니라 저장되며, 그 데이터는 거래를 거듭할수록 지속적으로 유지되면서 시간이 지남에 따라 점점 늘어나게 됩니다.

핵심 사실

  • 이더리움은 비트코인의 UTXO 시스템과는 달리, 잔액이 그 자리에서 업데이트되는 계정 기반 모델을 사용합니다.
  • 글로벌 스테이트에는 모든 계정 잔액과 계약 저장 정보가 포함되어 있으며, 모든 트랜잭션은 이를 읽거나 쓸 수 있습니다.
  • 계약 계정은 코드에 의해 제어되며, 외부 소유 계정은 개인 키에 의해 제어됩니다.
  • 계약 스토리지가 영구히 유지되면서 노드의 하드웨어 요구 사항이 증가하기 때문에 시스템 성장은 제한이 없습니다.
  • 스마트 컨트랙트의 단 한 개의 버그라도 글로벌 스테이트의 변경 가능한 특성 때문에 그 내의 모든 잔액을 소진시킬 수 있습니다.
  • EVM은 모든 노드에서 결정론적으로 실행되어 동일한 상태 전이를 통해 합의를 보장합니다.

연습 아홉, 여섯, 셋, 하나

9모으기데이터 구조, 검증 범위, 저장 공간 증가 측면에서 비트코인의 UTXO 모델과 이더리움의 계정 기반 상태 머신 간의 9가지 구체적인 차이점을 나열하십시오.
6묶기이 9개 항목을 데이터 지속성, 계산 복잡도, 보안 문제, 노드 리소스 소비량, 합의 메커니즘, 개발자 경험의 6가지 범주로 분류하십시오.
3추리기상태 크기 증가라는 대가를 치르면서도 계정 모델이 범용 컴퓨팅을 가능하게 하는 6개의 요인들을 3가지 핵심 원인으로 줄입니다.
1결정화변경 가능한 글로벌 상태 덕분에 UTXO 시스템에서는 어려운 복잡한 계약 간 상호작용이 가능해집니다.

팩트 체크

날짜, 수치 및 주장은 아래에 명시된 출처들을 통해 확인되었습니다.

인터랙티브 아카데미에서 열기 →

EN PT ES ZH JA RU DE FR MS