티스토리 뷰

1. UTXO (Unspent Transaction Outputs)

2. Account Model


[그림 1] UTXO와 Account Model

디지털 화폐가 유용하게 쓰이려면 양도 가능해야 한다. 블록체인을 송금할 때에는 소유자에 의해 시작되어 트랜잭션이 생성된다. 이 거래는 네트워크에 얼마나 많은 돈의 주인이 바뀌었는지, 그리고 새로운 주인이 누구인지 알려준다.

 

비트코인을 비롯하여 대부분의 블록체인은 거래 모델로 UTXO(Unspent Transaction Outputs) 모델을 사용한다. 이더리움에 적용된 바와 같이 사용자 잔액을 추적하는 Account Model도 존재한다.

 

UTXO를 사용하는지 Account Model을 사용하는지에 관계없이 모든 블록체인은 다음 방식을 따른다. 사용자 상호작용(대부분 트랜잭션)은 네트워크에 브로드캐스트되며, 각 새로운 블록에 따라 일련의 사용자 상호작용이 영구적으로 기록된다. 시스템이 새로운 상태로 전환되면 거래 당사자의 잔액이 업데이트된다.

 

 

1. UTXO (Unspent Transaction Outputs)

UTXO 에서는 자산 이동이 사용자 주소 간의 DAG(Directed Acyclic Graph, 유도 비순환 그래프)로 기록된다. 그래프는 에지로 연결된 노드 또는 정점의 집합으로 정의된다. 방향 그래프에서 각 모서리는 일반적으로 화살표를 통해 표시된다.

 

DAG는 노드 간의 순환 관계를 허용하지 않는다. 각 트랜잭션의 output은 DAG 내의 노드를 포함하고, 각 트랜잭션은 트랜잭션 output에서 유래한 하나 이상의 에지로 나타난다. 따라서 미사용 트랜잭션 output에는 에지가 생성되지 않는다.

 

이제 거래 예시를 들어 UTXO에 대해 더 자세히 알아보겠다.

 

[그림 2] UTXO 예시

먼저, Address A의 UTXO로 5.2 BTC, 1.7 BTC, 0.5 BTC, 6 BTC가 있다. 이 주소의 사용자에게는 총 8 BTC가 있다. 종이 화폐를 예로 들면, 나에게 8만원이 있다고 가정했을 때 5만원권 지폐 1장과 1만원권 지폐 3장을 갖고 있는 것과 같다. 5만원권과 1만원권을 이어 붙여서 6만원권을 만들 수 없고, 5만원권의 모퉁이를 잘라내어 4만원권으로 쓸 수 없듯이 각각의 UTXO는 지폐와 같은 성질을 갖는다.

 

[그림 3] BTC가 입금되었을 때 UTXO

누군가 Address A에 0.3 BTC를 입금하면 기존의 UTXO는 그대로 유지되고, 새로운 UTXO가 하나 더 추가된다. Address A에 들어있는 총 금액은 8.3 BTC가 되었다.

 

[그림 4] BTC를 출금할 때 UTXO

이제 Address A에서 Address B와 Address C에 각각 3.6 BTC와 2.5 BTC를 보내려고 한다. Address A의 UTXO 중에서 3.6 BTC보다 큰 UTXO가 있는지 찾는다. 이때 5.2 BTC가 있는 UTXO가 선택된다.

 

5.2 BTC - 3.6 BTC = 1.6 BTC인데, Address C에 2.5 BTC를 보내야 하므로 2.5 BTC - 1.6 BTC = 0.9 BTC가 부족하다. 5.2 BTC를 제외한 UTXO 중에서 0.9 BTC 보다 큰 것을 찾는다. 1.7 BTC가 있는 UTXO가 선택된다.

 

이제 거래가 성사되고 나면, Address A에는 5.2 BTC, 1.7 BTC가 있던 UTXO는 사라지고, 0.8 BTC가 있는 UTXO가 새로 생성된다. 그 외에 원래 Address A에 있던 UTXO는 그대로 유지된다.

 

Address B와 Address C에는 각각 3.6 BTC, 2.5 BTC가 있는 UTXO가 추가된다.

 

 

