가상화폐 채굴 바로알기 - 작업증명(POW)과 지분증명(POS) 2편

in #kr6 years ago (edited)

가상화폐 채굴 바로알기
작업증명(POW)과 지분증명(POS) 2편

1편- 채굴의 개요 

1편에서는 가상화폐를 채굴한다는 것이 무엇을 의미하는지 알아봤습니다. 2편에서는 대표적인 채굴방식인 작업증명과 지분증명을 공부해보겠습니다. 

*작업증명(POW)

먼저 작업증명입니다! 영어로는 Proof of Work 입니다. 가장 먼저 나오고, 보편화 되어있는 채굴 방식입니다.
그러나 점차 사라지고 있는 방식이기도 합니다.
여하튼요, 최초의 가상화폐 비트코인은 당연히 이 채굴 방식을 사용합니다.
그 뒤에 나온 이더리움도 현재는 POW 방식으로 채굴되고 있습니다.

작업증명은 말에서도 느껴지듯이, 블록을 만들기 위해서는 채굴자가 "일"을 해야합니다.
1편에서 말씀드렷듯이 이 일은 실질적인 이체내역 검증(본업)과는 하등 관계가 없습니다. 소위 잡일이죠..
이것은 네트워크의 룰이므로, 채굴자는 "블록을 만드는 권한을 얻기 위해" 궁시렁대면서 해야합니다.
세상에, 심지어 그 권한을 얻기위해서는 남들보다 빠르게! 정확하게! 일처리를 완료 해내야합니다.
제가 그 일을 완료해냈어도 누군가 나보다 빨리 해냈다면? 꽝입니다. 1등만 기억하는 더러운세상..

그 일이 어떤일이냐면... 아주 어려운 수학 문제의 답을 구해내야합니다.
그것이 얼마나 어려운문제냐면, 그냥 1부터 하나하나 숫자를 대입하는 수밖에 없습니다.
이 세상에 풀이가 존재하지않는 문제거든요. 그건 이세상의 것이 아니야..

간단히 요약하고 왜곡하여 생각하면 문제는 다음과 같이 묘사 가능(?)합니다.
네트워크: "내가 1부터 100000...00000 사이의 한가지 숫자를 생각했어, 맞춰봐."
채굴자는 그 답을 맞추기 위해서... 하나..하나.. 답을 입력해봅니다. 정답을 맞출때까지요.
이게 "일"입니다.

제가 어느날 운좋게! 네트워크에 답은 2423124...5278969지? 라고 했는데, 우와! 맞췄습니다.
네트워크 상에서 가장 빨리요. 그럼 저는 비로소, 블록을 만들 권한을 받게 됩니다.
그렇게 되면? 수수료와 비트코인 생성분을 보상으로 가지게 되겠지요.


*도대체 그 단순 무식한 노동을 왜 해야해? 탈중앙화 네트워크의 신뢰성 문제

그 유망하다는 블록체인 기술의 대장, 비트코인을 채굴하는 것이 이렇게 볼품없는 것이었다니.
이걸 도대체 왜해야할까요? 그 이유는 블록체인 네트워크의 신뢰성 유지와 밀접한 관련이 있습니다.

자, 우리는 가상화폐의 모든 전송내역을 담고있는 것이 블록체인이라는 것을 배웠습니다.
다 기억하고 계시죠? 저번 시간에 배웠습니다. ㅎㅎ 걱정마세요. 수업시간이 아니니, 제 블로그에서 다시 보시면 됩니다.

우리가 지금까지 고려하지 않았던 것이 있습니다. 누구든 블록체인에 블록을 만들어 붙인다는 것이 참 이상합니다.
저희는 그 블록을 만든 "특정 사람"을 무슨 근거로 믿어야 하죠?
만일 그 사람이 조작된 이체내역을 담은 블록을 만들어, 이어 붙이려고 한다면요?


블록체인 네트워크 공격(해킹)은 무엇을 말할까?

여러분들은 블록체인 네트워크가 해킹으로부터 안전하다. 라는 이야기를 많이 들으셨을 것입니다.
아마 그 의미를 대충 짐작하고 있으시겠지만, 막상 알고보면 예상했던 것과 사뭇 다를거에요. 제가 그랬거든요.

