인기 기자
(블록체인ABC)중앙통제자 없는 비트코인은 이중지불 어떻게 해결할까
2019-04-17 15:55:51 2019-04-17 15:55:51
[뉴스토마토 이우찬 기자] #. A씨는 B은행에 있는 1000만원을 C와 D에게 동시에 송금하면 어떻게 될지 호기심이 생겼다. 스마트폰 뱅킹과 컴퓨터를 동시에 이용해 1000만원을 송금할 준비를 했으며, 동시에 송금 버튼을 클릭했다. 어떤 결과가 나타날까? 
 
이처럼 한 번 결제돼야 하는데, 두 번 결제돼 일어나는 문제를 이중지불(Double Spent)의 문제라고 합니다. 혹시 발생할지 모르는 이 이중지불의 문제는 어떻게 해결해야 할까요? 중앙관리시스템의 통제를 받는 기존 금융시스템의 경우 이 문제 역시 중앙관리시스템이 담당합니다. 은행은 거래 요청이 들어온 순서대로 처리하는 방식으로 이중지불의 문제를 해결합니다. 위 사례같은 경우라면 금융시스템은 '거래승인'과 '잔고 없음' 등으로 처리합니다.  
 
그렇다면 중앙제어시스템이 없는 비트코인에서는 이중지불의 문제를 어떻게 해결할 수 있을까요? 블록체인을 활용한 최초 암호화폐인 비트코인은 지불수단으로 만들어졌는데요. 안정화되고 신뢰할 수 있는 자산으로 쓰이려면 이중지불의 문제를 해결하지 않을 수 없습니다.  
 
특히 디지털은 무한정 복사가 가능합니다. MP3파일, 동영상 CD 등 디지털 자료를 복제, 복사하는 것은 너무나도 쉽다는 사실을 생각해보면 알 수 있죠.  
 
비트코인은 작업증명(Proof of Work·PoW)이라는 합의 알고리즘으로 이중지불 문제를 해결합니다. 작업증명은 참여자들이 블록에 담긴 암호를 해독하고 검증해 새로운 블록을 인정받게 하는 절차로 이해하면 됩니다.
 
블록체인에 기록된 거래내역 중 실제 아직 소비하지 않은 거래정보를 UTXO(Unspent Transaction Output)라고 합니다. 장부에 기록됐을 뿐 실제 돈이 오고가지 않은 상황을 떠올려보세요. 이런 경우 이중지불 문제는 일어나지 않겠죠. 즉 UTXO가 2번 사용되지 않도록 제어할 수 있도록 하면 이중지불 문제를 해결할 수 있습니다. 
 
예컨대 비트코인에서 A가 B와 C에게 1000비트코인을 보내는 트랜잭션을 하면 이는 각 노드(네트워크 참여자)에 전파됩니다. 각 노드들은 A가 보낸 트랜잭션 유효성을 검증하고 검증된 거래일 경우 멤풀(Mempool)에 해당 트랜잭션을 업데이트합니다. 멤풀은 아직 거래가 성립하지 않은, 처리되지 않은 트랜잭션이 저장되는 공간입니다. 비트코인 채굴자는 멤풀에 대기 중인 트랜잭션 정보를 블록에 담고 해시 값을 도출합니다. 이 때 동일한 UTXO 정보를 사용한 트랜잭션은 한 블록에 담을 수 없게 함으로써 이중지불 문제를 예방하게 됩니다.
 
이우찬 기자 iamrainshine@etomato.com
 

ⓒ 맛있는 뉴스토마토, 무단 전재 - 재배포 금지

지난 뉴스레터 보기 구독하기
관련기사