본문으로 바로가기

이더리움 상태전이 시스템

category 이더리움/Ethereum Core 2018. 4. 29. 11:40

이더리움은 네트워크 상에서 서로 모르는 신뢰할수 없는 대상들간의 합의과정을 통해 트랜잭션이 처리되도록 구성되어있습니다.

유효성이 체크된 트랜잭션을 통해서 이더리움은 상태전이가 발생하게 되며, 각 사용자 어카운트의 상태가 변하게 됩니다.

먼저 이더리움과 비교하기 위해 비트코인의 상태전이에 대해서 알아보겠습니다.


[비트코인 상태전이 시스템 : 이더리움 White Paper]


위의 그림에서와 같이 비트코인은 비트코인의 특정계좌의 잔액이 트랜잭션에 의해서 잔액이 변화되도록 구성되어 있습니다.

즉, 이전 계좌상태가 트랜잭션에 의해서 다음상태로 변화되는 개념입니다.

따라서 상태변이는 다음과 같이 정의될수 있습니다.


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

  : APPLY - 상태변이함수

  : S, S' - 상태

  : TX - 트랜잭션

  : ERROR - 트랜잭션 실행시 유효성이 위배될경우 에러


이 공식을 실제 은행거래로 예를 들어보면 다음과 같습니다.


APPLY({ Alice: $50, Bob: $50 },"send $20 from Alice to Bob") = { Alice: $30, Bob: $70 }


APPLY({ Alice: $50, Bob: $50 },"send $70 from Alice to Bob") = ERROR 


위의 예와같이 각 사용자의 은행잔고가 이체과정을 통해 잔고변화가 발생하고, 이체과정에서 금액이 맞지않는 경우 에러가 발생합니다.

비트코인의 경우 위의 은행잔고는 UTXO(Unspent Transaction Output)에 해당되고, 이체과정은 Transcation에 해당됩니다.

즉, Transaction의 입력으로, 사용되지않은 UTXO가 사용된후 유효성 체크를 거쳐 새로운 UTXO가 만들어지고, 이전 UTXO는 사라지는 개념입니다.


이더리움의 상태전이는 비트코인과 비교하면 좀더 복잡한 구조를 가지고 있습니다.


[이더리움 상태전이 시스템 : 이더리움 White Paper]


이더리움에서는 위의 그림과 같이 상태변화의 단위는 어카운트(Account)입니다.

어카운트는 중복되지않는 식별자인 주소를 가지고 있으며, 잔액이나 트랜잭션, 스마트 컨트랙트의 컴파일된 중간코드처럼 필요한 데이타를 저장하기위한 저장공간을 가지고 있습니다. 이와같은 모든것이 상태에 해당됩니다. 

이더리움의 상태전이함수는 비트코인과 같은 트랜잭션이 될수도 있고, 스마트 컨트랙트가 될수도 있습니다. 모든 어카운트의 상태정보는 블록과 블록내에 연결된 머클 패트리시아 트리로 저장되고 관리됩니다. 이와같이 이더리움은 상태전이 함수를 통해서 어카운트의 잔액을 송금하거나, 특정조건이나 외부 입력에 따라 자동으로 어카운트의 상태를 변화시키는 상태전이를 실행할수 있습니다.

이와같이 이더리움의 경우에는 트랜잭션뿐만 아니라 스마트 컨트랙트를 통한 능동적인 상태변화가 가능하도록 설계되어 있습니다.

따라서 비트코인은 화폐의 구현에 목적을 두고 개발되었고, 이더리움은 좀더 범용적인 서비스가 가능한 플랫폼으로 개발되었다고 볼수 있습니다.