Blockchain 기술

채굴 3 - 블락체인의 분기

블락체인의 분기
토픽 내용을 시작하기 전에 먼저 다음과 같이 마음속으로 속삭여 보시라고 말씀드리고 싶네요.
"나는 내용이 아무리 어렵게 쓰여 있어도 아주 쉽게 받아 들일 수 있다!"
방금 학습에 있어서 매우 중요한 것을 알려드렸습니다. 어떤 것을 접하더라도 할 수 있다는 믿음이 있다면 그 학습 능력은 놀랄만치 올라간다는 것을요.
 [블락체인, 출처]

블락체인은 Nonce값을 찾는 것을 어렵게 함으로써, 해킹에 안전하게 됩니다. 하나의 블락의 위조도 어려운데, 블락들이 체인의 형태를 이루기 때문에, 블락이 쌓이면 쌓일수록 데이터의 위조는 어렵게 됩니다. 만약 채굴 과정이 쉽다면 데이터 위조가 쉽게 될 수 있겠죠. 이와 관련하여 블락체인의 장점 중 하나는 데이터가 위조되었는지를 쉽게 알아낼 수 있습니다. 위 그림을 보면 하나의 블락은 이전 블락의 해쉬값을 가지고 있습니다. 이 이전 블락의 해쉬값은 그 이전 블락의 해쉬값을 가지고 있고요. 계속 체인으로 연결되어 있는 것입니다. 위 그림을 예로 들어 설명하면, 가장 왼쪽이 최근 블락이고, 오른쪽으로 갈수록 오래된 블락입니다. 만약 제일 오른쪽 블락의 정보를 누군가가 고쳤다면 이것은 가운데 블락의 "이전블록해쉬"값을 변경시키게 됩니다. 그리고 이렇게 변경된 것은 또다시 가운데 블락의 해쉬값을 변경시키게 되고, 왼쪽 블락의 "이전블록해쉬"값을 변경시키게 됩니다. 따라서 왼쪽 블락은 "이전블록해쉬"값은 비교함으로써 블락 데이터가 변경되었는지 금방 알 수가 있게 됩니다. 요약하면 현재 블락의 "이전블록해쉬"는 현재 블락 이전의 모든 블락들의 데이터에 영향을 받게 됩니다. 이것은 각 블락이 체인으로 연결되어 있기 때문입니다.

블락체인에서 데이터 변경을 즉각적으로 감지할 수 있습니다.

 

그럼 이쯤에서 이전 토픽에서 아래와 같은 질문에 대해서 잠시 살펴보겠습니다.

Q) 어떤 두 채굴 노드가 동시에 Nonce를 찾게 되면 어떻게 될까요?

Bitcoin block chain transaction goes back into the unverified bucket

[블락체인의 분기, 출처]

A) 위 그림과 같이 블락체인은 분기 됩니다. 그러나 블락체인은 블락의 길이가 긴 것을 택하므로써 위와 같은 분기 문제를 해결합니다.

블락체인 네트워크는 분기가 발생했을 때 블락의 길이가 긴 것을 택하도록 되어 있습니다. 블락이 글이가 짧은 분기는 블락체인에서 사라지게 되고요. 위 그림에서 Block 56번째 다음에 두 개의 각기 다른 블락 Block 56(그림이 좀 잘못됐습니다. 부모 블락과 같은 height이므로 편의상 Block 56-1로 하겠습니다.), Block 57이 생성되었습니다. 일단 블락체인 네트워크는 이 상태를 유지합니다. 분기한 Block 56-1과 Block 57은 각각 블락의 길이가 1이라 동등하기 때문입니다. 그러나 다음 번 채굴과정에서 Block 58이 Block 57의 해쉬값으로 만들어 졌습니다. 앞에서 얘기했듯이 블락에는 "이전블록해쉬"가 있습니다. Block 58의 "이전블록해쉬"는 Block 57의 해쉬값으로 되어 있단 얘기입니다. 블락체인이 위 그림과 같이 되었을 때, 분기된 블락의 길이가 달라지게 됐습니다. 블락체인은 이제 블락의 길이가 긴 것을 남기고 블락 길이가 짧은 것은 없애버립니다. 

만약 또다시 채굴 노드들이 동시에 블락을 생성하게 되면 분기는 유지될 것입니다. 하지만 이런 우연은 오래 지속되지 않습니다. 곧 분기들은 정리되고 블락체인은 하나의 라인으로 될 것입니다.

블락체인은 분기가 일어나면 긴 블락을 선택합니다.

 
이번 토픽의 홈워크는 블락체인 해킹 안전성을 위해 무지막지한 전기세를 "낭비"하는 "채굴" 즉 "작업 증명(Proof of Work)" 말고 대안은 무엇인지 생각해 보고 댓글로 남기는 것입니다. 

블락체인 기반 블로그 Steemit에 Vote가 10개 이상되면 다음 타픽 진행하겠습니다.(희망사항)

Steemit 바로가기

https://steemit.com/blockchain/@etainclub/7urrc1-blockchain-8

 

댓글

댓글 본문
작성자
비밀번호
  1. 공부중
    안녕하세요! 현재 올려주신 컨텐츠 보면서 항상 감사해하고 있습니다. 한가지 질문이 있는데, 블록이 분기가 됐을 때 그 다음 블록은 분기된 블록들 중에서 하나의 블록에 이어서 링크드 리스트가 된다고 설명해주셨습니다. 그런데 어떻게 분기된 블록 중에 특정한 블록을 선택해서 꼬리를 이어나가는지 원리가 궁금합니다. 또 실제로 블록이 분기된거면 그 안에는 nounce값을 제외하고는 거래 내역(Transaction)은 모두 동일한 상태인건가요?
버전 관리
이타인
현재 버전
선택 버전
graphittie 자세히 보기