지난 포스팅에서는 트랜잭션 검증원리에 대해서 학습하였습니다. 지난 시간의 내용을 요약하면 아래와 같습니다.
오늘은 비트코인 거래시 내 잔액이 얼마인지.. 어떻게 확인하는지에 대한 개념정리와 거래 시 발생하는 입력 값(input), 출력 값(output)이 무엇인지에 대한 개념정리를 해보도록 하겠습니다.
우리가 은행에 방문하여 A라는 사용자에게 돈을 이체하기 위해서는 당연한 이야기지만 돈이 있어야 가능 합니다.은행에서는 계좌이체를 한 계좌에 이체할 돈이 충분한지 확인 후 이체를 진행하게됩니다. 마찬가지로 비트코인 거래에서도 거래를 요청한 사용자의 주소에 충분한 비트코인이 있는지 그리고 이체 후 남은 거스름돈은 어떻게 처리할 것인지에 대한 방법이 필요합니다. 지금부터 이 방법에 대해서 자세히 알아보도록 하겠습니다.
기본적으로 거래를 하기 위해서는 거래에 사용될 물건, 즉 화폐가 필요합니다. 즉 비트코인 네트워크에서도 거래를 하기 위해서는 비트코인이 필요하다는 의미입니다.
비트코인 네트워크는 중앙 관리 시스템이 없기 때문에 별도로 비트코인을 발행하는 주체가 없습니다. 비트코인의 발행은 채굴자(마이너)가 새로운 블록을 생성한 댓가로 자신의 비트코인 주소에 '보상'받을 비트코인의 거래내역을 작성하여 '셀프보상'을 받는다고 하였습니다. 보다 자세한 내용을 이해하고 싶으신 분은 아래의 포스팅을 먼저 읽어보시길 추천드립니다.
비트코인 인포 사이트에 접속하여 각 블록에 '보상'과 관련된 0번째 거래 내역을 살펴보면 아래와같습니다.
위의 데이터를 살펴보면 비트코인의 최초 제네시스 블록의 0번째 거래내역, 그리고 반감기가 이루어진 21만번째, 42만번째의 거래내역입니다. 최초에는 50BTC + 수수료, 반감기가 이루어진 시점에서는 25.BTC + 수수료, 12.5BTC + 수수료를 지불 받은 데이터를 확인할 수 있었습니다.
비트코인 반감기란 새로운 블록을 생성하였을 때 보상 받을 수 있는 비트코인의 수량이 절반식 줄어드는것을 의미합니다. having은 약 4년마다 이루어지며 21만 블록마다 having이 이루어집니다.
이해를 돕기 위해 비트코인의 발행, 그리고 거래가 이루어지는 과정을 예제를 통해 설명해보겠습니다.(해당 내용은 이해를 돕기 위해 쉽게 풀이한 과정입니다. 상세내용은 아래에서 이야기 하도록 하겠습니다.)
'Bird', 'Caw', 'Dog' 3친구가 비트코인 네트워크에 참여했다고 가정하고, 최초의 블록을 'Bird'가 생성하였습니다. 생성한 댓가로 'Bird'는 50BTC를 받았을 경우 아래의 그림과 같이 'Bird'만이 50 BTC를 소유하게됩니다.
그리고 다음 블록의 생성은 'Caw'가 생성하여 보상을 받았습니다. 이렇게 되었을 경우 비트코인 네트워크의 비트코인 총 발행량은 100 BTC이며, 비트코인 소유자는 Bird - 50 BTC, Caw - 50 BTC가 됩니다. 이렇게 비트코인을 소유한 Bird와 Caw는 서로 비트코인 거래를 진행할 수 있지만 아직 비트코인을 소유하고 있지 않은 Dog는 거래에 참여할 수 없습니다.
Dog는 채굴에 자신이 없었기 때문에 원화(KRW)를 Caw에게 지불하고 25BTC를 구매했다고 가정해보겠습니다. 그리고 다음 블록은 'Bird'가 생성하여 보상금인 50BTC + 거래 수수료를 받았다고 가정해보면 아래의 그림과 같이 구성이됩니다.
블록체인은 모든 거래 데이터를 가지고 있는 공통의 장부이고, 이 장부를 통해 최초의 비트코인 발행부터 지금까지 이루어진 모든 거래내역을 확인할 수 있게됩니다. 즉 특정 주소의 송금, 입금 기록을 통해 해당 주소의 비트코인 수량까지 모두 확인할 수 있게됩니다!
보다 깊히 있는 비트코인 거래 내용을 설명하기 위해서는 input, output에 대한 개념 및 UTXO라는 개념에 대한 이해가 필요합니다.
입력 값(input)은 쉽게 생각해서 내가 현재 송금할 총 금액이 얼마인지를 나타내는 금액입니다. 입력 값은 실제 전송할 BTC의 금액, 그리고 수수료를 지불하는 금액의 총합이 되겠습니다.
출력 값(output)은 누구에게 몇 BTC를 지불할지에 대한 데이터로 구성되며, 다수의 사용자와, 거래 수수료 정보로 나뉘어서 표시될 수 있습니다.
비트코인 인포에서 가장 최근에 생성된 블록의 거래내용은 아래의 그림과 같습니다.
위의 그림에서 오른쪽에 표시되는 정보를 살펴보면 가장 위의 정보부터, 총 거래량이 입력(input)값, 총 출력은 사용자들에게 보낸 비트코인의 총 합입니다. 거래 수수료는 해당 거래를 하기 위해 지불한 수수료 값이 되겠습니다. 즉 총 입력 값 25.17842512 BTC는 출력 값( 25.1784207 BTC) + 수수료(0.00000442 BTC) 가 되겠습니다. 추가로 왼쪽에 있는 트리 차트 보기를 선택하여 조금 더 상세하게 살펴볼 수 있습니다.
위의 차트에서 나와 있듯이 각 주소 1FuTHcPEj5ny3hHoHnRjEcfBgLp3gjRdHe, 1NWEeSJwcMpRRFYgzKGxwgye5TVKeFLPCU, 1HfMmXnnHUjvGCmjuExC5uoRnYXsL7ScVC, 1PzV98RhSHDGggoDk1nL38fCWnDUzxK4Ja에 BTC를 송금하였습니다. 그렇기 때문에 트랜잭션의 주소 부분을 살펴보면 해당 주소 4곳이 기입된 것을 확인할 수 있습니다.
비트코인 거래를 보다 깊히 있게 설명해드리기 위해서는 UTXO에 대한 개념 설명이 필요합니다만.. 포스팅 내용이 너무 길어졌기 때문에 오늘은 여기서 설명을 마치고 다음 포스팅에서 UTXO에 대한 설명을 이어가도록 하겠습니다.
어느덧 블록체인 기술 및 비트코인에 대한 포스팅이 총 17개의 포스팅을 진행하였습니다. 블록체인 기술에 대해 전혀 모르던 제가 학습을하고.. 학습한 내용을 토대로 포스팅을 진행하다보니.. 부족한 부분이나 포스팅 순서가 조금 뒤섞인 경향이 있다는 생각이 들었습니다.(오늘 포스팅이 비트코인 거래원리의 첫 포스팅이어야 되지 않았나 싶기도 하구요.. )
어디서부터 어떻게 포스팅을 정리할지는 고민입니다만.. 꾸준히 블록체인 관련 기술을 포스팅 후 어느정도 모든 내용에 대한 포스팅이 이루어졌다고 판단이 되면 책의 형태로 정리 후 공유해드리고 싶은 욕심이 생기네요:)
[참고자료]
https://steemit.com/kr/@jsralph/5f59rf-1
http://blog.naver.com/PostView.nhn?blogId=allthatbtc&logNo=20204252383
https://organicmedialab.com/2014/02/20/bitcoin-addresses-transactions-and-wallets/