본문으로 건너뛰기

이중 지불

이중 지불은 같은 돈을 두 번 사용하려는 시도입니다. 지폐는 한 번 건네면 내 손에서 사라지지만, 디지털 파일은 복사해도 원본이 남습니다. 디지털 돈이 파일처럼 복사된다면 같은 돈을 여러 사람에게 보낼 수 있고, 받는 사람은 자신이 받은 돈이 이미 다른 곳에서 쓰였는지 확인할 수 없습니다.

이 문제는 디지털 돈이 해결해야 할 핵심 과제였습니다.

파일과 돈의 차이

음악 파일을 친구에게 보내도 내 컴퓨터의 원본은 그대로 남습니다. 친구가 다시 여러 사람에게 보내는 것도 가능합니다. 돈이 이와 같다면 누구나 같은 돈을 계속 복사할 수 있으므로 희소성과 신뢰가 무너집니다.

전통적인 금융 시스템은 중앙 기관을 심판으로 세워 이 문제를 처리합니다. 은행은 계좌 잔액을 확인하고, 돈을 한 번만 차감한 뒤 상대방 계좌에 더합니다. 돈의 복사본을 만드는 대신 장부에 기록된 잔액을 조정하는 방식입니다.

이 방식은 이중 지불을 막지만, 이용자는 그 기관을 믿어야 합니다. 수수료를 내야 하고, 계좌가 제한되거나 영업시간의 영향을 받을 수도 있습니다. 비트코인은 중앙의 심판 없이 같은 문제를 해결하려고 합니다.

비트코인의 공통 장부

비트코인 장부에는 은행 계좌처럼 단순한 잔액 항목이 있는 것이 아닙니다. 누가 어떤 거래를 통해 무엇을 받았는지가 기록되어 있습니다. 송금하려면 과거에 내가 받은 기록을 지목해야 하며, 그 기록이 아직 사용되지 않았을 때만 거래가 유효합니다. 이러한 사용되지 않은 거래 출력은 유티엑스오(UTXO)라고 합니다. 비트코인 개발자 문서는 UTXO와 거래의 잔돈 출력을 설명합니다.

이미 사용된 기록을 다시 지목한 거래는 유효하지 않습니다. 전 세계의 풀 노드는 각자 보유한 장부를 바탕으로 공통 합의 규칙에 따라 거래를 확인합니다. 같은 기록을 두 번 사용할 수 없도록 모두가 확인할 수 있는 공통의 순서를 만드는 것입니다.

동시에 두 거래를 보내면

같은 기록을 지목한 거래 두 개를 서로 다른 지역에 동시에 전파하는 시도도 생각할 수 있습니다. 이때 서로 다른 노드가 각기 다른 충돌 거래를 대기 중인 거래 목록에 보유할 수 있습니다. 따라서 잠시 동안 네트워크의 여러 부분에서 서로 다른 거래가 보일 수 있습니다.

유효한 체인에는 두 충돌 거래를 함께 넣을 수 없습니다. 둘 가운데 하나가 블록에 포함되면, 다른 거래는 그 체인에서 이미 사용된 기록을 다시 쓰려 하므로 무효가 됩니다. 먼저 거래를 믿고 물건이나 현금을 내준 뒤, 나중에 그 거래가 빠지고 충돌 거래가 포함된 체인이 선택되면 수취인은 피해를 볼 수 있습니다.

이런 체인 재조직은 두 충돌 거래를 한 유효한 체인에서 동시에 유효하게 만드는 일이 아닙니다. 기존 체인에 있던 거래가 대체 체인에서 빠지거나, 충돌 거래로 대체되는 일입니다. 체인 선택은 단순히 블록 개수가 아니라 유효한 체인 가운데 누적 작업량이 가장 큰 체인을 따르는 방식으로 이루어집니다. 비트코인 개발자 문서는 이 체인 선택 원리를 설명합니다.

확인 횟수와 기다림

이중 지불이 절대 불가능하다는 뜻은 아닙니다. 방금 들어온 거래일수록 아직 체인이 바뀔 여지가 남아 있습니다. 시간이 지나 블록이 더 쌓이면 거래를 되돌리는 데 필요한 계산과 비용이 커집니다.

작은 금액의 결제는 실패하더라도 손해가 작기 때문에 확인을 오래 기다리지 않을 수 있습니다. 반면 큰 금액을 다루는 곳에서는 여러 번의 확인을 기다리는 관행이 생겼습니다. 거래소에서 여섯 번의 확인을 기다리는 방식이 대표적인 예로 언급되지만, 필요한 확인 횟수는 거래의 규모와 위험 판단에 따라 달라질 수 있습니다.

작업증명이 만드는 비용

비트코인이 없앤 것은 이중 지불을 시도할 가능성 자체가 아닙니다. 중앙의 심판이 반드시 있어야 한다는 조건을 없애고, 규칙과 경쟁으로 거래 순서를 정하는 방식을 제시한 것입니다.

미확인 거래의 경우에는 공격자가 과반의 계산 능력을 갖추지 않아도 충돌 거래를 만들어 수취인이 먼저 물건이나 현금을 넘기도록 속일 위험이 있습니다. 이미 확인된 거래를 되돌리는 일은 더 어렵지만, 과반보다 적은 계산 능력으로도 운이 좋으면 대체 체인이 따라잡을 가능성이 있습니다. 과반의 계산 능력을 확보하면 공격자가 작업증명 경쟁에서 지속적인 우위를 차지할 가능성이 커져, 확인된 거래를 재조직으로 되돌리는 공격을 이어 가기 쉬워집니다. 자세한 범위는 51% 공격에서 설명합니다.

이 구조는 이중 지불을 단순한 금지로 막는 대신, 되돌리기를 감당하기 어려운 경쟁 구조로 만듭니다. 거래가 블록에 포함된 뒤에도 시간이 지나고 확인이 쌓일수록 더 단단해지는 이유입니다.

정리

이중 지불은 같은 돈을 두 번 쓰려는 시도입니다. 전자 파일이 복사되는 성질 때문에 디지털 돈에서 특히 어려운 문제였습니다.

비트코인에서는 풀 노드가 공통 합의 규칙으로 장부를 검증하고, 이미 사용된 기록을 다시 지목한 거래를 거절합니다. 충돌하는 거래는 서로 다른 노드의 대기 목록에 잠시 보일 수 있지만, 유효한 체인에는 하나만 남습니다. 미확인 결제는 확인 전에도 위험할 수 있고, 확인된 거래를 되돌리는 일은 작업증명 경쟁에서 우위를 확보할수록 쉬워집니다. 따라서 거래는 블록에 포함된 뒤 시간이 지나고 확인이 쌓일수록 더 단단해집니다.

링크 복사하기X에 공유페이스북에 공유쓰레드에 공유