brunch

You can make anything
by writing

C.S.Lewis

by 뱅크샐러드 Jun 20. 2018

[easyblockchain] 비트코인 거래방식

비트코인 거래가 어떻게 이루어지는지 그 과정에 대해 알아보자!

Step 1. 비트코인 거래 생성


Bob이 Alice에게 1BTC를 주는 거래가 발생했다고 가정해보자.

이것은 Bob이 Alice에게 1BTC를 전송한다는 '의사표시'만 한 것이지, 아직 실제로 가치가 이동하지는 않은 단계다. 

참고) 비트코인 거래는 거래를 생성하는 사람과 거래 서명을 하는 사람이 같을 필요는 없다. 즉, 아래 두 가지 경우 모두 거래가 성립한다. 수표 거래와 비슷하다고 생각하면 된다.




Step 2. 비트코인 거래 서명


비트코인 거래가 생성되면, 누가 거래를 생성했든 자금원의 소유자(위 그림의 경우 Bob)가 해당 거래에 대한 서명을 해야 한다. 서명이 완료되면 비로소 이 거래가 유효해진다. 그리고 비트코인 송금에 필요한 모든 정보가 담겨있는 ‘거래정보’가 생겨난다. ‘Bob이 Alice에게 1BTC를 보낸다’는 내용이 적혀 있는 수표가 생겨난 것과 비슷하다.



Step 3. 비트코인 거래정보 전송


‘Bob이 Alice에게 1BTC를 보낸다’는 내용이 담긴 거래정보를 Bob과 Alice 둘만 알고있어서는 거래가 성사될 수 없다. 이 거래정보는 비트코인 네트워크에 전송되어야 한다. 수많은 비트코인 노드 중 하나에 이 거래 정보가 도달해야 한다는 이야기이다. 


※ 노드란? : 블록체인을 배포하는 소프트웨어를 갖고 블록체인을 다운받는 사람 또는 컴퓨터를 뜻한다. 


참고) Bob은 노드의 무엇을 믿고 거래정보를 보내줄 수 있는 것일까?
-정보를 제공할 때 상대방에 대한 신뢰가 없어도 가능한 3가지 이유는 다음과 같다.


1) 블록체인에서 거래정보가 입력된다는 것은 단순히 스크립트가 네트워크상에 업로드 되는 것이고, 이것 역시 ‘암호화(HASHING)’된 상태로 입력된다. 

2) 기밀정보, 개인키, 인증서를 포함하지 않기 때문에 공개적으로 전송이 가능하다. 기밀정보를 포함하지 않는 거래정보를 공유하는 것이다. 거래정보가 하나의 노드에 도달하기만 하면 전세계 사람들 누구나 열람이 가능한 ‘Open source’가 될 수 있는 이유가 바로 여기에 있다. 

3) 비트코인 소비자들과 채굴자들은 비트코인에 부여된 가치가 떨어지면 스스로가 손해다. 때문에 좋은 방향으로 합의를 보려고 하는 경제적 유인도 있다. 


Step 4. 비트코인 거래정보 전파


거래정보가 일단 하나의 노드에 도달하면, 이 노드는 비트코인 네트워크 상에 있는 모든 노드에게 이 거래정보를 전파해야 한다. 비트코인 네트워크는 P2P를 기반으로 하기 때문에 모든 노드는 동등한 지위를 가지고 있고, 정보 하나를 수천개의 노드에 전파하는데 불과 몇 초도 걸리지 않는다. 


비트코인 거래정보가 안전하게 남을 수 있는 이유가 바로 여기에 있다. 이렇게 각각의 노드들이 거래를 유효화하고, 각자가 정보 전송의 시발점이 되는 역할을 하기 때문에, 공격자가 들어오더라도 어느 곳을 공격할지 알 수 없게 되는 것이다.




Step 5. 비트코인 거래 완료


이렇게 전파되는 과정에서, 이 거래정보가 손상되지 않은 데이터인지 채굴 노드들에 의해 검증되면 비로소 이 거래정보가 영구적으로 블록에 기록된다. 이제 진짜로 Bob이 Alice에게 1BTC를 전송했다고 할 수 있는 것이다. 이렇게 기록된 정보는 이후에 위조, 변조하는 것이 불가능하다. 


노드들이 거래 정보를 어떻게 검증하는지, 기록된 정보의 위/변조가 불가능한 이유가 무엇인지는 아래 칼럼에서 확인해보자 

블록체인의 원리 – 채굴, 해시 그리고 작업증명 

여기까지 설명한 비트코인 거래 과정 5단계는, '입력값(전송될 내용과 금액)'과 '출력값(그 금액의 목적지인 비트코인 지갑)'까지 가치의 전송이 장부에 기록되는 데이터 구조라고 보면 된다. 


이번에는, Bob의 계좌에서 Alice의 계좌로 
돈이 이동하는 과정을 떠올려보자.

누군가에게 돈을 보낼 때 우리는 카카오페이, TOSS등을 이용 스마트폰 앱에서 전송할 금액과 어디에 돈을 보낼지(입력값)를 입력한다. 그리고 PIN번호, 계좌 비밀번호 또는 인증서 비밀번호를 입력해 돈을 보낸다. 그러면 돈을 받을 사람의 계좌에 돈이 들어온다. 즉 받는 이의 계좌에 받는 금액(출력값)이 찍히고, 거래가 이루어진 것이다. 

비트코인 거래도 마찬가지다. 보낼 금액에 몇 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를 보내려 한다.




이렇게 되면 총 UTXO의 수는 5개에서 6개로 늘어나게 된다. (박명수 2개, 김국진 3개, 노홍철 1개) 

UTXO를 하나의 동전이나 지폐라고 보면 된다. 만원짜리 지폐를 찢어서 사용할 수 없듯, UTXO는 쪼개서 사용할 수 없다. 대신 사용 가능한 UTXO를 지갑에서 찾아 입력값에 넣은 다음 출력값으로 잔액을 되돌려 받는 형식인 것이다. 

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

이렇게 입력값과 출력값을 이용하여 비트코인의 거래가 성사되는 것이다.





<같이 보면 좋을 글>


블록체인 개념 완벽 정리


[핀테크 서비스 소비자 체험기] 가상화폐 투자, Coinone 거래소


호갱이 되지 않는 펀드 고르기 기본 3원칙


Written by EasyBlockchain 
블록체인 기술이 가까운 미래에 큰 변화를 가져다 줄거라고 믿는 블록체인 분야 블로거입니다.



매거진의 이전글 [경매로내집마련하기] 월세 '받는' 사람이 되는 법
작품 선택
키워드 선택 0 / 3 0
댓글여부
afliean
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari