쉽게 설명하는 블록체인, 비트코인 거래의 원리와 과정 - 2 [거래의 입력값과 출력값]

in #kr7 years ago (edited)

우리는 최근 스마트폰을 이용해 Toss, 카카오 페이, 그리고 여러 금융기관들의 앱 등을 이용해 손쉽게 송금하고 있다.

그래서 누군가에게 돈을 보낼때 우리는 스마트폰에 보낼 금액 란에 얼마를 입력하고 계좌비밀번호, 인증서 비밀번호를 치고 스마트폰으로 아주 쉽게 거래하는 방식이 자리잡혀가고 있다.

비트코인 거래도 마찬가지인데 보낼금액에 몇 BTC를 보낼지 입력하는 입력값(input)을 넣으면, 해당 입력값에 대응하는 지갑주소에서 몇 BTC를 나타내는 출력값(output)이 생긴다. 그리고 이 출력값(output)은 블록에 기록된다. 즉 이 출력값(output)이 지갑에 찍히는 '잔액 덩어리'인 것이다.

거래입력값출력값.jpg

좀 더 자세히 말하면 블록에 있는 비트코인 거래들의 구성은 '소비되지 않은 거래 출력값(Unspent Transaction Output, UTXO)'로 이루어 진다. 이전 용어설명 포스팅에서 개념만 간단히 설명했었는데 UTXO는 비트코인 거래에 있어서 정말 중요한 개념이기에 조금더 자세히 다뤄보자.

거래입력값출력값1.jpg

비트코인 지갑상에서는 계좌라는 개념, 잔액이라는 개념을 UTXO 데이터로 대체한다. 각 지갑의 UTXO들은 해당 지갑 주인에 대해 암호로 잠겨있고 블록체인상에서 해당 UTXO의 주인을 기록하고 있는 전체 블록체인 네트워크에서 유통되는 화폐 덩어리이다.

이게 무슨말인가. 그림으로 한번 보자.

UTXO설명1.jpg

유재석, 김구라는 박명수에게 각각 5BTC, 1BTC를 송금했고 이 내역은 블록에 기록이 되었다고 가정하자. 그러면 박명수에게 생기는 UTXO는 유재석이 입력한 5BTC 입력값(input)에 대한 출력값(output) 하나와, 김구라가 입력한 1BTC 입력값(input)에 대한 출력값 하나를 합해 총 2개의 출력값(output)이 생성 되었다. 이 5BTC와 1BTC를 각각 서로 다른 UTXO라고 한다.

그렇다면 아래의 거래를 보면 김국진이 강호동, 이경규, 신동엽으로부터 각각 2BTC, 9BTC, 1BTC를 받은 김국진의 UTXO는 3개가 된다.

UTXO설명2.jpg

여기서 김국진이 노홍철에게 8BTC를 보내려고 하면

UTXO설명3.jpg

김국진이 가진 UTXO중 8BTC이상의 데이터를 찾아 입력값으로 8BTC를 넣으면 9BTC의 UTXO가 들어가서 노홍철 지갑주소에 8BTC가 출력값으로 찍히고, 또 잔액으로 김국진의 주소에 1BTC가 출력값으로 찍힌다.

UTXO설명4.jpg

그렇게 되면 총 UTXO의 수는 5개에서 6개로 늘어난다. 이것이 UTXO의 개념인데 다시한번 간략히 말하자면 비트코인 거래를 할 수 있는 데이터이자 잔액의 데이터 덩어리라고 할 수 있다.

만원의 지폐를 찢어서 사용할 수 없는 것처럼 UTXO 또한 쪼개서 사용할 수 없고 비트코인 지갑이 사용할 수 있는 UTXO를 찾아 데이터를 전송하는 역할을 해준다.

이때 참고할 것은 위 그림의 김국진과 노홍철의 거래처럼 하나의 입력값(input)에 대하여 두개의 출력값(output)이 생성되어도 수수료는 한번밖에 나오지 않는다는 것을 알아두자.

만일 박명수가 8BTC를 노홍철에게 전송하려고하면 가진 UTXO 데이터중 8BTC를 전송할 수 있는 데이터가 없기 때문에 입력값에 대하여 ERROR값을 리턴하게 된다.

이러한 방식으로 입력값과 출력값으로 인해 비트코인 거래가 성사된다.

최대한 쉽게 설명하려고 하지만 모르시는 분들을 위해 언제든지 어떤 내용이든 댓글로 질문을 받습니다.
질문의 내용이 길 경우는 [email protected]으로 보내주시면 감사하겠습니다.

Sort:  

Cheer Up!

  • from Clean STEEM activity supporter

새로운 사실을 알게 되니 재밌네요. ㅎㅎㅎ 그런데 박명수가 노홍철에게 6btc을 전송하게 되는 경우는 UTXO값이 어떻게 되는건가요?

@unieye 님 안녕하세요 좋은 정보였다니 감사합니다~
박명수가 현재 가지고 있는 UTXO는 5BTC와 1BTC 두개기 때문에 노홍철에게 6BTC를 전송할 경우 지갑에서 2개(5BTC,1BTC)의 UTXO를 2개의 입력값으로 인코딩해서 전송해서 노홍철의 지갑으로 6BTC라는 한개의 UTXO값을 출력하게 됩니다. 답변이 되셨길 바랍니다.

"단순히" 주고받고의 개념이 아니었군요 ;;; 근본적으로 구조에 대해서 생각하고 알게 되었습니다 !!!! 이해 안가는 부분이 있다면 추후에 메일로 정말 여쭈어보겠습니다 ^^

언제든 질문주세요~ 감사합니다!

Congratulations @jsralph! You have completed some achievement on Steemit and have been rewarded with new badge(s) :

You got a First Reply

Click on any badge to view your own Board of Honor on SteemitBoard.
For more information about SteemitBoard, click here

If you no longer want to receive notifications, reply to this comment with the word STOP

By upvoting this notification, you can help all Steemit users. Learn how here!

최근에 블록체인 스터디 모임 가입해서 공부중인데요. 정말 쉽게 잘 설명해 주시네요. 스팀잇 글중에 최고로 감동받으면서 보고 있습니다. 앞으로 좋은 글 계속 부탁드리겠습니다. ^^

네 감사합니다 공부를 하고 계시다니 더 도움이 되는 글이었으면 하네요~

계정 비밀번호 분실로 인하여 새로 포스팅을 하게 되었습니다ㅜㅜ
http://steemit.com/@easyblockchain 에서 더 많고 다양한 자료 포스팅하고 있으니 많이 찾아주세요~

Coin Marketplace

STEEM 0.22
TRX 0.27
JST 0.041
BTC 104435.36
ETH 3867.94
SBD 3.31