UTXO 장점

  • 확장성(Scalability) : 동시에 여러 개의 트랜잭션을 처리할 수 있으므로, 병렬 트랜잭션을 지원하고 확장성 혁신을 장려한다.
  • 프라이버시(Privacy) : 비트코인도 완전히 익명 시스템은 아니지만, UTXO는 사용자가 각 거래에 새로운 주소를 사용하는 한 더 높은 수준의 개인 정보를 제공한다. 개인 정보 보호를 강화해야 하는 경우 링 서명(Ring Signature: 사용자의 공개키를 섞어 특정 사용자를 식별하지 못하게 해 사용자를 추적 불가능하게 만드는 서명 기술)과 같은 보다 복잡한 체계를 고려할 수 있다.

 

 

2. Account Model

Account Model은 은행 계좌와 유사하게 자산을 계좌 내 잔액으로 나타낸다. 이 모델에서 사용하는 계정에는 2가지 유형이 있다. 바로 '개인키로 제어되는 사용자 계정'과 '코드 제어 계정'이다.

 

Ether 지갑을 만들고 첫 번째 트랜잭션을 수신하면 개인키 제어 계정이 글로벌 상태에 추가되어 네트워크상의 모든 노드에 저장된다. 스마트 컨트랙트를 도입하면 코드 제어 계정이 생성된다. 스마트 컨트랙트는 자금 자체를 보유할 수 있으며, 계약 논리에 정의된 조건에 따라 자금을 재분배할 수 있다. Ethernet의 모든 계정에는 다른 계정이나 주소를 호출할 수 있는 balance, storage, code 공간이 있다.

 

Account Model에서의 트랜잭션은 노드를 트리거하여 발신자 계정의 잔액을 감소시키고 수신자 계정의 잔액을 증가시킨다. Replay Attack을 방지하기 위해 계정 모델의 각 트랜잭션에는 nonce가 연결되어 있다. 부정 거래가 성공했을 경우, 2회째에 거래가 실행되어 재발송신자에게 송금하려는 금액의 2배의 과금이 부과된다.

 

Replay Attack에 대처하기 위해 Ethernet의 각 계정에는 공개 표시 nonce가 있다. 이 nonce는 트랜잭션이 송신될 때마다 1씩 증가한다. 이로 인해 같은 트랜잭션이 네트워크에 2회 이상 송신되는 것이 방지된다.

 

거래 수수료는 상태 전환을 완료하는 데 필요한 연산 수를 기준으로 계산된다. Etherium은 세계 컴퓨터화를 목표로 하고 있기 때문에 수수료가 사용된 저장용량보다는 소비된 계산자원의 수에 기초해야 한다고 결정하였다.

 

Account Model은 모든 잔액을 글로벌 상태로 추적한다. 이 상태는 네트워크상의 다른 자산이 현재 잔액과 함께 제어되는 모든 계정, 개인키 및 계약 코드의 데이터베이스로 이해할 수 있다.

 

 

Account Model 장점

  • 단순성(Simplicity) : 이더리움은 복잡한 스마트 컨트랙트 개발자, 특히 국가 정보가 필요하거나 여러 당사자가 참여하는 개발자의 이익을 위해 보다 직관적인 모델을 선택했다. 예를 들어 상태를 추적해 상태를 기반으로 다른 작업을 수행하는 스마트 컨트랙트가 있다. UTXO의 상태 비저장 모델은 트랜잭션에 상태 정보를 포함하도록 강제하므로 계약의 설계가 불필요하게 복잡해진다.
  • 효율성(Efficiency) : Account Model은 단순성과 더불어 전송 계정이 거래 비용을 지불하기에 충분한 잔액을 가지고 있는지 확인하기만 하면 되므로 더욱 효율적이다.

 

Account Model의 한 가지 단점은 이중 지불 공격에 노출된다는 점이다. 이러한 유형의 공격에 대응하기 위해 점증적인 nonce를 구현할 수 있다. 이더리움에서, 모든 계정은 공개적으로 볼 수 있는 nonce 값을 가지고 있고, 거래가 이루어질 때 마다 nonce는 1씩 증가한다. 이는 동일한 트랜잭션이 2번 이상 제출되는 것을 방지할 수 있다.

'BlockChain' 카테고리의 다른 글

[BlockChain] web3 설치 및 테스트  (0) 2022.06.28
[BlockChain] ganache-cli, MetaMask 설치  (0) 2022.06.28
[BlockChain] ECDSA  (0) 2022.06.20
블록체인 기초  (0) 2022.06.10
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함