직접 번역한 비트코인 백서 한글판(http://bit.ly/bitcoin_kr)을 가지고 강의하는 시리즈입니다.
영상은 본 설명 12분+심화학습 10분으로 구성되어 있습니다. 한단락도 22분으로 만들어 버리는 투머치 토커ㅋㅋ
이중지불을 막으려면 어떤 거래가 더 먼저 일어난 것인지를 판단하는 것이 우선적으로 필요한데 이를 위해 시간(timestamp)을 기록하고 이를 chain형태로 보강(reinforcing)하여 위조를 어렵게 만드는 것에 대해 설명하고 있는 "3. 타임스탬프 서버(Timestamp Server)"입니다.
단락 1개 그림 1개의 매우 짧은 장이지만 매우 중요한 장이기도 합니다. 백서 자체에는 충분한 설명이나 강조가 없기 때문에 사실 깊은 생각이나 설명 없이 들으면 "reinforcing"이란 단어를 무심코 지나치기 쉬운데 이는 입문동영상 [울룩불룩 블록체인] 블록체인이란? 10분만에 이해하는 블록체인 강의 (+5분 보너스 업데이트)의 후반부 5분에 설명드린대로 블록체인이 안전한 핵심 이유입니다.
reinforcement
참고로 "reinforce"란 단어 그 자체는 영상에서 설명드린 것처럼 강화하다, 보강하다란 뜻인데 앞 부분의 "prove"와 합쳐서 "보강 증명"이라고 해석하였습니다. 알파고를 통해 대중에도 널리 알려진 용어가 된 reinforcement learning (강화학습)에서 처럼 reinforce란 단어는 계속 강화/보강되어 가는 느낌으로 이해하시면 됩니다. 강화학습에서는 지속적으로 학습해나가면서 AI를 강화하는 것이고, 블록체인에서는 이전 블록의 hash를 현재 블록의 hash 계산에 포함시킴으로써 한 블록을 조작하려면 그 이후 모든 블록을 조작해야하게끔 보안/무결성을 강화해주는 것입니다.
여기부터는 후반 10분 심화학습에서 다룬 내용이니 굳이 모르셔도 상관 없습니다.
P2P 환경에서의 시간 동기화
엄밀히 말해서 P2P (즉 믿을만한 제3자가 없는) 환경에서는 시간 동기화를 완벽하게 할 수가 없습니다. 모두가 동등한 지위를 가지기 때문에 누구의 시간을 기준으로 할 것인가라는 문제부터 있죠. (네트워크 딜레이를 감안하고도) 제법 시간이 다를 때 누구의 시간이 옳고 누구의 시간이 틀렸다고 말할 수 없다는 것입니다. 또한 외부 타임서버를 쓰게 되면 그 서버에 이미 의존을 하고 있는 것이라 진정한 P2P 환경이 이미 아니게 됩니다.
따라서 주변 node들의 시간들을 이용해서 시간을 설정하게 되는데 네트워크 딜레이 등 많은 이유로 완벽히 동기화가 가능하지 않습니다. 그렇다면 블록 생성 시간이 평균 10분이란 걸 아시는 분은 한가지 의문점이 생기실 수 있으실텐데요. 실제 비트코인 창세기편 - 비트코인 제네시스 블록에서도 보여드린대로 이게 평균 10분이다보니 어쩔땐 1분도 채 안되는 사이에 블록이 생성될 수도 있습니다. 즉 타임동기화 차이보다 블록 생성시간이 더 작다면 블록생성 timestamp가 역전될 수도 있는 것이죠. 그럼 그렇다고 이게 무효가 되냐? 그렇지 않습니다. 앞서 말씀드린대로 노드가 동등한 지위를 가지는데 이걸 누구의 잘못이라고 할 수는 없는 것이죠. 그래서 아래와 같은 룰이 존재합니다.
Bitcoin block timestamp rule
A timestamp is accepted as valid if it is greater than the median timestamp of previous 11 blocks, and less than the network-adjusted time + 2 hours. "Network-adjusted time" is the median of the timestamps returned by all nodes connected to you. As a result, block timestamps are not exactly accurate, and they do not even need to be in order. Block times are accurate only to within an hour or two.
https://en.bitcoin.it/wiki/Block_timestamp
새로 생성된 블록의 시간은 이전 11개의 블록(대충 2시간) 타임스탬프의 median(중간값)보다는 커야합니다. (중간값이란 크기순으로 나열해서 중간의 값입니다. 동영상에서 설명드린대로 경우에 따라 일반적인 평균(mean, average)보다 더 나은 성질을 가집니다.) 즉 경우에 따라서는 이전 블록보다 과거가 될 수도 있습니다. 마찬가지로 2시간 이내라면 미래의 시간을 가질 수도 있습니다.
핵심은 P2P 환경에서는 시간을 완벽히 동기화하는 것이 불가능하다는 것입니다.
그렇다면 이중지불 문제는 어떻게 하냐? 나중에 쓴게 먼저 쓴 것처럼 될 수도 있을텐데란 의문이 들 수 있겠죠?
첫번째, 이런 시간 역전 현상이 자주 일어나지 않으며. 두번째, 이를 해결하는 것이 결국 합의 메커니즘(consensus mechanism)이고 비트코인에서는 작업증명(Proof-of-Work)을 사용합니다. 작업증명을 통해서 만들어진 블록체인 중 가장 긴 것을 valid한 것으로 보겠다는 것이죠. 즉 가장 긴 체인 (main chain이라고 부르는)의 순서를 올바른 순서로 보는 것입니다. 해당 내용은 다음장 "4. 작업증명"에서 이어집니다.
현재까지의 블록체인/비트코인 백서 해설 목록
번역자 직강 비트코인 백서 완전해설
[블록체인 스튜디오] 번역자 직강 비트코인 백서 완전해설 강의 0. 초록
[블록체인 스튜디오] 번역자 직강 비트코인 백서 완전해설 강의 1. 서론
[울룩불룩 블록체인/블록체인 스튜디오] 공개키 암호 시스템 - "비트코인 백서 - 2. 거래" 준비 자료
[블록체인 스튜디오] 번역자 직강 비트코인 백서 완전해설 강의 2. 거래 (Transaction)
[블록체인 스튜디오] 번역자 직강 비트코인 백서 완전해설 강의 3. 타임스탬프 서버 (Timestamp Server)
입문자용 울룩불룩 블록체인 해설 목록
[울룩불룩 블록체인] 블록체인이란? 10분만에 이해하는 블록체인 강의
[울룩불룩 블록체인] 비트코인 창세기편 - 비트코인 제네시스 블록
[울룩불룩 블록체인/블록체인 스튜디오] 공개키 암호 시스템 - "비트코인 백서 - 2. 거래" 준비 자료
모든 강의는 "교육을 통한 사회공헌"이라는 개인적인 목표를 가지고 하는 것입니다. 현재 편집 등 모든 과정을 직접 해야 해서 어려움이 많습니다. 유튜브나 스팀잇 등을 통해 수익이 발생하게 되면 모두 강의 개선에 쓸 예정입니다. 또한 그림이 포함된 경우 그림작가님께 수익을 배분하겠습니다. 유튜브 구독과 스팀잇 보팅 많이 부탁드립니다. 감사합니다. 유튜브 구독 바로가기
블록체인 스튜디오
http://blockchainstudio.info (홈페이지)
http://blockchainstudio.tv (유튜브)
https://facebook.com/economicstudio (페이스북)
울룩불룩 블록체인
https://facebook.com/ulockblock (페이스북)
그냥 이야기 했던 블록체인 전문 지식을 이곳에서 습득하는 군요..
자주 들리겠습니다..ㅎㅎ
네 감사합니다. 앞으로도 좋은 내용 올리겠습니다. 근데 6-7월에 일정이 너무 많아서 업데이트가 걱정이네요ㅠㅠ
이제 막 입문해 공부 중인데요
아직은 귀에 쏙쏙 이해되지는 않고
어려운 말들만 가득인 듯 느껴지네요^^
열심히 배워야 겠습니다~
오늘도 감사히 배워갑니다^^
피드백 감사드립니다. 사실 백서 해설은 배경지식 없이 들으시면 한번에 이해하시긴 어려울 거에요. 그게 당연한거니 좌절하시지 마시고요. 물론 제 설명이 부족한 탓이 클테고 그런데 또 너무 쉽게 다 설명하려면 끝도 없이 길어지긴 하더라고요. 그래서 이왕이면 "울룩불룩 블록체인" 시리즈부터 보고 보시는게 좋을 거에요^^ 첫영상인 블록체인이란? 10분 동영상부터 먼저 보시면 기본적인 내용을 일단 이해하시는데 도움이 되실거에요. 아 그리고 hash라던지 이런부분을 원래 이 10분 동영상의 2부로 만들어놨었는데 초기에 만든거라 너무 부족해보여서 조만간 백서 4장 설명 이전에 울룩불룩으로^^ 다시 만들어서 올릴 계획입니다. 그럼 좀 더 도움이 되실거에요.
앗!!!! 너무너무 감사드립니다^^
기초부터 탄탄히 다져서
저도 누군가에게 도움이 되야겠어요~
행복한 연휴 보내세요~
요즘 초심으로 돌아가 비트코인 백서 다시 공부중인데 도움이 되네요!ㅎㅎ
도움이 되셨다니 보람이 있네요. 감사합니다!