1. Double spending 이중지불
현금을 사용하면 이중 지불이 문제되지 않는다. 현금을 줘버리면 끝나니까.
그러니 디지털 거래의 경우 데이터를 기반으로 작동하기 때문에 이중 지불을 할 수도 있다.
A는 K뱅크에 있는 1,000원을 B와, C에게 동시에 송금하고 싶다는 호기심이 발동하였습니다. 그래서 컴퓨터를 이용하여 인터넷 뱅킹에 접속한 후 B에게 1,000원을 송금할 준비를 합니다, 마찬가지로 동시에 이번엔 모바일에서 C에게 송금할 준비를 한 후 동시에 송금하기 버튼을 눌렀다면 결과는 어떻게 이루어질까요? - 출처 https://steemit.com/kr/@yahweh87/23-double-spent
전자 결제에 있어 이중 지불 문제를 해결하기 위해 비트코인에서는 p2p 기반의 분산 서버를 통해서 트랜잭션의 연대기적 순서를 증명하고자 하는 블록을 만듦으로써 해결하고자 합니다. 이를 쉽게 말해서 block chain이라고 부릅니다.
we propose a solution to the double-spending problem using a peer-to-peer distributed timestamp server to generate computational proof of the chronological order of transactions.
ref)
https://academy.binance.com/ko/articles/double-spending-explained
https://steemit.com/kr/@yahweh87/23-double-spent
2. non-reversible Tx (되돌릴 수 없는 거래, 취소하기 어려운 거래)
거래가 한 번 이루어지면 취소할 수 없어야 한다는 것이 핵심이다.
이중 지불한 뒤에 취소하여 다시 금액을 수취하는 오용을 막기 위해 거래는 non reversible 이어야 한다.
그러나 3rd party에서 이러한 거래를 만드는 것은 불가능하다. 3rd part 금융회사가 책임을 지고 환불을 요청을 처리해줘야 하기 때문이다.
이 개념은 조금 이해하기 어려울 수도 있는데, 이는 우리가 물건에 문제가 있으면 '환불'해주는 것이 너무 당연하고 이 환불 절차를 중개하는 금융기관이 있는 것이 너무 당연하게 느껴지기 때문이다. 그러나, 암호 화폐를 통한 거래에선 에스크로 결제를 금융기관을 거치지 않고서도 암호학적으로 가능하기 때문에, 이러한 환불 절차 자체가 필요 없게 거래 방식을 설계할 수 있습니다.
ref) https://en.bitcoin.it/wiki/Irreversible_Transactions
Bitcoin p2p Network가 어떻게 진행되는가
1) 새로운 트랜잭션이 참여한 노드들에게 모두 알려진다
2) 각 노드들은 새로운 트랜잭션을 블록에 넣는다.
3) 이제 이 블록을 블록의 체인에 붙이기 위해서 nonce를 찾기 위한 채굴을 시작한다. POW!
4) 만약 특정 노드가 nonce를 찾아냈다면 다음 블록의 헤더에 들어가는 전 블록의 해쉬값을 넣는 것으로 해당 노드가 nonce를 풀었다는 것을 승인함으로써 블록이 블록체인에 포섭된다.
5) 블록 바디에 있는 첫 트랜잭션은 해당 블록체인에 블록을 추가한 노드에게 주는 인센티브(코인)이다. 블록을 추가하면 코인을 주기 때문에 채굴자들이 계속 블록을 추가하기 위해 컴퓨팅 파워를 쏟을 유인이 생기는 것.
p2p 네트워크의 단점
비잔틴 장군 문제 (악의적 노드가 하나라도 있으면 네트워크 전체 신뢰 불가)
그러나 비트코인 백서에선 POW 방식, 즉, 컴퓨팅 파워를 가장 많이 소비한 노드가 대표의 역할을 담당하게 되면서 비잔틴 장군 문제를 해결하는 합의 알고리즘을 만들어냈다고 주장한다. 물론 이는 후발 코인들에 있어서 POS 방식으로 대체되거나 cosmos의 경우 POH(proof of history) 등 새로운 방식으로 해결하는 방식으로 변화 중.
Docs)
BTC 공식 홈페이지 : https://bitcoin.org/ko/