반응형

1. 이중 지불(Double Spending)이란?


A, B, C란 사람이 있을때 A가 1비트를 가지고있다고 가정하고

이것을 B한테 1비트를 보냈는데 C에게도 1비트를 보낸다는 상황을 가정해보자.


이제 A가 1비트를 B에게 보낸건 Tx1이라 하고

A가 1비트를 C에게 보낸걸 Tx2라 해보자.


가정 1. 

Tx1, Tx2가 같은 블록에 담기게 되는 경우


실제로 내가 가진게 1비트밖에 없기에 먼저 트랜잭션 처리된것만 성립하고 뒤에 실행된 명령은 무효가 된다.


즉, 같은 블록에 담기게 되는 경우 트랜잭션이 우선적인 것이 유효하다고 판정된다.



가정 2.

Tx1, Tx2가 서로 다른 블록에 담기게 되는 경우


이때는 작업의 증명(PoW)에 의해 블록체인이 긴 노드가 살아남게 된다.


그 체인이 살아남기 위해서 즉, 더 긴 체인이 되기 위해서는 6개의 블록이 승인을 받아야 확정지을 수 있게 된다.

(이것을 블록체인 6 컨펌이라 한다.)


그리고 실패로 돌아간 블록안의 Tx들은 다시 mempool에 들어가서 다시 승인을 받기위해 기다려야한다.


이제 블록체인을 공부해오고 있는 입장이라면 다음과 같은 상황에 대해 생각해보아야한다.




6개의 블록이 승인을 받아야 확정받는다는데 그럼 


Block#1이 확정지어지려면 Block#6까지 마이닝이 성공돼야한다는것이다.


그럼 Block#2~Block#6안에있는 트랜잭션은 아직 불확실한게되고


Block#1이 확정되기까지는 비트코인에서 1개의 블록이 10분마다 마이닝되게 설계됐으니 


6개면 60분을 기다려야한다는 것이다.


즉, 하나의 거래가 완벽히 성사되려면 60분을 기다려야하는걸까?


이를 위해 비트코인의 블록체인에서는 0~6컨펌이라는 개념을 도입하였다.





2. 컨펌(Confirm)



우리는 컨펌이라는 개념을 이제 알아볼 것인데 앞서 우리는 


하나의 블록이 완전한 승인을 받기 위해서 6개의 블록이 확정을 받아야한다고 들었다.


그렇다면 위의 질문처럼 우리는 60분을 기다려야 하게 될 것이다. 



하지만 한번 생각해보자.


누가 카페를 가서 5천원에 해당하는 코인을 내고 60분이나 기다렸다가 확정되면 커피를 받아서 카페를 이용할까?


만약 이렇게 블록체인이 실생활에서 동작한다면 아무도 쓰지 않게 될 것이다.


하지만 비트코인 결제는 사실상 그렇게 대충만들지 않았다.


60분이 걸리는 것이 아닌 10분도, 몇 초도 걸리지 않는다는 것이다! 


그 이유는 컨펌이라는 개념중 0 컨펌 결제라는 개념이 있기 때문이다.




비트코인에서 트랜잭션을 보내면 모든 마이너들은 해당 거래를 검증하게 된다.


그리고 올바른 트랜잭션이라 검증이 된 후에야 블록에 들어갈 자격을 얻게 된다.


즉, 블록 하나를 발행하는데는 10분이 걸리지만 이 트랜잭션을 검증하는데는 몇 초도 걸리지 않게 된다는 것이다.


즉, 블록에 포함될 올바른 거래라는 것만 검증하고 승인해 주는것이 바로 0 컨펌이다.






3. 이중 지불과 컨펌간의 관계


그렇다면 0컨펌은 이중 지불에서 안전할까?


정답은 99.9% Yes라고 말할 수 있다.


그 이유는 0컨펌은 오직 오프라인상에서만 해주기 때문이다.


다시 한번 잘 생각해보자.


온라인에서 이중 지불 문제가 될 수 있는 것은 A라는 사람이 1비트코인밖에 없는데 두 사이트를 동시에 띄어두고 


1비트코인짜리 물건을 두개 동시에 산다고 하면 이중 지불 공격을 할 수 있게 된다.(물론 결국 막히겠지만)


그렇다면 오프라인에서 이중 지불을 하기 위해서는 사람이 동시에 두군데 있어야 한다는 것이다.


이러한 상황은 절대적으로 불가능하니 오프라인 상에서는 0컨펌을 할 수 있을 것이다.



두번째로 하나의 통장에 2개의 카드를 이용하여 두 사람이 다른곳에서 동시에 결제한다 생각해보자.


이 경우에는 가능하다. 하지만 모든 곳에 cctv가 존재하고 오프라인 상에서 자신을 노출하며까지 5천원을 위해 사기를 치는 사람은 없을 것이다. 즉, 자신의 신원이 모두 밝혀진 상태에서 낮은 금액을 이중지불 할 가치가 부족하다는 것이다.


물론 돈의 단위가 올라가면 1컨펌 정도는 처리할 수 있게 될 것이다.



결국 0~6컨펌은 안전성의 강도를 나타내는 확률적 지표를 의미하게 되는 것이다.


수질검사에서도 1등급이면 물이 더러울 수 없다는 것이 되듯이 말이다.








반응형

'Applied > Blockchain' 카테고리의 다른 글

머클트리(Merkle Tree)  (0) 2018.04.23
작업 증명(Proof of Work, PoW)  (0) 2018.04.21
블록체인 관련 자료  (2) 2018.03.23
블록체인 튜토리얼(Blockchain Tutorial)  (0) 2018.03.20
블록체인(BlockChain)이란?  (0) 2017.12.31