본문 바로가기

공부하는 삶/암호화폐 101

이더리움 논문 리뷰 01 Bitcoin As A State Transition System

비트코인 논문 리뷰에 이어 이더리움 오리지널 논문을 읽어보며 필수 개념을 이해하는 시간을 가지고자 합니다. 논문이 상당히 길기 때문에 여러 포스트로 나누어서 리뷰해보도록 하겠습니다. 논문을 단순히 번역하는 포스트는 아니며, 개인적으로 중요하다고 생각하는 부분들을 중점적으로 재해석해서 기록함을 알려드립니다.

 

참고:
이더리움 오리지널 논문

이전 글:
비트코인 논문 리뷰

다음 글: 
이더리움 논문 리뷰 02 채굴 (마이닝, Mining)

 

 

목차

논문 구성
요약 | Abstract
상태 트랜지션 시스템으로서의 비트코인 | Bitcoin As A State Transition System

 

 

논문 구성

 

A Next-Generation Smart Contract and Decentralized Application Platform

 

Introduction to Bitcoin and Existing Concepts

Ethereum

Applications

Miscellanea And Concerns

Conclusion

 

 

요약 | Abstract

 

비트코인 논문에서 사토시는 블록체인이라는 구조를 새롭게 제시하며 디지털 자산이 탈중앙화된 방법으로 관리되고 결제나 거래에 이용될 수 있다고 말합니다. 그러한 점에서, 블록체인의 개념은 주로 전자 화폐의 결제 및 거래 시스템에 초점이 맞춰져서 논의되었습니다.

 

하지만 블록체인 기술 자체는 비트코인 뿐만 아니라 더 다양한 분야에서 이용될 수 있습니다. 이더리움의 목표는 Turing-complete한 프로그래밍 언어와 결합된 블록체인을 제공하는 것입니다. 이 프로그래밍 언어는 "contracts"를 만드는데 사용될 수 있습니다. Contracts를 이용하면 비트코인과 같은 탈중앙화 된 분산 시스템의 속성을 가지는 임의의 시스템을 만들어낼 수 있습니다.



상태 트랜지션 시스템으로서의 비트코인 | Bitcoin As A State Transition System

 

State Transition System의 한글 번역을 어떻게 해야 하는지 잘 모르겠어서 그냥 영문 그대로 표기하겠습니다. 컴퓨터 자료구조, 오토마타 등을 배울 때 주로 많이 사용한 용어인데 state는 어떤 변수가 있으면 그 변수가 어떤 값을 가지고 있는 상태 정도로 생각하면 됩니다. 변수의 값들이 어떤 외부 인풋으로 인해 계속 변하게 될텐데 그러한 변화 과정을 트랜지션 (transition)으로 생각할 수 있을 것 같네요. 일종의 규칙에 따라 변수들의 값들이 다양한 인풋들에 의해 변화하게 될텐데, 이러한 규칙들을 모두 포함한 개념을 하나의 State Transition System으로 생각하면 될 것 같습니다.

 

이더리움 논문은 바로 비트코인의 거래 과정을 하나의 State Transition System으로 보는 것에서 시작합니다. 여기서 "State"는 아직 사용되지 않은 모든 존재하는 코인들로 생각하며, 코인들을 주고받는 거래 내역들을 "transition"으로 생각할 수 있습니다.

 

예를 들어, 모든 코인을 A, B, C, D라는 네 사람이 10 BTC 씩 보유하고 있는 간단한 상황을 가정해보겠습니다. 이를 State S로 정의합니다. S인 상태에서 어떤 거래 TX가 발생합니다. 그러면 State는 S에서 S'로 바뀌게 됩니다. S'를 보면 각 사용자의 코인 보유량이 TX에 따라 변화되어 있음을 확인할 수 있습니다.

 

그림1: State Transition System의 간단한 예시.

 

APPLY(S, TX) -> S' or ERROR

 

논문에 위와 같은 식이 표기되어 있습니다. 위의 그림1을 보면 이해하기 쉽습니다. 거래 TX가 발생했을 때 State가 S에서 S'로 바뀌는 과정이 APPLY라는 함수(state transition function)가 됩니다. 만약에 B가 받은 금액이 A가 보낸 금액보다 적은 경우에는 ERROR가 발생하게 됩니다.

 

논문에서 UTXO라는 용어가 나오는데, Unspent Transaction Outputs의 약자입니다. 즉, UTXO는 채굴되었지만 아직 사용되지 않은 모든 코인을 뜻합니다. 각 UTXO에는 소유자와 가격이 기록됩니다. 앞서 말한 "state"를 UTXO의 모음으로 생각하면 됩니다. 각 UTXO에는 식별할 수 있는 고유 주소가 부여됩니다. 위 그림1의 경우를 UTXO의 개념으로 다시 표현하면 그림2와 같습니다. 거래 TX도 일종의 UTXO의 변화가 기록된 것으로 생각할 수 있습니다. 

 

그림 2: UTXO를 이용해서 표현된 state transition system

 

 

APPLY 함수를 pseudo-code의 형태로 더 구체적으로 정리해보면 다음과 같습니다. 프로그래밍을 하는 분이라면 아마 아래 코드를 보시면 단번에 이해가 되실 겁니다.

 

function APPLY(S, TX):
    // 거래 TX가 유효한 거래인지 확인
    if not is_valid(TX): raise ERROR

    // 새로운 state S'를 정의
    S' = delete(S, TX.inputs)
    S' = insert(S', TX.outputs)

    // UTXO 금액 합계로 sanity check
    if sum_of_utxos(S) < sum_of_utxos(S'): raise ERROR

    return S'

 

function is_valid(TX):
    for utxo in TX.inputs:
        if utxo not in S: raise ERROR
        if not is_matched(utxo.owner, TX.signature): raise ERROR

 

function sum_of_utxos(S):
    sum = 0
    for utxo in S.utxos:
        sum += utxo.amount
    return sum

 

is_matched의 utxo.owner는 utxo의 소유자를 나타내며, TX.signature는 거래 TX의 디지털 서명을 뜻합니다. 즉, is_matched는 utxo의 소유자와 TX의 디지털 서명이 같은 사람의 것인지를 확인하는 함수입니다.

 


반응형