[비트산책] 커피를 비트코인으로 사려면 얼마나 기다려야하나요?
[비트산책] 커피를 비트코인으로 사려면 얼마나 기다려야하나요?
"카페에서 아이스아메리카노를 비트코인으로 결제하게 되면 1시간동안 기다려야 해"
카페에서 비트코인으로 결제하면 오래기다려야 한다는 얘기를 종종 들어왔습니다. 이 때문에 결제에 사용 할 수 없다고들 합니다. 이 얘기는 조금 낯설 수도 있는데, 거래소에서 다른 거래소로 비트코인을 옮길 때 오랫동안 기다려본 경험은 다들 있을 겁니다.
혹시 왜 그렇게 기다려야하는지에 궁금해보신적 없나요?
오늘 제가 그 답을 가져와 봤습니다.
그 답을 설명하기전에 한가지 개념에 대해서 설명해드리려고 합니다.
Finality
The Finality( 완결성) : Finality guarantees that history will never be changed!
바로 완결성이라는 개념입니다. 완결성이란 역사가 절대 변하지 않을 것이란걸 보증한다는 뜻입니다. 조금 난해하죠? 더 쉽게 표현해보겠습니다. 제가 카페에 커피를 사먹기위해서 5000원을 카드로 결제했습니다. 한번 결제하고나면 이 기록되고나면 절대로 바뀌지 않는다는 뜻입니다. 너무나 당연한 얘기입니다. 그래야 사장님이 저에게 커피를 내줄 수 있는 것이죠.결제할때 완결성이라는 것이 매우중요합니다. 이건 돈을 보냈다는 것이 보장이되고 이를 통해 거래의 불확실성을 제거해주기 때문이지요.
아이러니하게 비트코인의 경우에는 이처럼 Finality가 보장되지는 않습니다.
비트코인의 문제
출처 : Pixabay
다시 처음의 카페로 돌아가겠습니다.
제가 카페에가서 아메리카노를 사기위해서 1btc을 카페 사장님께 전송했습니다. 카페사장님은 저에게 바로 아메리카노를 만들어 줄 수 없었습니니다. 왜냐면 비트코인은 바로 Finality 완결성을 보장해주지 않기 때문입니다. 10분이 지나 블록이 형성되어도 만들어 주지 않았습니다. 그래도 완결성이 보장되어있지 않아서죠.
이론상으로 다음과 같은 일이 가능합니다.
시나리오 1( 저는 1btc를 갖고있습니다.)
- 카페 사장님께 1btc를 보내고 커피를 받습니다. 이 거래는 a블록에 포함되어 있습니다.
- 또 따른 내 주소로 1btc를 보냅니다. 이 거래를 b블록에 포함시킵니다.
- 51%이상의 해시파워를 갖은 마이너와 짜고 b블록을 더 길게 만듭니다.
- 가장 긴 블록이 옳은 블록으로 인정하기 때문에 b 블록이 인정받고 a블록은 사라지게 됩니다.
- 카페사장님은 공짜로 커피를 내주게 됩니다.
이 걸 이중지불 문제라고 합니다. 이 문제가 발생할 가능성이 있기 때문에 완결성이 보장되지 않는 겁니다.
이것만 있는게 아닙니다. 다음과 같은 시나리오도 있을 수 있습니다.
시나리오 2
- 제가 카페 사장님께 보낸 거래는 a블록에 포함되어 있지만, b블록에는 포함되어있지 않았습니다.
- a블록과 b블록이 동시에 채굴되었습니다.
- 분기된 두가지 블록이 동시에 채굴되다가 b쪽이 더 길어져 옳은 블록으로 인정되었습니다.
- 그럼 이전에 보낸 거래는 사라지고 카페사장님은 공짜로 커피를 내주게 된 꼴이됩니다.
이처럼 비트코인은 거래가 일어난 후 완결성이 보장되지 않아서 바로 커피를 내어줄 수 없는 것입니다. 거래소 또한 똑같습니다. 다음과 같은 문제가 발생할 수 있어서 바로 내 아이디에 충전을 해줄 수 없는 것이지요.
비트코인의 완결성
" Finality is the guarantee that past transactions can never be changed "
블록체인에서 완결성이란 이전의 거래가 변할 가능성이 없다는 보장입니다.
하지만 비트코인이 끝가지 완결성을 얻을 수 없는 것은 아닙니다. 일반적으로 비트코인의 경우 6번 이상의 confirmation이 있으면 전송이 완료되었다고 간주합니다. 왜냐면 6개의 블록을 따라잡는 분기를 만들기 확률적으로 힘들기 때문입니다. 확률적으로 10%의 해시파워를 갖고 있다면 0.1%도 안된다고 합니다. 이렇게 6번 이상의 confirmation이 지나고 나면 커피사장님이 커피를 내줄 수 있고, 거래소에서 내 아이디에 비트코인을 추가해줄 수 있는겁니다. 이런 경우 Finality 가 Implicit 하다 또는 Probabilistic 라고 표현합니다.
(6번 이상의 confirmation이란 블록이 생성되고나서 그 블록 위에 5개 이상의 블록이 만들어 졌다는 의미입니다. 평균 블록 생성시간이 10분이니 60분이 지나면 확률적으로 완결성을 얻었다고 합니다.)
추가적인정보
- https://blockchain.info/ 여기서 트랜잭션 아이디를 검색하면 컨펌을 확인하실수 있습니다.
- 쿼라의 미국 아저씨는 아래처럼 하면 리스크를 줄일 수 있다고 합니다.
0 confirmations: less than $250
1 confirmation: $250-$2.5k
2 confirmations: $2.5k-$25k
3 confirmations: $25k-$250k
4 confirmations: $250k-$2.5M
5 confirmations: $2.5M-$25M
6 confirmations: $25M or more
마치며
지금까지 Finality 의 개념과 함께 커피를 비트코인으로 샀다면 기다려야만 하는지에 대해서 알아봤습니다. 사실 실제 커피를 살 때 쓴 돈으로 이중지불을 만들 가능성은 극히 드뭅니다. 배보다 배꼽이 더 크기 때문에 다음과 같은 일이 발생할 가능성이 드뭅니다. 조금 과장한 사례라고 할 수 있습니다. 소액을 거래 할 때는 1 컴펌이여도 상관 없습니다. 고액의 거래일 때는 꼭 확인해야 합니다. 만약에 조금 세월이 더 지난 뒤 비트코인으로 자동차를 사고 집을 사는 날이 왔을 때, 이 글을 기억하며 6 confirmation을 기억해 주셨으면 감사하겠습니다:)
재밌게 읽으셨고 유익하셨다면 팔로우/보팅/ 리스팀 부탁드리겠습니다:) 주관이 많이 담겨있습니다. 저도 아직 공부하는 중이라 틀린점도 많고 모르는 부분도 많이 있습니다. 토론할 거리, 혹은 제가 잘못 알고 있다면 언제든지 피드백 기다리고 있겠습니다.
( dofac0802@gmail.com 으로 메일로 보내주셔도 감사하겠습니다:) )
더하여
저는 블록체인이 앞으로 더 성장하고 미래의 핵심이 될 것이라고 생각하고 있습니다. 그래서 거의 모든시간을 블록체인에 대해 공부하는데 시간을 쓰고 있습니다. 스팀잇에도 정말 많은 분들이 블록체인에 대해서 공부하고 연구하는 것 같다는 생각이 들어 함께 공부하면 좋겠다라는 생각이 들었습니다. 그래서 함께 스터디 하실분을 찾고 있습니다. 아직 정해진 방법은 없고 함께 만나서 토의하고 서로 발표하는 자리를 만들고 싶습니다. 편하게 연락주시면 감사하겠습니다.
우선 지금은 백서스터디 생각하고 있습니다.!
https://open.kakao.com/o/seuIjvG
문의 주시면 단체방 알려드리겠습니다:)
스스로 홍보하는 프로젝트에서 나왔습니다.
오늘도 좋은글 잘 읽었습니다.
오늘도 여러분들의 꾸준한 포스팅을 응원합니다.
감사합니다:)
미래를 준비하시는 모습이 멋지시네요.!
좋은글 감사합니다.
읽어주셔서 감사합니다:) 앞으로도 더 좋은글 많이 올려보겠습니다.
좋은글 감사합니다~! 저 또한 미래의 핵심이 블록체인이 될 것만 같습니다~! 염치불구하고 앞으로 좋은 포스팅 부탁드립니다 ~ ^^;
아닙니다 :) 앞으로 유익한 글 많이 써보겠습니다 많이많이 찾아와주세요^^
으악.. 어렵습니다. 하지만 비트코인의 문제점들을 잘 찾아서 업그레이드 하는 과정들이 바로 블록체인 기술의 발전을 돕는 길이겠지요? 글 잘 읽었습니다~
더 쉽게 쉽게 설명하려고 노력하겠습니다. 어렵네요 더 쉽게 쓰는게 ㅜㅜ
읽어주셔서 감사합니다:)
블록체인은 참 언뜻 보면 간단한 구조인듯 해도 알면 알수록 여전히 복잡하고 어려운 것 같아요. 그래도 좋은 글 덕분에 많은 도움을 받았습니다. 감사합니다 !
맞습니다. 사실 내부원리는 어렵죠 모두가알필요도없구요. 우리가 인터넷은 쓰지만 모두가 인터넷의원리를 모르는것과같죠 ㅎㅎ
^^ 즐거운 스티밋!!!
감사합니다:)
이 문제 때문에 비트코인 캐쉬가 나왔죠. 비캐는 제로컨펌으로 즉시지불이 가능합니다. replace by fee 가 없기 때문이죠.
--> 비트코인 백서를 보면 푸아송 분포를 통해 수학적으로 증명하는데요. 그런데 만약 6개의 분기를 따라잡는다 해도 문제는 없습니다. 그 이유는 가장 작업량이 많은 체인이 선택되기 때문입니다. 두 개의 체인이 존재할 때 길이가 짧은 체인이 블록을 빨리 생성해서 길이가 자신보다 길었던 다른 체인을 따라 잡으면 일시적으로 두 개의 체인이 height는 같지만 나중에 따라잡은 체인의 경우 작업량이 더 적으므로(빨리 계산했으니 계산량이 적음) 노드들에 의해 선택되지 못합니다.
먼저 replece by fee는 mem pool에 있는(아직 채굴되지 않은) 거래가 존재하고 이보다 더 높은 수수료의 거래를 다시 재요청할 시(수수료만 다르고 동일한 거래) 앞서 요청한 아직 컨펌되지 않은 거래를 취소하는 것입니다.( 결과적으로 수수료만 변경되는 셈. 앞선 거래의 수수료는 당연히 수수료가 더 낮게 설정되있는 상태)
단순히 어떤 사용자가 어떤 Tx를 노드에 요청하면 아시다시피 해당 Tx는 Mempool에 저장되고 이 Tx들은 다른 노드들에도 브로드캐스팅 됩니다. 그런데 어떤 노드가 replace by fee 프로토콜을 어기고 수수료가 높은 거래를 다른 거래로 취급한다면 중복지출이 발생할 가능성이 있습니다.
--> 사회경제적인 이유로 그런 노드가 없을 것이라다고 반박은 가능합니다. 그러나 네트워크 전파지연에 따라 고아 블록이 어쨋든 존재할 가능성이 항시 존재하는 POW의 특성상 제로 컨펌을 on chain에서 100% 신뢰하는 것은 위험합니다.
완전 친절한설명 감사합니다:) 많이배웠습니다. replace by fee 하고 제로 컨펌하고는 상관없어 보이는 것 같네요👍
비트코인 캐시에대해서는 잘모르고있었습니다. 그냥 블록사이즈만 키운줄 알앗는데 아니였군요. 실례가 되지 않는다면 replace by fee에 대해 설명을 부탁드려도 될까요??
비트코인이 컨펌이 필요한 이유는 replace by fee 펑션을 코어팀이 추가했기 때문인데, 이게 뭐냐면, 만약 1비트코인을 물건을 사고 결제했다고 가정하면, 컨펌전이라면, 추가로 fee를 그 트랜잭션을 취소하거나 수정할수가 있습니다. 그러면 머천트는 지불을 못받을 가능성이 생깁니다. 그래서 비트는 반드시 컨펌이 필요해서 상거래에 쓰기가 힘듭니다. 수수료도 비싸지만, 컨펌전에는 지불을 확신할수가 없기 때문이죠.
하지만 비캐는 replace by fee 펑션이 없기 때문에 일단 센드버튼을 누르면 수정이 불가능합니다. 그래서 컨펌전이라도 머천트는 안심하고 결제가 된것으로 판단할수가 있죠. 이걸 제로 컨펌이라고 합니다. 이 제로컨펌은 상거래에 있어서 매우 중요합니다. 센드하는 즉시 멤풀에 5초내에 뜨고 unconfirmed 상태일지라도 머천트는 자신이 지불받을 수 있다는 신뢰를 주기 때문이죠.
백서 스터디라.. 정말 열심히 하시네요
저도 그 동안 미뤄왔던 코인 공부 좀 다시 해야겠어요 ㅋㅋ
Congratulations @piljae! You have received a personal award!
1 Year on Steemit
Click on the badge to view your Board of Honor.
Do not miss the last post from @steemitboard!
Participate in the SteemitBoard World Cup Contest!
Collect World Cup badges and win free SBD
Support the Gold Sponsors of the contest: @good-karma and @lukestokes
쉽게 이해될 수 있는 글 감사드립니다!