비트코인의 플랫폼에 대해서 알아보자!

in #iost6 years ago

I_UDA0wFaXxM2pQi9cb8-oy_18sc.jpg
안녕하세요! IOST 빵인입니다
이번에는 저번에 이더리움 플랫폼 분석에 이어서 암호화폐의 가장 기초가되는 비트코인의 플랫폼에 대해서 분석해보도록 하겠습니다.


개인적으로 비트코인의 플랫폼은 제가 가장 재미있게 보고 있는 형식을 띄고 있습니다. 이 특징으로 인해서 비트코인과 비트코인캐쉬가 분리되는 하드포크가 발생하기도 하기 때문입니다. 우선 하드포크에 대해서는 찬찬히 알아가보록 하고 가장 기본이 되는 합의 모델에 대해서 먼저 알아보도록 하겠습니다.

1. 합의 모델

비트코인은 컴퓨틍 파워를 기반으로 하는 작업 증명 합의 (Proof of work)방식을 채택하고 있습니다. 작업 증명 합의 방식이란, 거래정보의 뭉치들이 체인처럼 연결되어있는 지금도 계속이 생성되어 이어지고 있는 블록체인 위에 새로운 블록을 블록체인에 추가하는 '작업'을 완료했음을 '증명'하는 것 입니다. 블록체인에 새로운 블록을 추가하기 위해서는, 새 블록의 정보들을 암호화 시킨 블록 해쉬값을 계산해내야 합니다. 이 해쉬를 계산하기 위해서는 그 블록의 블록 헤더 정보 중의 하나인 nonce값을 계산을 통해 알아내야 합니다.

즉, nonce값을 구하는 것이 바로 작업의 증명 proof of work라고 할 수 있습니다.

2. 고아블록

블록체인은 거래정보들이 블록에 저장되어 있고 이렇게 만들어진 이 블록들이 체인처럼 연결되어 있습니다. 이때 , 메인체인과 메인 블록체인에서 쪼개져서 브랜치를 형성하는 2차체인이 존재하게 됩니다. 작업증명을 많이 한, 즉 누적 난이도가 큰 값을 가진 블록들은 언제든지 메인체인이 될 수 있으므로 이후 더 많은 증명을 하게 되는 2차체인이 메인 체인이 될 수 있습니다. 예를들어서 메인체인을 노란색, 2차체인을 파란색으로 표현해보겠습니다. 원래는 메인체인이 노란색이었지만, 2차체인인 파란색 체인이 누적 난이도 즉 더 많은 작업증명을 하게 되면서 파란색 체인이 메인체인이 된다면, 기존의 메인체인이었던 노란색 체인은 2차체인이로 변경되고, 이후로 노란색 체인에는 블록이 더 쌓이지 않게됩니다.

블록이 더 이상 쌓이게 되지 않는 2차체인을 '고아블록'이라고 합니다.

고아블록의 작업을 증명한 컴퓨팅 파워는 보상을 받지 못하게 됩니다. (메인블록에 포함되고 나서 승인이 되기 때문에 이는 가능합니다.) 그렇다면 고아블록체 생성된 거래들은 어떻게 처리될까요? 거래가 없던 것으로 무효가 되지는 않을까 걱정되실 것 같습니다. 그러나 Mempool에서 항상 트랜잭션들이 동기화기 되기 때문에 해당 거래들이 유실되는 일은 발생하지 않습니다. 또한 작업증명을 더 많이 한 체인에 고아블록이 이미 포함되어 있을 가능성이 매우 높고, 그렇지 않다고 하더라고 Mempool에 저장되어 있기 때문에 블록에 기록되는 우선순위가 늦어질 뿐 언젠가는 블록에 포함되게 됩니다. 이렇게 누적 난이도가 높은 체인이 메인체인으로 선택되고 유지되어 운영되게 됩니다. 이러한 메인체인을 Longest Chain, Greatest cumulative difficulty chain 라고 지칭하기도 합니다. 컴퓨팅 파워를 가진 노드들은 작업증명을 열심히 할 뿐만 아니라 빠르게 전파시켜서 본인이 생성한 체인이 채택될 수 있도록 노력합니다. 따라서 자신이 채굴한 체인을 전파하는 것도 열심히 합니다.


