가상화폐에 대한 이해 02steemCreated with Sketch.

in #kr8 years ago

앞서는 적지 않았었는데 가상화폐는 각각 알고리즘을 달리 할 수 있습니다
현재 제가 적는 것은 비트코인을 기반으로 합니다

Image Source

블록

블록은 거래내역들의 묶음입니다
쓰레기들을 버리기 위해서 쓰레기봉투에 꽉꽉 채운후 묶은 한봉지
그것을 블록이라고 할 수 있습니다
비유가 좀 그렇지만 가장 쉽게 설명하려니 그랬는데
각 블록은 노드(정보를 받는 주체)들이 거래를 수집해서 알아서 채웁니다
여기서 블록들은 규칙만 만족하면 독자적으로 만듭니다
즉 대기중인 미승인거래들 중에서 원하는 것들을 골라서 채워넣는데
누구는 10개, 누구는 30개 채워넣은 식으로 블록마다 내용이 다르다는 겁니다
그리고 블록을 창출해낼때 고정된 채굴보상외에 블록내에 담긴
거래들의 수수료를 전부 챙기기때문에 당연히 높은 수수료의 거래들이
먼저 블록에 담기게 됩니다
즉, 수수료가 낮으면 낮을수록 거래가 오래걸리게 될 가능성이 높습니다

블록체인

어찌어찌해서 채굴과정까지 끝내고 이름표(해시값)를 부여받은 블록은
이전 블록의 다음위치에 놓이게 됩니다
이때 순서대로 나란히 놓인 각 블록들이 가진 고유 해시값은 다음 블록의
해시계산의 입력값에 포함되어 있으며 그럼으로써 앞과 뒤의 블록들이
연결되어 있음이 증명됩니다

Image Source
다음 블록을 만들때 입력값에 앞의 블록 해시값을 포함안시키면
인정이 안된다는 것입니다

여러블록과 주체인(Main Chain)

보통 블록체인은 하나라고 알고 있을테고 그게 이상적이지만
물리적으로 그렇게 되지 않는 경우가 많습니다
왜 그런지 살펴보죠
블록을 최초로 만든이는 블록을 사방에 전파합니다
그런데 네트웍이 별로라 잠시 버벅거리는 동안
B라는 인물이 간발의 차로 늦게 채굴을 끝낸 블록을 배포하기 시작했고
그걸 먼저 받은 노드들은 내가 보낸 블록은 최초라고 인정하지 않고 버려버립니다
한편 내가 보낸 블록들을 먼저 받은 이들은 B라는 인물의 블록을 버려버리죠
그 결과 블록체인이 둘로 나뉘게 됩니다

이때 잠깐 이런 의문이 생길 수 있습니다.
그렇다면 블록이 가볍도록 거래를 꽉채우지 않고 보내는 쪽이 유리할 수 있지 않은가?
네 맞습니다. 그래서 각 채굴노드들중에 블록의 최대크기를 다 채우는 노드는 없습니다

여하튼 체인은 두개로 나뉩니다. 이렇게 되면 어떻게 되는가..
각 노드들은 동기화시 가장 많은 노드들이 가진 체인을 진짜로 판단하고
다른 체인은 폐기시킵니다. 이 진짜 체인을 주체인(Main Chain) 이라고 합니다

Proof Of Work (작업 증명)을 하는 이유

https://steemit.com/kr/@twinbraid/2b3hcu
앞서 채굴파트에서 블록해시값(이름표)를 찾아내는 작업을
작업증명(POW)이라고 하였습니다
http://www.convertstring.com/ko/Hash/SHA256
여기가서 'block' 이라는 글자는 놔두고 뒤에 'block1' 'block2' 이런식으로
숫자만 바꿔가면서 맨앞에 0 으로 시작하는 해시값을 찾아보면
고작 한자를 맞추는것도 힘들겁니다 그걸 0000000으로 시작한다거나 하는게
얼마나 빡신 과정인지는 확실히 알 수 있을겁니다
그럼 왜 이런 과정을 해야할까요

바로 보안을 위해서입니다
각 블록은 내용이 바뀌면 블록해시값도 다시 찾아내야하며
그렇게 블록해시값이 바뀌면 이후의 블록들 해시값도 죄다 다시 찾아내야합니다
이게 만약 그닥 힘든작업이 아니라면 그냥 슈슉 거리고 다 바꿔버리면되지만
무식한 컴터파워를 동원해야 한다면 얘기가 달라지죠
보통 새로운 블록은 조작해봐야 새블록안의 거래를 다 검증해버리기에 거기서
탈락해버립니다. 고로 이미 증명된 이전 블록을 조작해야되는데 앞서말했듯이
그걸 조작하면 해시값이 달라져서 다음 장부까지 조작해야됩니다
최소 작업증명을 두번이나 해야되죠. 한번하기도 빡신걸 두번하는 동안 10분을 넘기면
다음 블록이 생성되어 있고 20분 넘긴다면 두개 더 생겼을테니 영원히 조작증명질하다가
끝나는거죠.

마치며..

글을 쓰기전엔 진짜 암것도 몰랐던 가상화폐의 실체를 제대로 공부하게되었습니다
물론 아직도 많이 부족하고 잘못 알고 있는 것도 있겠지만
그래도 이제 다른 알트코인에 진입이 훨씬 수월해질 것 같습니다

아래 참고한 글들은 개략적 정리가 아니라 좀더 정확히 알고 싶다면
읽어보시길 추천드립니다
특히 일부러 블록을 안채운다던지 하는 이야기는 정말 흥미로웠으며
그외에도 가상화폐에 대한 쉽고 재밌는 설명이 많습니다

