#23 - 이중 지불(Double Spent)에 관한 개념 정리!

in #kr7 years ago (edited)


38_main.jpg


안녕하세요. 어미새입니다.


지난 포스팅에서는 51% 공격에 관한 개념정리를 하였습니다. 이번 포스팅에서는 이중 지불(Double Spent)이란 무엇인지에 대한 개념정리를 해보도록 하겠습니다.




A는 K뱅크에 있는 1,000원을 B와, C에게 동시에 송금하고 싶다는 호기심이 발동하였습니다. 그래서 컴퓨터를 이용하여 인터넷 뱅킹에 접속한 후 B에게 1,000원을 송금할 준비를 합니다, 마찬가지로 동시에 이번엔 모바일에서 C에게 송금할 준비를 한 후 동시에 송금하기 버튼을 눌렀다면 결과는 어떻게 이루어질까요?


순수하고 궁금한 마음으로.. 호기심에 해본적 있지 않습니까?




이중 지불(Double Spent)


이중 지불 문제는 말 그대로, 단일 화폐 단위가 두번(이중) 결제되어 발생하는 문제입니다.


은행의 경우 중앙제어 시스템이 있기 때문에 거래 요청이 발생한 순서대로 거래를 진행하면 이중 지불 문제가 발생할 수 없습니다.


예를들어 A의 잔고가 1,000원 밖에 없는 상태에서 A가 B에게 1,000원 송금을 요청함과 동시에 C에게도 1,000원 송금을 요청했을 경우 중앙 제어 시스템은 먼저 들어온 거래를 순차적으로 처리하면됩니다.


B에게 송금하는 거래가 먼저 들어왔다면, 해당 거래를 처리하고 잔액을 차감합니다. 그리고 A의 통장 잔고는 이미차감이 되었기 때문에 C에게 송금 요청을 했던 거래는 잔액 부족 오류를 출력하면 되겠죠?


중앙에서 관리하는 기구나, 신뢰할 수 있는 단체가 없는 비트코인에서는 어떻게 이중 지불 문제를 해결했을까요?


비트코인 네트워크는 작업 증명방식의 합의 알고리즘을 이용하여 이중지불 문제를 해결하였습니다. 정확한 원리를 이해하기 위해서는 비트코인의 거래원리와, UTXO의 개념정리가 필요합니다.




비트코인은 어디서왔죠?


비트코인 거래를 하기 위해서는 기본적으로 비트코인이 있어야 하며, 비트코인을 보유하고 있다는 의미는 누군가로 부터 비트코인을 수신 받았다는 의미가 됩니다.


'채굴'을 통해 신규 발행된 코인을 받았던지, 원화로 비트코인 구매 진행을 하여 판매자로부터 비트코인을 받았던지 어쨋든 코인을 받았던 기록이 있어야지만 비트코인을 소유하고 있다는 의미가됩니다.


블록체인에 기록된 거래 내역 중 받기만 하고 아직 소비하지 않은 거래 정보를 UTXO라고합니다.


이중 지불 문제는 단일 통화를 2번 사용하게 되서 발생하는 문제입니다. 즉 소비되지 않은 UTXO 정보가 2번 사용되지 못하도록 제어할 수 있다면 이중 지불 문제를 해결할 수 있다는 의미입니다.




A가 B와 C에게 1 BTC를 전송하는 트랜잭션을 생성 후 동시에 각 노드에 전파합니다. 그리고 각 노드는 A가 보낸 트랜잭션의 유효성을 검증한 후 Mempool에 트랜잭션을 업데이트합니다.


채굴자(마이너)는 Mempool에 대기중인 트랜잭션 정보를 블록에 담고 블록 해시 값을 생성하겠죠? 이때 동일한 UTXO 정보를 사용한 트랜잭션을 한 블록에 담을 수 없는거죠!


만약 Bird 마이너는 B에게 보낸 트랜잭션을 담아 블록을 생성했고, Caw 마이너는 C에게 보낸 트랜잭션을 담아 블록을 생성했다고 가정해도, 두 거래 중 하나는 고아 블록으로 거래가 인정되지 않기 때문에 이중 지불 문제를 해결할 수 있습니다!


추가로 블록체인에 연결된 거래 내역의 UTXO 정보는 소비된 거래 정보로 변경되어, 더 이상 사용할 수 없습니다. (UTXO에 대해 이해가 안되신다면 제가 작성한 UTXO편을 참고 바랍니다.)




오늘은 이렇게 이중 지불이 무엇이고 비트코인에서 어떻게 이중 지불 문제를 해결했는지에 대한 개념정리를 하였습니다. 다음 포스팅에선느 피니 어택, 레이스 어택과 같은 문제들이 무엇인지에 대한 소개를 이어가도록 하겠습니다.


아침부터 비가 많이오네요.. 다들 지각하지 않게 조심해서 출근하세요! (저는 항상 일찍나와서 글을 쓰고 있습니다.. 외롭게..사무실에서..헤헷:)


이상 읽어주셔서 감사합니다!



[참고 자료]

https://steemit.com/kr/@loum/double-spending

https://steemit.com/kr/@loum/6wx4fd

https://steemit.com/kr/@twinbraid/25pexx

https://withkairos.wordpress.com/2015/06/14/mastering-bitcoin-2-%EB%B9%84%ED%8A%B8%EC%BD%94%EC%9D%B8%EC%9D%80-%EC%96%B4%EB%96%BB%EA%B2%8C-%EB%8F%99%EC%9E%91%ED%95%98%EB%8A%94%EA%B0%80-how-bitcoin-works/

Sort:  

이중 지불 기본적인 부분인데 암호화폐에서 어떻게 처리할지는

생각해보지 못했었는데.. 좋은 글 감사합니다!

즐거운 하루 되세요^^

@choim 님도 즐거운 하루보내세요!

오 좋은정보 감사합니다.
비트코인은 환불도 가능하나요 ?
스팀잇을 보면 7일지난글은 삭제 못하는데 비트코인도 비슷한가요 ?

각 시스템에서 사용되는 블록체인 기술은 조금씩 달라요~
삭제의 의미가 거래기록의 삭제라면 블록에 적힌 순간부터 거래 기록 삭제는 불가능합니다.

비트코인에서 환불이라는 개념은 없습니다~ 환불은 어떤 물건을 사고 지불한 금액을 돌려받는거잖아요? 비트코인은 오직 화폐를 입/출금 하는 기능만있어요~

이게 이중지불의 문제군요.. 유시민이 티비에서 얘기하길래 무슨얘긴가했습빈다 ㅋㅋ

도움이 되셨다면 좋겠네요~ 저도 아직 내공이 부족하여.. 잘 내용이 전달되었을지 걱정입니다~ 오늘 하루도 즐거운 하루보내세요~ ^^;

Coin Marketplace

STEEM 0.18
TRX 0.16
JST 0.030
BTC 64866.50
ETH 2555.14
USDT 1.00
SBD 2.65