누구나 이해하기 쉽도록 쉽게 쓴 블록체인 이야기 세번째 시간, 비트코인 ‘이중지불’ (Double-spending)에 관해 알아본다.
인류의 역사 이래로, 물물교환에서 가치교환 순으로 지불 수단이 바뀌기까지 오랜 세월이 흘렀다.
지금도 이 지불 수단에 대한 다양한 고민은 여전히 진행형이다.
“좀 더 단순한 그리고 안전한 방법은 없을까?”
현물화폐를 쓰던 인류는 신용을 기반으로 한 카드를 쓰기 시작하다 카드에서 다시 페이로 물건을 사거나 팔게 되었다.
정보기술 발달로 결제방법이 간편해졌지만 많은 정보기술학자들이 “이중지불 문제”를 놓고 고민을 거듭해왔다.
사실, 현실세계라면 이중지불을 고민할 필요가 없다.
티셔츠 한 장 정가가 만원이라면 판매자는 만원을 받고 티셔츠 2벌을 내주지 않기 마련이다.
이 때 오가는 현물지폐는 복사해서 붙여넣는 개념이 아니기 때문이다.
하지만 디지털 상에서는 이러한 불상사 즉, ‘이중지불’(Double-spending)이 얼마든지 가능하다.
‘이중지불’ (Double-spending) 개념이란 무엇일까.
지금 당신은 머릿속에 어떤 것을 떠올렸는가?
동시에 여기도 주고, 저기도 준다?
맞다. 악의를 가진 유저가 비트코인을 다른 이들에게 사용하려는데, 동시에 두 명에게 사용하려 한다면 이것은 ‘이중지불’ (Double-spending)이다.
따라서 디지털 상에서 누군가 거래 시, 누구나 거래를 쉽게 추적하여 자금 사용이 2번 이상 일어나지 않게 하는 기술이 필요하다.
기존 디지털 상의 거래는 동시에 적용되는 시간차 공격에 취약한 구조를 가졌다.
예를 들어 보자.
A가 5비트를 가졌다. A가 B와 C에게 5비트씩 동시에 전송한다.
B와 C는 A가 이중지불한 사실을 모른다. 결국 개인적인 데이터의 변화가 다른 데이터 변화와 일치하지 않는 상황이 발생한다.
이런 ‘이중지불’ (Double-spending) 합의 위험을 피하려면 어떻게 해야 할까?
사토시 나카모토는 ‘비트코인: P2P전자 화폐 문서’ (Bitcoin P2P e-cash paper) 라는 비트코인 백서를 통해 ‘이중지불’ (Double-spending)을 막는 해결책을 제시하고자 한다고 밝혔다.
그는 이런 생각을 했다.
1. 개인의 거래를 다른 사람이 알게 한다.
2. 개인이 투표 시스템을 통해 유효성을 검사한다.
개개인의 거래 내용을 다른 사람들이 그 유효성을 판단한다면 ‘이중지불’(Double-spending)에 대한 악의적 행위를 막을 수 있는 것이다.
그럼 유효성을 판단하는 투표는 어떤 식으로 진행되야 할까?
일단, 투표 방식이 어려워야 한다. 특정인들이 독점할 위험을 없애기 위해서다.
까다로운 방식으로 진행되는 투표는 돈과 시간이 드는 컴퓨터를 자원으로 테더링 투표 (Tethering votes)를 이용한다.
테더링이란, 휴대폰을 모뎀으로 활용해 인터넷을 이용할 수 있는 예처럼 인터넷 사용이 가능한 기기에 다른 기기를 연결해 인터넷 사용이 가능하게 만드는 방법이다.
테더링된 다수 컴퓨터들의 집합으로 블록체인은 소수의 악의적 행동을 막으면서 신뢰 가능한 유효성 검사가 가능하게 된다.
작업증명(Proof of Work) 방식의 합의 알고리즘으로 문제를 해결하게 된다.
비트코인 ‘이중지불’ (Double-spending) 검증에 사용되는 알고리즘은 ‘UTXO’와 작업증명 ‘Proof of Work’이 있다.
이 개념은 추후 다시 설명한다.
오늘 주제를 정리한다.
비트코인의 출현, 그 배경에는 사회적 요소와 정보기술적 요소 2가지가 있다.
앞선 목차에서 사회적 요소로 비트코인, P2P 방식의 전자 화폐 시스템을 언급한 바 있다.
중앙화된 금융과 자산에 대한 신뢰도가 사회적으로 약해지며 (정치경제적으로 불안한 나라, 부패한 나라를 생각해보자)
이로써 사람들은 중앙화된 권력기관, 절대 권력자 없이 문제가 발생하지 않을 시스템을 갈망해왔다.
즉 개인과 개인 간 투명한 거래에 대한 열망으로 P2P 방식의 전자화폐 시스템이 구현되었다.
둘째로 ‘정보기술적 문제’인 ‘이중지불’ (Double-spending)을 막는 해결책을 제시하고자 비트코인이 나오게 되었다.
이처럼 비트코인 채굴 및 블록체인은 네트워크가 어떠한 비트코인 거래가 유효한 거래인지에 대해 확인하고 합의하기 위해 존재한다.
'알기쉬운 블록체인' 카테고리의 다른 글
블록체인 - 권한증명 PoA (Proof of Authority) (0) | 2018.10.25 |
---|---|
블록체인 - 지분증명 PoS (Proof of Stake) (0) | 2018.10.24 |
비트코인 - 작업증명 (Proof of Work) (0) | 2018.10.23 |
비트코인 - P2P방식 (0) | 2018.10.18 |
비트코인과 블록체인 (0) | 2018.10.18 |