암호화화폐 대장, 비트코인의 '거래원리' 두번째 이야기
누군가에게 돈을 보낼때 카카오페이, TOSS등을 이용해 우리는 스마트폰에 금액을 입력하고 계좌비밀번호, 인증서 비밀번호를 가지고 아주 쉽게 거래하는 방식이 자리잡혀가고 있다.
비트코인 거래도 마찬가지인데 보낼금액에 몇 BTC를 보낼지 입력하는 입력값(input)을 넣으면, 해당 입력값에 대응하는 지갑주소에서 몇 BTC를 나타내는 출력값(output)이 생긴다. 그리고 이 출력값(output)은 블록에 기록된다.
즉, 이 출력값(output)이 지갑에 찍히는 '잔액 덩어리'인 것이다.
더 상세히 말하면 블록에 있는 비트코인 거래의 구성은 '소비되지 않은 거래의 출력값 (Unspent Transaction Output; UTXO)'로 구성된다. 이 UTXO를 모르면 거래원리를 이해할 수 없을 만큼 중요한 개념이다.
비트코인 지갑은 '계좌', '잔액'이라는 개념은 UTXO 데이터로 이해한다. 각 지갑의 UTXO들은 해당 지갑 주인마다 다르게 암호화 되어 있고 이 암호화된 UTXO는 블록체인 상에서 해당 UTXO의 주인을 인식하고 있는 전체 블록체인 네트워크에서 유통되는 화폐 덩어리이다.
어려운 말이기에 쉽게 풀어보자.
유재석과 김구라는 박명수에게 각각 5BTC, 1BTC를 송금했는데 이 내역은 블록에 기록됐다고 가정하자.
그러면 박명수에게 생기는 UTXO는 유재석이 입력한 5BTC 입력값(input)에 대한 출력값(output) 하나와, 김구라가 입력한 1BTC 입력값(input)에 대한 출력값 하나를 합해 총 2개의 출력값(output)이 생성되었다.
이 때, 유재석으로부터 받은 5BTC와 김구라로부터 받은 1BTC는 서로 다른 UTXO이다.
아래의 거래 중 김국진도 마찬가지인데
김국진이 강호동, 이경규, 신동엽으로부터 각각 2BTC, 9BTC, 1BTC를 받아 3개의 UTXO를 출력값으로 갖는다.
여기서 김국진이 노홍철에게 8BTC를 보내려고 하면
8BTC를 전송할 때, 지갑에서 김국진이 가진 UTXO중에서 8BTC이상의 잔액덩어리인 UTXO를 찾아보면 9BTC인 UTXO가 있는데 이 9BTC 데이터를 사용한다.
그 결과, 노홍철의 지갑에 출력값으로 8BTC가 찍히고, 잔액으로 1BTC가 김국진이 지갑주소에 찍히게 되어 하나의 UTXO가 두개로 쪼개지게 된다.
그렇게 되면 총 UTXO의 수는 5개에서 6개로 늘어나게 된다. 이것이 UTXO의 개념인데 쉽게 말하면 UTXO를 하나의 동전이나 지폐라고 보면된다.
만원짜리 지폐를 찢어서 사용할 수 없는 것처럼 UTXO를 쪼개서 사용하지 않고 사용가능한 UTXO를 지갑에서 찾아 입력값에 넣은 다음 출력값으로 잔액을 되돌려 받는 형식인 것이다.
이때 참고할 것은 위 그림의 김국진과 노홍철의 거래처럼 하나의 입력값에 대하여 두개의 출력값이 생겨도 수수료는 한번밖에 나오지 않는다는 것을 알아두자
여기서 만일, 박명수가 8BTC를 노홍철에게 전송하려고 하면 가진 UTXO 데이터 중 8BTC를 전송할 수 있는 데이터가 없어 입력값에 대하여 ERROR값을 리턴한다.
이렇게 입력값과 출력값을 이용하여 비트코인의 거래가 성사되는 것이다.
최대한 쉽게 설명하려고 하지만 모르시는 분들을 위해 언제든지 어떤 내용이든 댓글로 질문을 받습니다.
질문의 내용이 길 경우는 jsralphh@gmail.com으로 보내주시면 감사하겠습니다.
이전 계정 https://steemit.com/@jsralph 분실하여 새로 계정을 만들게 되었습니다.
블록체인 관련 포스팅들 이곳에 계속 올라옵니다~
그러면 utxo는 맨 처음에는 어떻게 결정되나요? 최초 거래에서 그 크기(?)가 결정되나요? 예를들면 채굴을 한 노드가 어딘가로전송한 최초 output의 크기가 그 최초의 크기가 되는건가요?
최초라면 채굴을 했을때 나오는 비트코인의 양이 utxo라고 할 수 있습니다~^^