비트코인 거래과정
- 비트코인에서는 “계좌”의 개념 대신 월렛 주소라는 개념이 등장한다. 각 사람은 비트코인을 저장하기 위해 하나 이상의 주소를 가질 수 있다.
- A가 B에게 3 비트코인을 보내려고 한다면, A는 B에게 비트코인 주소를 요청하고, 해당 비트코인 주소로 3 비트코인을 전송하기만 하면 된다
- A가 B에게 3 비트코인을 보냈다는 기록이 블록체인 내에 기록되면, 비트코인 전송이 완료된 것이다.
비트코인 채굴
- 블록체인에 추가할 새로운 블록을 생성하는 것
- 비트코인이라는 암호화폐를 생성하는 것
- 즉, 비트코인 네트워크에서는 일련의 과정을 거쳐 기존의 블록체인에 추가할 블록을 생성하게 되고, 블록 생성의 결과로 새로운 비트코인이 생성된다.
그리고 이렇게 새로운 블록과 비트코인을 생성하는 과정을 채굴 (Mining)이라고 말한다.
채굴 과정
-
비트코인을 채굴하는 과정은 일종의 퍼즐 풀기와 같다. 시간과 컴퓨팅 파워를 소모해서 퍼즐을 풀 수 있는 값을 찾게 된다. 퍼즐을 풀 수 있는 퍼즐 조각을 찾으면 비로소 새로운 블록을 생성할 수 있게 되고, 새롭게 생성된 블록은 기존의 블록체인에 연결된다.
-
좀 더 상세하게 살펴보자면, 위에서의 퍼즐의 난이도를 의미하는 특정 목표 값이 있고, 0부터 1씩 점차적으로 증가하는 nonce라고 하는 값이 있다. 이 nonce 값은 hash 함수라고 하는 일종의 퍼즐 조각 생성기를 거쳐 임의 값을 만들어내는데, 이 임의의 값이 목표 값보다 작은 값을 가질 때까지 계속해서 퍼즐 조각을 생성해준다.
같은 과정을 반복하다가 목표값보다 작은 값을 가지는 퍼즐 조각을 발견한다면,
퍼즐을 완성할 수 있게 되고, 비로소 블록을 생성할 수 있는 권한을 가지게 되는 것이다.
-
이때 퍼즐의 난이도는, 퍼즐을 완성하는 시간이 10분 정도가 소요되게끔 시스템에서 정해져 있다. -> 하나의 퍼즐을 풀어 블록을 생성하고 나면, 새로운 블록을 생성하기까지 다시 10분이 소요되게 된다.
채굴 보상
- 채굴을 위한 퍼즐을 풀기 위해서, 채굴자들은 시간과 비용을 소모하게 된다. 아무런 댓가 없이는, 아무도 채굴을 하려하지 않게 될 것이므로, 비트코인 시스템에서는 두 가지 형태의 보상이 존재한다.
보상1. 새로운 블록에서 새 코인을 생성해서 얻는 보상
- 블럭 생성자에게 직접 코인을 준다!
- (현재는 블록을 생성하면, 6.25 비트코인을 받을 수 있다.)
그러나, 비트코인은 총 발행량이 2100만개로 정해져있기 때문에 채굴이 계속됨에 따라 채굴 보상이 줄어들게 된다. 보통 21만개의 블록이 새로 생성될 때마다 새롭게 생성되는 비트코인 양이 절반으로 줄어들고, 이 시기를 반감기라고 말한다.
반감기
- 2009년 1월 첫 비트코인이 생성된 이후 제일 초기엔 보상으로 50비트코인이 제공됐다.
- 첫 번째 반감기 이후 25btc로, 두 번째 반감기 이후에 12.5btc, 세 번째 반감기가 지난 지금은 6.25btc 가 된 것.
- 반감기는 보통 21만개의 블록이 생성되는 시간인 4년의 주기를 가지며 총 발행량인 2100만개가 모두 발행되고 나는 2140년 경에는 새롭게 발행되는 비트코인은 없을 것이다...
보상2. 이체 수수료
- 보상1만 주어진다면 모든 비트코인이 발행되고 나서는 아무도 블록을 채굴하지 않으려하지 않을 것이기 때문에, 이것 외에 이체 수수료라는 두 번째 보상이 존재한다.
- A와 B가 총 10BTC를 소유하고 있고, A가 B에게 3BTC를 보내려는 상황을 가정해보자. 일반적으로 거래가 완료된 후, A에게 7 BTC가, B에게 13 BTC가 남을 것이라고 예상하시겠지만 실제 비트코인 시스템에서는 그렇지 않다.
- 비트코인은 계좌, 잔액의 개념이 없고 비트코인이 하나의 “덩어리”로 존재하게 된다.
- 즉 A와 B는 10 비트코인에 해당하는 하나의 덩어리를 가지게 되는 것이다.
- 그래서 A는 10 비트코인만큼의 덩어리 하나를 소비해서, B에게 3 비트코인을 전송하게 되는 것이고, 거래 결과 B는 10 비트코인 덩어리 하나와, 3 비트코인 크기의 덩어리 하나를 가지게 되는 것이다.
- 그렇다면 A가 B에게 3 비트코인을 보낸 후 남은 7 비트코인은 어디로 갔을까?
- 비트코인은 잔액의 개념이 없기 때문에, 10 비트코인 덩어리를 이용해 B에게 3 비트코인을 보내고 난 후 남은 7 비트코인이 자동으로 A에게 남겨지지 않는다. 보내고 남은 잔액을 돌려받기 위해선 자신이 돌려받을 남은 비트코인을 자기 자신에게 다시 보내주어야 한다.
- 즉, 3 비트코인은 B에게 7 비트코인은 자기 자신에게 전송해야 하는 방식
- 그런데 이때에, 남은 7비트코인 중 일부를 이체 수수료에 사용할 수 있게 되는데, 이 이체 수수료가 블록을 채굴한 채굴자에게 전달되는 두 번째 보상이다.
- 비트코인 송신자는 비트코인을 전송할 때, 얼마를 상대에게 보내고, 얼마를 자신이 되돌려 받을지를 명시해줌으로써 얼마의 이체 수수료를 지불할지를 결정할 수 있게 된다.
- 이렇게 보면, 어떤 바보가 수수료를 내는건지, 남은 금액을 다 자신에게 전송하면 되는게 아닌지 의아하겠지만, 비트코인의 거래는, 새로운 블럭에 그 거래 사항을 기록함으로써 이뤄진다. 즉, 블록에 기입하지 못한 거래는 거래로 인정될 수 없는것이다!
- 보통 이체 수수료가 높을수록 채굴자가 받는 보상이 높기 때문에, 채굴자들은 이체 수수료가 높은 거래를 선택해 블록 생성을 시도하려는 경우가 많다. 즉, 이체 수수료가 많을수록, 자신의 생성한 거래가 블록체인에 더 빨리 저장될 수 있게 되는 것이다!
비트코인의 한계
1. 낮은 실시간성
- 채굴 과정의 퍼즐 난이도가 10분 정도로 정해져 있기때문에, 블록의 생성 주기는 10분이상이 될 수 밖에 없다. 발생한 거래는 블록에 포함되어, 블록체인에 연결되어야 완료되기 때문에, 거래가 완료되기 까지 최소 10분을 대기해야한다는 큰 단점이 생겨버린다.
- 이는 이체 수수료에 따라 더 길어질 수 있기 때문에 거래의 완료를 바로 확인할 수 없다는 단점이 있다. 실제로 이체 수수료를 아주 낮게 설정한다면 며칠이 걸릴 수도 있고, 아주 오랫동안 블록에 포함되지 않을 수도 있다.
- 비트코인의 초당 거래량은 초당 약 7개 정도로 매우 적은데, 이 값은 Visa 신용카드의 초당 거래량이 4천개 정도인 것과 비교하면 매우매우 느리다...
2. 에너지 소모
- 채굴 과정에서 퍼즐을 푸는 과정은 에너지 소모량이 매우 많다. 블록 채굴을 위해 소모되는 전력량이 아르헨티나의 전력 소모량과 비슷하다는 결과가 있을 정도...
k-mooc 의 블록체인 입문 강의를 듣고 정리한 내용입니다~