"블록체인을 해킹한다"는 것은 블록체인에 저장되는 "이체 내역을 조작하는 것"을 의미합니다.
그것이 가능할까요? 네, 블록체인에서는 충분히 가능한 일입니다. 탈중앙화 되어있으니까요.

그럼 해커는 어떻게 이체 내역을 조작할까요? 다음은 가능한 시나리오 중 하나입니다.

해커는 열심히 채굴자로 활동을 합니다. 열심히 일을 하며, 블록생성 권한을 얻기를 기다립니다.
마침내 해커가가 블록 생성권한을 얻었을 때, 세상에 없던 이체내역을 만들어서 블록에 저장을 해버립니다.
철수가 100비트코인을 가지고 있군요? 철수가 해커의 지갑으로 10비트코인을 보냈다는 허위 이체내역을 저장해버립니다.
블록을 이어붙입니다! 

이런, 가만히 있던 철수가 10 비트코인을 도난당할 위기에 처해있군요.
하지만 걱정하지 마세요. 블록체인 네트워크는 그렇게 호락호락하지 않습니다.
착한 저도 역시 채굴을 하고 있거든요!

저는 네트워크에서 해커가 블록 생성권한을 얻어 새로운 블록을 만들었다는 사실을 듣게됩니다.
그래서 저는 그 블록을 받아 확인을 해봅니다. 어라? 근데 뭔가 이상하네요. 잔고 내역이 맞지가 않습니다.
엥? 살펴보니 저는 네트워크에서 전달받지 못한 철수->해커의 이체내역이 있군요?
저는 이상한 낌새를 눈치채고, 즉시 해당 블록을 무시합니다.

그러는 와중에, 또 다른 제 3의 채굴자 영희가 뒤늦게 일을 마치고 블록을 만들었다는 군요.
확인해보니 영희의 이체내역은 모든게 맞아 떨어집니다.
저는 영희가 만든 블록을 다운 받아 기존 블록체인에 이어 붙입니다.

그러나 제 바람과는 달리, 여전히 해커가 만든 체인은 네트워크 상에 존재합니다.
순진한 채굴자들이 저걸 믿어버리면 어떡하죠?


해커체인과 정상체인의 분리(split)과 경쟁!

네트워크에는 이제 해커가 만든 체인과, 영희가 만든 체인 2개가 존재합니다.
조금.. 더!...깊게! 들어가보겠습니다.

해커의 공격이 있기 전까지의 건강한 블록체인 내역을 A라 하겠습니다.
여기서 해커가 만든 허위 블록을 B1이라 할게요. 그럼 해커가 이어붙인 블록체인은 A-B1이 되겠네요.
영희가 만들어낸 정상 블록은 B2라 해보죠. 그럼 영희가 이어붙이고 제가 저장한 블록체인은 A-B2입니다.

이 서로 다른 두 체인은 네트워크 상에 아직 모두 존재하고 있습니다. 두갈래로 갈라진 나무가지처럼요.
이것들 중 어느 것이 진짜 체인이 될지는, 아직 모릅니다. 경쟁단계입니다.

하나는 결국 버려지게 되고, 다른 하나는 살아남습니다. 당연히 보상도 "살아남은" 체인의 채굴자에게만 지급됩니다.
경쟁의 결과, 승패는 어떻게 결정될까요? 

답은 블록 6개입니다. 6개의 블록을 "더" 먼저 이어붙인 쪽이 승리합니다.
모든 블록에 담긴 내역은 이후로 6개가 더 이어붙여지면, 최종 승인이 나게 됩니다. 이를 거래 확정이라 부릅니다.
그 때서야 블록마다 책정된 수수료 보상과 블록 보상이 지금되게 됩니다.

해킹을 방어하려면, 영희가 만든 블록체인에 6개의 블록이 더 빨리 이어져야 합니다.
즉, A-"B2"-C1-C2-C3-C4-C5-C6와 같은 체인이 해커 체인보다 빨리 완성되면 됩니다.

