비트코인의 이중 지불은 어떤 방식에 의해 방지되나요?
비트코인은 하나의 블록이 만들어지기 까지 10분의 시간이 걸립니다. 그래서 커피 한잔을 사먹으려면 10분을 기다렸다가 가야 한다는 우수개소리가 있죠.
근데 블록이 만들어 졌다고 생각했는데, 블록의 경합 과정에서 패배하게 되면 결제가 취소될 수 있지 않나요?
비트코인은 어떤 방식으로 이중 지불을 막고 있나요?
안녕하세요. 류쨩입니다.
비트코인에서 이중 지불에 대한 해결 법은 합의알고리즘인 Proof Of Work을 사용하는 것입니다.
누군가 없는 돈을 만들어 전송 하거나, 이미 사용된 금액을 가지고 재사용하는 문제를 '작업증명'을 통해 막아낸 것이죠.
또, 51%의 공격으로 생길 수 있는 이중지불이 있는데 아마 'nujabesnow'님이 말씀하신 이중지불과 같은 예제라고 생각합니다.
비트코인에서는 이러한 이중지불 문제를 '가장 긴 체인이 옳은 체인이다.' 라고 하여 해결했습니다.
그렇기 때문에 거래소 혹은 비트코인 결제 가맹점의 경우, 이중지불의 문제를 방지하기 위하여 3~6 Confirm을 기다립니다.
블록 Finality가 확정 될 때까지 기다리는 것이죠.
이중 사용은 시스템 측면과 상거래 상의 사용자 측면으로 분리해 볼 수 있습니다.
시스템 측면에서는,
블록에 트랜잭션을 기록하기 전에 모든 노드는 반드시 무결성을 모두 검토하므로, 이중 사용을 시도하는 트랜잭션은 둘 다 폐기되거나 둘 중 하나만이 기록되므로 어떤 경우든 이중 사용은 일어나지 않습니다. 따라서 항상 완벽히 보호 됩니다.
상거래 상의 사용자 측면에서는,
완전히 거래가 안정화 되기전에 물건을 주게 되면, 위에서 설명한 경우에 따라 (둘다 폐기 혹은 부정 사용만 기록된 경우) 사기를
당할 수가 있습니다. 따라서, 우선 거래가 기록되고 이후 최소 6개이상의 블록이 만들어 질때까지 기다려야만 합니다.
종합하면, 시스템 측면으로서는 어떤 경우든 이중 사용은 무결성 검증을 통해 완벽히 해결했습니다만,
상거래 상에서는 오랫동안 기다리는 방법이 유일하게 이중 사용을 막는 방법입니다.
실제 말씀하신데로 일어날 가능성은 있습니다.
하지만 비트코인에 화이트페이퍼에 의하면 확률적인내용이 많습니다. 따라서 확률적으로 0에 수렴하는 6컨펌을 기다리는 이유중 하나입니다.
하지만 보통은 금액이 적은것에서는 단순히 트랜잭션만 보냈다는 내용에서 궈래를인정해 주는 경우도있습니다.