UTXO(비트코인) vs Account Balance(이더리움)
UTXO
UTXO란 Unspent Transaction Outputs의 약자로서, 미사용 트랜잭션 출력 값이다. 이것은 비트코인에서 계정의 잔고를 표현하는 방식인데, 사용되지 않은 트랜잭션 출력 값들의 합이 비트코인의 잔고이다.
예시
A의 비트코인 계정의 잔고가 5개가 있다는 것을 표현하기 위해서 비트코인은 다음과 같이 처리한다.
B와 C가 각각 A에게 2비트, 3비트를 전송한다. 비트를 받은 A는 2개, 3개로 나누어진 UTXO 2개를 가지고 있게 된다. 만약 A가 C에게 비트 1개를 전송한다면 1개 이상을 가지고 있는 UTXO 중 한 개가 파기되고 비트 1개가 들어있는 UTXO가 생성된다.
장점
- 이중 지불 방지
- 트랜잭션이 발생하면 UTXO는 검증받은 후 TX Pool에 들어간다.
- 이중 지불이 발생하면 채굴자들은 Pool에서 UTXO 검사 후 중복된 기록을 발견하면 해당 거래를 무효화시킬 수 있다.
- 잔고 증명
- 이더리움 같은 경우는 트랜잭션들을 모두 검증 및 확인하여 최종적으로 잔고를 유추하지만 UTXO는 해당 사용자의 UTXO만 확보하면 되기 때문에 추적 및 유효성 검증이 쉽다.
단점
UTXO가 너무 많이 생성된다면 UTXO 마다 수수료가 부과되기 때문에 불필요한 수수료가 발생할 수 있다.
Account Model
Account Model은 은행과 같은 방식으로 계정의 잔고를 조회하며 이더리움도 이 방식을 사용하고 있습니다. Account Model은 우리가 일반적으로 생각하는 것과 같이 5 ETH가 계정에 존재하고 1 ETH를 상대방에게 전송하는 트랜잭션을 발생시킨다면 1 ETH를 전송하고 잔고를 5 ETH -> 4 ETH로 변경하는 트랜잭션 1개만이 발생합니다. Account Model은 병렬 처리에 약해 이중 지불 문제가 있다고는 하지만 이더리움에서는 이것을 트랜잭션 구조에 Nonce를 추가하는 것으로 방지한다.
UTXO vs Account Model
둘 중 어느 것이 더 좋다고 하기는 힘들다. UTXO는 각 거래마다 각 거래에 새로운 주소를 사용하기 때문에 보안성과 병렬 처리에 장점이 있지만 Account Model은 단순하며 전송 트랜잭션을 발생시키기 위해 충분한 잔고가 있는지만 확인하면 되기 때문에 효율적이다. 또한 이더리움은 EVM으로 스마트컨트랙트를 구현할 수 있기 때문에 이러한 컨트랙트를 수행하기 위해 채택한 방식이라고 볼 수 있다.