저번 시간에 비트코인은 제3자 중계 신용기관없이 전자 지불 거래가 가능한 시스템을 구축하는데 그 목표가 있다는 것을 살펴보았습니다.
오늘은 이중지불 문제(double spending problem)에 대해서 살펴보기로 하겠습니다.
'1. 이중지불 문제란?
예를 들어 길동이 전자 결재로 철이에게 $400을 지불하려하고, 민아에게 $500을 지불하려면 얼마의 돈을 가지고 있어야 할까요?
네, 맞습니다. $900 이상의 돈이 있어야 합니다. 하지만 만약 길동이 $500을 가지고 철이에게도 전자 결재를 하고 민아에게도 전자 결재가 가능해진다면 어떻게 될까요?
길동은 충분한 돈이 없지만 철이와 민아에게 결재를 하여 시스템은 오류를 일으키게 됩니다. 이것을 이중 지불 문제라고 합니다.
'2. 왜 이중지불 문제가 발생할까?
은행이 있다면 이중 지불 문제가 발생하지 않도록 길동이가 전자 결재를 할 때마다 잔고(balance)를 확인하여 처리합니다. 따라서 잔고(balance)가 부족한 경우에는 결재되지 않도록 할 수 있습니다.
예를 들어 먼저 길동이가 전자 결재로 철이에게 $400을 지불합니다. 그러면 길동의 잔고는 $100이 됩니다. 그런 다음에 길동이 다시 전자 결재로 민아에게 $500을 지불하려고 하면, 잔고 부족으로 결재되지 않게 됩니다.
그러나 이러한 은행과 같은 중앙 시스템이 없다면 어떻게 이중지불 문제를 해결할 수 있을까요?
'3. 블록체인으로 이중지불 문제를 해결하다.
해결방법은 블록체인에 참여한 모든 참여자들이 길동의 전자 결재 내역을 보고 합당한지 또는 합당하지 않은지를 결정해주는 것입니다.
이때 모든 참여자들의 51% 이상이 이 전자 결재가 합당하다고 판단을 하면 전자 결재는 수락이 되어 처리가 됩니다. 만약 다수가 합당하지 않다고 판단을 한다면 전자 결재를 처리가 되지 않습니다.
모든 참여자들은 이중 지불 문제에 대해서 합리적으로 생각할때 옳지 않다고 판단할 것입니다.
예외를 두거나 이번 거래를 수락해버리면 길동이 얻은 이익만큼 누군가는 손해를 봐야하기 때문입니다. 그 손해를 봐야 하는 사람이 민아일 수도 있으며 또는 내가 될 수도 있기 때문입니다.
그래서 모든 참여자들이 손해를 보지 않기 위해서는 이중 지불 결재는 올바른 결재라고 판단하지 않을 것이며 결국 은행과 같은 중앙 시스템이 없이도 이중 결재 문제를 해결할 수 있게 됩니다.
참 합리적인 방법 아닌가요?
다음에 또 이어서 이야기 나누어 보겠습니다.
'행복한 추석 보내세요.
세상에서 가장 안전한 비트코인 지갑 코인즈월렛입니다.
참고자료
- 알고보면 레고보다 쉽다! '블록체인' http://www.msip.go.kr/webzine/posts.do?postIdx=261