http://www.seunghwanhan.com/2016/08/bitcoin-scalability-controversy-and.html
https://ko.wikipedia.org/wiki/%EB%B9%84%ED%8A%B8%EC%BD%94%EC%9D%B8
http://tadakichi.tistory.com/131
http://hanmomhanda.github.io/2016/01/23/BlockChain-%EA%B8%B0%EC%B4%88-%EA%B0%9C%EB%85%90/
https://organicmedialab.com/2014/02/20/bitcoin-addresses-transactions-and-wallets/
http://www.seunghwanhan.com/2015/05/blog-post.html
http://www.ddaily.co.kr/news/article.html?no=113278
https://technet.microsoft.com/ko-kr/library/aa998077(v=exchg.65).aspx
https://books.google.co.kr/books?id=3v6wAwAAQBAJ&pg=PT95&lpg=PT95&dq=%EC%95%94%ED%98%B8%ED%99%94+%ED%99%94%ED%8F%90+%EA%B3%B5%EA%B0%9C%ED%82%A4+%ED%95%B4%EC%8B%9C&source=bl&ots=4I4AJMtYUU&sig=7a1uX362fTRRBdd9OCiJmoXrRM8&hl=ko&sa=X&ved=0ahUKEwjLxr6-5KXPAhWIQpQKHTh_AhYQ6AEIMTAD#v=onepage&q=%EC%95%94%ED%98%B8%ED%99%94%20%ED%99%94%ED%8F%90%20%EA%B3%B5%EA%B0%9C%ED%82%A4%20%ED%95%B4%EC%8B%9C&f=false
http://d2.naver.com/helloworld/8237898
https://ko.wikipedia.org/wiki/SHA
https://namu.wiki/w/%ED%95%B4%EC%8B%9C
http://minix.tistory.com/397

Sort:  

잘 정리하셨는데, 몇 가지 부정확한 부분이 있습니다.

이때 잠깐 이런 의문이 생길 수 있습니다.
그렇다면 블록이 가볍도록 거래를 꽉채우지 않고 보내는 쪽이 유리할 수 있지 않은가?
네 맞습니다. 그래서 각 채굴노드들중에 블록의 최대크기를 다 채우는 노드는 없습니다

비트코인의 경우 블럭사이즈가 전파속도에 주는 영향이 전혀 없는 것은 아니지만, 트랜잭션을 제외해서 얻는 이익보다는 포함해서 받는 수수료 이익이 훨씬 큽니다. 아마도 한승환님의 글을 참조한 것 같은데, 잘못된 내용입니다. 비트코인 블럭의 현재 사이즈를 직접 확인해 보세요. 대부분 다 거의 1메가로 풀 사이즈입니다. 1-2년전이야 트랜잭션 양이 그에 못미친 것이구요.

각 노드들은 동기화시 가장 많은 노드들이 가진 체인을 진짜로 판단하고

이 부분도 부정확합니다. 각 노드들은 얼마나 많은 노드들이 현재의 블록을 받아들였는지 모릅니다. 각 노드들이 판단하는 것은 어떤 체인이 가장 긴 것인가, 즉 어느 블럭의 누적 난이도가 가장 높은가에 따라 선택합니다.

이런걸보면 꼭 답글을 달았는데 여긴 왜 안달았는지 모르겠네요-0-?
오늘 다시 보니 이런 내용이.. 늦었지만 지적 감사합니다

덕분에 더 알게되어서 감사합니다^^
인위적으로 블록을 안채울 수도 있는거군요? 블록은 자동으로 다 채워진 후에 그 다음 블록으로 넘어가는줄 알았는데...
노드가 정보를 받는 주체이군요 ㅎ. 그러면, 정보를 받는 모든 주체들은 다 노드가 되겠고, 채굴노드외에 다른 노드도 있는건가요?
풀노드, 마스터노드 개념도 설명 좀 부탁드립니다^^


노드란 그림에서 보듯이 각 네트워크의 연결점,끝단,전송점을 말합니다
마스터노드는 피라미드같이 최상위에서 위치하여 아래 노드들을 관리합니다
은행은 최상위에 위치하면서 고객들을 관리하므로 마스터노드라고 볼 수 있습니다.
가상화폐는 보통 마스터노드가 존재하지 않습니다만..
종류에따라 따로 마스터노드를 두는 경우도 있고
풀(pool)이라는 그룹안에 속한 노드들은 풀 최상단 노드의 지시를 따르므로 (그림의 파란노드)
풀도 일종의 마스터 노드로 볼 수 있습니다
풀(full)노드는 노드가 모든 블럭체인을 다 가진 상태로 쉽게 말하면
Torrent에서 100% 짜리 파일을 가진 사람을 말합니다
만약 한 3일간 컴터를 껐다.. 그러면 그동안 블럭체인들이 새로이 만들어졌는데
난 하나도 안받았으니 full 상태가 아닌거죠
채굴이란게 워낙 컴퓨팅 파워를 소모하는 것이다보니 지갑만 가지고 거래만
하고픈 사람한테 강요할 수 없습니다. 코인거래할려니까 컴이 풀로 돌아간다면
누가 비트코인쓸까요. 그래서 일반적인 지갑은 풀(full)노드를 유지할려는
블럭검증과 다운,업로드 정도만 합니다. 그런건 채굴노드가 아니라
일반노드라고 할 수 있겠죠.

오~ 그렇군요. 정말 이해가 잘 되게 설명해주시네요
감사합니다^^

This post has been linked to from another place on Steem.

Learn more about linkback bot v0.4. Upvote if you want the bot to continue posting linkbacks for your posts. Flag if otherwise.

Built by @ontofractal

Coin Marketplace

STEEM 0.18
TRX 0.14
JST 0.029
BTC 57956.22
ETH 3126.99
USDT 1.00
SBD 2.45