과연 모두의 바람대로, 영희의 체인이 승리해 해커로부터의 공격을 방어할 수 있을까요?
이것은 다음편에서 다루어보도록 합시다!

다음에 만나요~

*맺음말:

저는 한국의 가상화폐 투기 열풍이 가라앉고, 좀 더 성숙하고 건전한 시장 참여가 이루어지길 원합니다.
그러기 위해서는 블록체인이 무엇인지에 대한 이해가 필요합니다.
그러나 일반인이 쉽게 접근할 수 있는 정보 글이 아직은 너무 없는 것 같아요!
블록체인 기술에 대한 더 깊은 이해를 바탕으로 모두 건강한 투자 하시어, 부자 되었으면 좋겠습니다.
팔로우/댓글/보팅 감사드립니다. 더 알차고 신나는! 포스팅에 많은 힘이 됩니다.    


Sort:  

와우.~!! POW랑 POS의 원리에 대해 정말 궁금했었는데, 쉽게 설명 잘해주셔서 조금이나마 이해가 되네요.
리스팀할게요.~!! 추천.!!

앗, 정말 감사합니다^^ 여러가지 공부한 내용을 스팀에서 공유해보려고 가입했는데, 가입한 이래로 가장 기쁘고 힘이나는 일이로군요! 앞으로 남은 내용이 많으니 더 열심히 써볼게요. 다음편은 내일 오전에 업데이트됩니다ㅎㅎ

안녕하세요, seungjae1012님! POW에 대해서 자세히 설명해주셔서 감사합니다!

하나 궁금한 점이 있는데 네트워크가 제시하는 문제를 가장 먼저 푼 사람 1명만이 블록을 이어나갈 권리를 얻는다 라고 설명을 하셨는데 위 예에서 해커도 블록 B1을 잇고 영희도 블록 B2를 잇는데 어떻게 되는 건가요?!!!

업보트 하였습니다!

앗, 제가 오해의 소지가 있는 말을 했나보군요.
사실 한발 늦었더라도 블록을 무대뽀로 이을수는 있습니다.
다만 그렇게 이은 뒤늦은 블록은 결국 경쟁에서 살아남지 못할 가능성이 높습니다.
이에 대해서는 3편에 나올 번외목차를 보시면 도움이 될 듯 하군요.
코멘트감사합니다. 수정해야겠어요

정말 감사합니다. 알기 쉽게 설명해주셔서요!!

승재 센세님
넘나 재밌게 보고있습니다.
그런데 중간에 나온 말중에 '네트워크에서 전달받지 못한 이체'라는 말에서 네트워크라는건 무슨의미인가요?
한블록 생성시간 내의 이체내역들을 잠시보관하는 건가요? 그럼 그 내역들은 물리적으로 어떻게 보관되고있는건가요?

좋은 질문입니다. 네트워크는 블록체인 네트워크를 말합니다. 채굴자들 서버를 의미하고요.
사용자가 이체를 하려면 네트워크에 메세지를 보내야합니다. 즉, 채굴자들에게 메세지를 보내야합니다.
"나, 철수는 영희에게 1 비트코인을 전송할게요" 라는 식으로요. 이 전송메시지는 철수가 가진 프라이빗 키로 암호화되어 네트워크에 전달되고, 철수 지갑의 퍼블릭키로 해석할 수 있습니다.
해커가 인위적으로 조작하여 블록에 집어넣은 이체내역은 사실 철수의 프라이빗 키로 암호화되지 않았습니다. 정확히는 못했습니다. 따라서 쉽게 그 거짓말이 들통나게 됩니다. 철수의 퍼블릭키로 그 내역을 해독하려 했더니, 전혀 엉뚱한 답이 나오니까요.

제가 이해를 돕기 위해 전달받지 못했다고 표현했던 것이고, 사실 실제로는 그 이체내역이 블록체인 상에서 디버깅이 되지 않는 개념(오류)이라고 보시면 됩니다.
그러면 두번째 질문에 대한 답도 됐을 것 같네요!

Coin Marketplace

STEEM 0.29
TRX 0.11
JST 0.031
BTC 69590.59
ETH 3887.33
USDT 1.00
SBD 3.73