3. 컨펌

제가 거래를 한다면, 제 거래가 즉각적으로 발생하는 것이 아니라 '컨펌'이라는 과정을 거친 뒤 내 코인이 다른사람에게 전달이 되는 거래가 발생하게 됩니다. 그렇다면 '컨펌'이라는 것은 어떤 것을 확인하는 것일까요? 내가 다른 사람에게 코인을 전달하는 이 거래가 블록에 담겨서 발행되었는가를 확인하는 과정입니다. 일반적으로 온라인 결제에서는 1~2 컨펌이 나야 거래가 발생하고 보수적인 경우 6컨펌이 발생해야 거래가 발생하게 됩니다.

쉽게 말해서 자신의 거래가 등록된 블록 이후로 블록이 얼마나 길어졌는가를 확인해야 거래가 발생하게 된다는 것입니다. 6컨펌의 예로 보면 자신의 거래가 담긴 블록의 컨펌 이후로 5개 블록이 더 컨펌되었다는 것을 의미합니다. 이렇게 6컨펌이 행해지고 나면 해당 거래는 영원히 기록되고 거래가 완전히 발생하게 된 것입니다.

그렇다면 딜레마에 빠지게 됩니다. 거래 발생을 확정짓기 위해서 컨펌이라는 과정이 필요하지만, 이 컨펌이라는 과정은 많은 시간을 소요하게 되고 바로 바로 거래가 발생해야 하는 실생활과는 거리가 멀어지는 상황이 발생하게 됩니다. 따라서 이러한 점을 해결하기 위해서 고안된 것이 0 컨펌입니다. 0컨펌이란 내 거래가 등록된 블록 이후에 얼마나 많은 블록이 꼬리가 생성되었는지 컨펌의 과정을 거치지 않고 바로 거래를 발생시키는 것입니다. 그렇다면 이 0컨펌은 언제 허용이 될까요? 0컨펌은 컨펌의 과정을 거치지 않기 때문에 이중지불의 위험을 안고 있습니다. 따라서 이러한 이중 지불의 위험이 없는 경우 0컨펌을 허용하고 있습니다.
이중지불의 문제가 없는 상황은 신원이 확인된 사람과 사전 계약된 지인간의 거래, 소액의 오프라인 거래 등이 있습니다. 이렇게 바로바로 결제를 해야 하는 상황에서는 0컨펌을 이용하고 있습니다.

4. 용량 + 블록 생성 시간

비트코인은 블럭당 1MB를 최대로 생성합니다. 세그윗 이후, 서명 데이터 분리로 인해 최대 1MB 거래, 3MB 서명을 포함할 수 있습니다. 따라서 실질적인 용량은 최대 4 MB이지만, 대체로 1MB 내외로 용량을 담고 있습니다. 현재 기준 1블록당 2000~ 3000건의 거래가 승인됩니다. 또한 11월 기준 제네시스 블록이후로 약55만개 블록이 생성되어있습니다. 또한 블록 하나가 생성이 되는데 평균 10분에 하나가 생성될 수 있도록 난이도가 조절됩니다. 실제로는 블록이 하나 생성되는 데에는 30분~ 40분정도의 시간이 소요됩니다. 블록에 등록되는 1거래당 200바이트 내외이며 거래당 5,000~ 20,000사토시 정도를 사용하며 1 BTC 700만원 기준 350~ 1,500원의 송금 수수료가 발생합니다.

다음 포스팅에서는 최근 이슈가 되었던 SV vs ABC를 분석하기 위해 역대 하드포크에 대해서 알아보겠습니다.


IOST 공식 홈페이지 : http://iost.io
Steemit: https://steemit.com/@iostoken-kr
Facebook : http://bit.ly/IOSTKr_fb
Twitter : http://bit.ly/IOSTKr_twitter
Kakao : http://bit.ly/IOSTKr_kakao
Telegram : http://bit.ly/IOSTKr_telegram