안녕하세요 수달입니다.
이번 시간에는 블록체인의 마지막 시간으로
블록체인의 헤더와 체인이 연결되는 과정에 대해서 포스팅 해보겠습니다.
블록체인의 첫 번째 시간에 블록체인이 연결되는 방식은
해당 블록의 해시값이 이전 블록을 가리키는 형태로 연결되어있다고 얘기 했습니다.
하지만 사실 이전 블록을 가리키는 것이 아니라
이전블록의 헤더를 가리키는 것입니다.
블록의 헤더에는 난스(Nonce), 타임 스탬프, 난이도, 이전 블록헤더의 해시값
그리고 머클트리의 루트가 포함되어 있습니다.
타임 스탬프란 해시 퍼즐 풀이를 시작한 시각을 담고 있는 정보입니다.
타임 스탬프를 제외한 모든 것들은 이전 시간에 다 설명한 내용이기 때문에 추가 설명을 하지 않겠습니다.
여기서 중요한 점은 블록헤더는 다음과 같은 규칙을 준수해야 한다는 것입니다.
1. 이전 블록을 가리키는 해시 참조를 가지고 있어야 한다.
2. 트랜잭션 데이터를 가리키는 최종 머클루트를 포함하여야 한다.
3. 타임 스탬프는 이전 블록헤더의 타임 스탬프 이후 값을 가지고 있어야 한다.
4. 난스(Nonce)를 포함해야 한다.
5. 난스, 타임 스탬프, 난이도, 이전 블록 헤더의 해시값, 머클루트의 값의
데이터 조각을 합친 해시값으로 난이도를 충족해야 한다.
결과적으로 하나의 블록을 표시해보자면
아래와 같은 모습이 블록을 가장 간결하게 나타낸 모습일 것입니다.
여기서 블록의 모습이다 라는 말을 대신해서 블록의 모습일 것이다 라고 말 한 이유는
사실 블록의 정확한 모습은 없기 때문입니다.
블록체인이라는 것은 블록이 연결되어 있는 하나의 시스템을 의미하는 것이지
특정 누군가가 만들어낸 유일한 하나의 시스템이 아닙니다.
사용자 혹은 개발자가 필요에 의해서 "블록체인"을 기반으로 한 시스템을 만드는 것이고
그들의 필요에 따라서 각각의 고유한 기능을 추가할 수도 있습니다.
위 사진은 블록이 연결되는 과정을 나타냅니다.
새로운 블록 하나 하나가 만들어 질때 위와 같은 행위를 계속 반복하게 됩니다.
여기서 갑작스러운 의문점이 생길수 있습니다.
만일 동시에 두 가지의 블록이 만들어 졌다면 어떻게 할 것인가? 라는 생각을 할 수가 있습니다.
사실 이러한 질문은 비트코인을 이용하면서도 자주 들었던 질문입니다.
채굴 혹은 마이닝 이라고 하는 비트코인을 캐는 과정은 곧 블록체인의 블록을 생성하는 과정과 같다.
-> 전 세계의 수많은 사람들이 동시에 채굴 작업을 수행한다.
-> 수많은 사람들 중 오직 한 사람만이 최초로 새로운 블록을 생성하는 것은 불가능하다.
맞는 말입니다. 사실 채굴작업을 진행하면서 채굴을 한 사람이 오직 한 명 일수도 있지만
여러사람이 동시에 채굴을 했을 가능성도 존재합니다.
하지만 이것을 막도록 블록체인은 하나의 블록에 연결되는 블록은 하나만 존재하도록 설정합니다.
크게 두 가지 방식으로 단일연결을 구성하는데
첫 번째 방식은 가장 긴 체인 기준 이고 두 번째 방식은 가장 무거운 체인 기준 입니다.
가장 긴 체인 기준 방식은 사진에 보이는것 처럼 가장 많은 블록이 연결된 체인을 기준으로 연결됩니다.
가장 무거운 체인 방식은 각각의 체인이 가지고 있는 블록들의 난이도의 합에 따라서 기준이 정해집니다.
두 방식중 하나의 방식을 사용해서 체인의 기준이 정해지면
기준체인에서 벗어난 블록들은 고아블록으로 간주되어 즉시 파기됩니다.
이 때 파기와 동시에 해당 블록을 만들었던 보상을 회수받으며 해당 블록의 트랜잭션은
재처리 되어 새로운 블록안에 재생성됩니다.
여기까지 3번의 포스팅을 통해서 블록체인에 대해 살펴봤습니다.
4차 산업의 주 핵심 기술중 하나인 블록체인은 분명 여러 분야에 있어서 혁신적인 변화를 가져올 것입니다.
중앙 통제가 사라진 네트워크로 부터 정보의 출입이 자유로워 지고
뛰어난 보안기술을 바탕으로 언론쪽과 금융쪽에서 특히나 주시되고 있습니다.
물론 한계점도 존재합니다.
개인정보 보호의 부재 라던지 확장성이 제한된다던지 혹은 유연성이 부족하다는 단점,
그리고 최악의 경우 숨겨진 중앙 통제 시스템이 존재할 수 있다는 한계점도 있지만
그 한계점을 커버 할 수 있을 만큼의 새로운 발전을 거듭하는 중입니다.
이상 수달이었습니다.