이더리움 백서 톺아보기 - 1편
이더리움 백서는 많은 분량을 할애하면서까지 이더리움 탄생 이전의 디지털자산 역사에 대해 소개하고 있습니다. 이더리움 백서에는 비트코인의 역사, 개념 등을 소개하고 있는 내용이 많습니다. 오늘은 '이더리움 이전의 디지털자산 역사'에 대해 살펴보도록 하겠습니다.
상태변환시스템으로서의 비트코인
기술적인 관점에서 보았을 때, 비트코인과 같은 디지털자산의 장부는 하나의 상태변환시스템(state transition system)으로 생각해 볼 수 있다. 이 시스템은 현재 모든 비트코인의 소유권 현황으로 이루어진 하나의 “상태(state)”와 이 현재 상태와 트랜잭션을 받아서 그 결과로써 새로운 상태를 출력해 주는 “상태변환함수(state transition function)”로 구성되어 있다.
- 이더리움 백서 중 -
이더리움 백서에서는 비트코인을 하나의 상태변환시스템으로 소개하고 있습니다. 여기서 말하는 상태변환시스템이란 무엇일까요? 프로그래밍 언어에서 함수는 어떤 기능을 수행하게 해주는 요소입니다. 조금 쉽게 이해하기 위해 음료수 자판기를 떠올려 봅시다.
음료수 자판기에 음료수가 진열되어 있고, 음료수를 선택할 수 있는 버튼이 있습니다. 내가 돈을 넣어 먹고 싶은 음료수의 버튼을 누르면 음료수가 자판기 출구로 나옵니다. 프로그래밍 언어에서 함수가 바로 이 자판기와 같은 역할을 하는 것입니다. 즉, 미리 정의된 어떤 기능들로 인해 사람이 조작하지 않아도 자동으로 조작되는 것입니다.
비트코인에서 "상태(state)"는 생성되었지만 아직 사용되지 않은 모든 코인들의 집합(기술적표현으로는 ‘소비되지 않은 트랜잭션출력’, UTXO(Unspent Transaction Outputs))이다. 각 UTXO 들에는 각자의 코인금액이 표시되어 있고, 이 UTXO 의 소유자(20 byte의 주소로 정의되는 암호화된 공개키(public key))정보가 들어 있다. 트랜잭션은 하나 이상의 입력(inputs) 및 출력을 포함한다.
각 입력에는 보내는 쪽 지갑주소에서 선택된 기존 UTXO에 대한 참조정보와 해당 지갑 주소에 대응되는 개인키(private key)가 생성한 암호화된 서명을 담고 있다. 그리고 각 출력들은 상태에 추가될 새로운 UTXO 정보를 가지고 있다.
- 이더리움 백서 중 -
비트코인의 상태(State)와 상태변환함수(State transition function)도 자판기와 유사하다고 할 수 있습니다. 자판기에 돈을 넣고 선택 버튼을 누르면 음료수가 나오는 것을 자동으로 프로그래밍한 상태변환함수라고 이해할 수 있습니다. 자판기 안에 있는 음료수의 수량, 정보들은 상태(state)라고 이해하면 되겠죠? 물론 정확한 의미는 아니지만, 쉽게 이해하기 위해 이 정도의 개념으로 상태와 상태변환함수를 이해하시면 좋을 것 같습니다.
위 그림은 비트코인을 이해하는 데 중요한 핵심 설명입니다. 상태변환함수는 비트코인의 기능이고 상태는 우리가 흔히 알고 있는 비트코인 장부에 기록된 내용입니다. 즉, 거래 내용과 거래 후 잔고들의 내역이 비트코인의 상태(state)입니다. 이 비트코인 상태는 아직 사용되지 않은 트랜잭션 출력이라는 의미를 가진 UTXO라고 표현합니다.
예를 들어 나의 비트코인 개인지갑에 1 BTC가 있다면, 비트코인 장부에는 나의 잔고 1 BTC 이렇게 기록되어 있지 않고, 현재까지 내가 거래한 비트코인들의 내역을 추적해서 아직 사용하지 않은 비트코인으로 기록되어 있습니다.
1 BTC가 비트코인 개인지갑 잔고에 있다면, 실제는 UTXO 0.1, 0.2, 0.3, 0.5 이렇게 총 5개의 미사용 비트코인이 비트코인 거래 원장에 기록되어 있는 것입니다. 지갑은 이렇게 사용되지 않은 비트코인의 잔고를 합쳐서 간략하게 보여주는 소프트웨어입니다. 이것이 바로 비트코인과 이더리움의 차이를 이해하는 핵심적인 역할을 한다고 할 수 있습니다.