비트코인을 송금할 때의 3가지 문제(신원 조작, 거래 조작, 거래 부인)는 전자서명을 사용하여 해결하였습니다. 그러나 디지털 거래에서는, 3가지 문제 외에도 '이중 지불 문제(Double Spending Problem)'가 존재합니다. 현실 세계에서 화폐는 한 번이라도 상대방에게 송금하게 되면 이후에는 사용할 수 없습니다. 이는 현실 화폐가 물건으로써 존재하여, 화폐를 건네주게 되면 내 손에 존재할 수 없기 때문입니다. 그러나 디지털 거래에서 화폐는 물건이 아닌 정보로써 존재하기 때문에, 송금하더라도 그 정보가 남아있어 이중으로 사용할 수 있습니다.
지금까지는 이러한 이중 지불 문제를 은행이 해결해 왔습니다. 거래하는 사람의 거래 내역을 확인하여 예금된 잔액보다 더 많은 금액을 사용할 수 없게 감시를 하는 것으로, 사람들은 이중 지불을 할 수 없게 되었습니다. 그런데 비트코인 시스템에는 은행이 존재하지 않습니다. 비트코인은 이중 지불 문제를 어떻게 해결했을까요? 비트코인은 거래 내역을 은행이 감시하는 방식이 아니라, 거래를 할 수 있는 모든 사람이 감시하는 방식을 사용했습니다. 거래 내역을 사람들에게 공개함으로써 이중 지불 문제를 해결했습니다.
이렇게 비트코인을 소유하고 있는 컴퓨터들의 모임을 P2P(Peer to Peer) 네트워크라고 말합니다. P2P는 특별한 컴퓨터들끼리 서버 없이 데이터를 주고받는 네트워크입니다. 이 네트워크에서 데이터를 주고받을 때 적용되는 룰을 '프로토콜(Protocol)'이라고 하고, 각각의 컴퓨터를 '노드(Nod)'라고 합니다. 노드는 자유롭게 P2P 네트워크에서 참가 및 탈퇴할 수 있습니다. 마이크로소프트가 개발한 스카이프가 이 P2P 네트워크를 사용하여 서비스하고 있습니다.
사람들이 일정 기간 동안(비트코인은 약 10분) 거래를 하게 되면 그 내역들이 뭉쳐 하나의 블록(Block)으로 만들어집니다. 이 블록에는 이렇게 만들어진 거래 내역 외에도, 이전 블록의 해시값과 논스(Nonce)값이 들어가 있습니다. 논스값은 이 블록의 해시값을 찾기 위한 값으로, 올바른 논스값을 찾은 노드는 이 블록을 P2P에 알리고 다른 노드들은 전송된 논스값이 올바른지, 블록 안의 거래내역이 올바른지 확인합니다. 이러한 과정을 작업증명(Proof to Work)이라고 하며, 이에 대한 자세한 내용은 다음 편에 설명하겠습니다.
작업증명과정에서 문제가 없다면, 이 블록은 정상 처리되고 이전 블록에 연결됩니다. 해당 블록에는 이전 블록의 해시값이 있기 때문에 쉽게 연결될 수 있습니다. 해당 블록은 다시 해시 처리하여 다음 블록과 연결될 수 있습니다. 이런 식으로 블록이 연결된 것을 '블록체인(Block Chain)'이라고 합니다. 참고로 블록체인이 시작된 최초의 블록(Genesis Block)은 2009년 1월 3일에 만들어졌습니다.
블록체인에는 과거에 비트코인으로 거래되었던 모든 내역들이 들어가 있습니다. 비트코인을 받는 사람들은 이 블록체인을 들여다봄으로써 상대방이 꺼내 준 비트코인이 문제없이 내 소유가 되었다는 것을 알 수 있습니다. 만약 이중 지불 문제 등으로 블록에 문제가 생긴다면 이 블록은 무효처리되어 거래가 취소됩니다. 따라서 거래한 후 10분간은 기다리고, 송금이 정상처리 되었는지 확인하는 과정을 거쳐야 하는 것입니다.
참고자료 : 노구치 유키오, <The Virtual Currency Revolution>
비트코인 설명을 위한 금융 용어 및 IT 용어 정리 (0) | 2021.05.07 |
---|---|
비트코인 시스템의 이해 - 작업증명으로 블록체인 보호하기 (0) | 2021.05.07 |
비트코인 시스템의 이해 - 전자서명을 통한 비트코인 송금 (1) | 2021.05.05 |
비트코인 시스템의 이해 - 암호학 용어 설명(공개키, 해시, 전자서명) (2) | 2021.05.05 |
비트코인, 화폐로써의 가치 - 마운트곡스의 파산에 대한 오해 (2) | 2021.05.04 |