본문 바로가기
서비스 분석

초보자를 위한 블록체인(Blockchain) 가이드 - 2편

by 넉참이 2023. 8. 23.

이전 편에서는 블록체인과 가상자산은 무엇인지, 그리고 블록체인의 특징에 대해 알아봤어요. 이번에는 블록체인의 구조를 살펴볼게요! (이전 편을 보지 못한 분이라면 '초보자를 위한 블록체인(Blockchain) 가이드 - 1편'을 읽고 와주세요!)

 


 

1편 읽고 오기👇

 

초보자를 위한 블록체인(Blockchain) 가이드 - 1편

Web3.0에서 블록체인은 빠질 수 없는 기술이죠! 저는 블록체인이라는 기술을 옛날부터 주구장창 들어왔던 것 같은데, 한 번도 이게 어떤 기술인지 궁금해하지 않았어요..ㅎ 제가 알 수 없는 미지

neokcham.tistory.com

 


 

블록체인의 구조가 궁금해요!

블록체인은 여러 개의 블록이 이어져 있는 구조예요. 블록은 일종의 거래장부라고 생각하면 되는데요, 하나의 블록에는 누가 누구에게 얼마만큼의 가상자산을 송금했는지에 대한 거래정보가 담겨있어요. 블록은 크게 블록 헤더(Header)와  블록 바디(Body)로 구분할 수 있어요. 각 헤더와 바디가 어떻게 구성되어 있는지 살펴볼까요?

 

블록 헤더 (Header)

블록 헤더는 총 6개의 영역으로 나뉘는데요, blockchain.com에서 블록에 담겨 있는 블록 정보를 확인할 수 있답니다. 아래 이미지는 블록체인 블록 중 804,306번 블록의 정보를  캡처해 둔 것인데요, 이미지에 파란색으로 표시된 부분들에 대해 하나씩 살펴보겠습니다.  

블록체인의 804,306번 블록 정보 / https://www.blockchain.com/explorer/blocks/btc/804306

 

1) 버전 (Version)

버전은 해당 블록의 버전을 나타내요. 간단하게 말하면  블록의 소프트웨어/프로토콜 버전이랍니다.

 

위 그림에서 블록체인 804,306번 블록의 버전은 0x20000000인 것을 확인할 수 있어요! 참고로 블록체인 제네시스 블록은 0x1 버전인데요, 제네시스 블록이 생성되고 난 이후 블록체인은 수많은 블록 버전들이 이어져 온 것을 확인할 수 있어요. 

 

2) 이전 블록 헤더 해시 (Previous Block Hash)

블록은 저마다의 블록 해시 정보를 가지고 있어요. 다른 블록과 식별할 수 있는 고유번호 같은 거죠! 이 해시값은 블록헤더에 담겨 있는  정보를 SHA256 해시 함수로 변환하여 나타내고 있어요.

 

누군가 이전 블록을 변경하면 다음 블록이 모두 영향을 받는데요, 이 해시 값은 누가 내용을 어떻게 변경했는지 쉽게 기록하기 위해 블록 사이를 연결하는 역할을 한답니다. 그래서 각 블록에는 이전 블록 헤더 해시값을 함께 저장하여 블록끼리 연결될 수 있도록 해요. 

 

블록체인 804,306번 블록의 해시값은 아래와 같습니다.

00000000000000000004f000670a161137e931b25e04ce3836cffd76e13cca84

 

3) 머클 루트 (Merkle Root)

머클 루트를 설명하기 전에, 머클 트리(Merkle Tree)에 대해 먼저 짚고 넘어갈게요. 머클 트리는 아래 그림처럼 각 블록의 거래 내역들을 가장 가까운 거래내역까리 쌍을 지어 해시화하고, 쌍을 지을 수 없을 때까지 반복하는 과정이에요. 그리고 이 과정에서 얻게 되는 마지막 최종 값이 바로 머클 루트랍니다! 

출처 : 해시넷

머클 루트는 하나의 블록에 포함된 모든 트랜잭션 해시값에서 파생된 값이기 때문에 전체 헤더를 변경하지 않는 이상 수정되기 어렵고, 누군가 블록을 수정하거나 조작할 경우 쉽게 식별할 수 있어요. 전체 값 중 하나만 바꿔도 상위 해시값들이 모두 바뀌기 때문이죠. 이러한 특징은 블록체인에 대한 보안을 더 강화해 줍니다. 

 

블록체인 804,306번 블록의 머클루트는 아래 해시값을 확인할 수 있어요. 

af9579d45d0cd35c5d661aa5014449af6297a4f390b727949039d415d99d5c39

 

4) 타임스탬프 (Timestamp)

타임스탬프는 해당 블록이 생성(채굴)된 시간을 표시해요. 시간 형식은 리눅스 운영체제에서도 사용되고 있는 에포크(유닉스) 표준 시간을 사용하고 있는데요, 편의상 블록 내에서는 yyyy-mm-dd hh:mm으로 표시된답니다. 

 

블록체인 804,306번 블록은 2023년 8월 22일 오전 10시 41분 40초에 생성되었네요! 

 

5) 난이도 목표 (Difficulty Target)

비트코인의 경우 모든 블록은 10분에 1개씩 채굴되는데요, 이때 채굴자가 너무 많으면 비트코인 공급을 통제하기 위해 난이도(Difficulty)가 올라가요. 하나의 블록을 채굴하는 속도가 10분보다 빠르면 다음 채굴 때는 난이도가 올라가고, 속도가 10분보다 느리면 다음 채굴 때는 난이도가 쉬워지는 식으로 반복되죠.  

 

즉 난이도가 높다면 목푯값(Target)이 이 낮아지고, 난이도가 낮다면 목푯값은 높아집니다. 여기서의 목푯값은 비트(Bits)로 표현되는데요, 채굴 난이도를 조절하기 위한 기준값으로 사용됩니다. 이렇게 난이도가 계속 조정되다 보면 최종적으로는 모든 블록은 같은 난이도를 갖게 되겠죠?

 

6) 논스 (Nonce)

채굴자 입장에서 바라봤을 때, 블록 헤더에서는 논스를 제외하면 채굴을 위한 모든 값이 이미 정해져 있어요. 버전과 타임스탬프는 채굴하는 순간의 값이고, 난이도 목표는 자동으로 설정되어 있고, 이전 블록 헤더 해시와 머클 루트는 단순 계산으로 구할 수 있어요. 

 

다시 말해 위에서 언급된 5가지 수치는 모두 고정된 값으로, 논스는 헤더 값 중 유일하게 변동하는 값이에요.

 

블록을 채굴하는 과정 = 논스를 구하는 과정 = 작업증명(PoW)

 

블록을 채굴하기 위해서는 주어진 5가지 데이터를 기반으로 논스값을 구해야 하는데요, 논스를 0부터 시작해 숫자를 증가시키며 목푯값보다 낮은 해시 결괏값을 찾는 거예요. 즉 채굴자는 논스를 계산하기 위해 특정 블록의 헤더를 해싱(Hashing)하며 채굴을 시도하는 거죠. 이 논스 값을 무수히 바꿔가면서 하나씩 대입하다가 새로 생성된 해시값이 일정한 목푯값보다 더 작을 경우에 새로운 블록이 성공적으로 생성되는 거예요. 

 

여기서 특정한 블록에 대해 목푯값 이하의 크기를 가진 해시값을 생성하는 논스값을 찾음으로써 새로운 블록을 생성하는 행위를 작업증명(PoW)라고 합니다!. 

 

그럼 사람들이 블록을 채굴하는 이유가 뭐예요?

채굴자들이 아무 이유 없이 시간과 전기를 투자하며 블록을 만들진 않겠죠?! 비트코인은 블록체인이 활성화될 수 있도록 블록을 채굴한 참여자들에게 비트코인으로 보상을 제공하도록 설계했어요. 그러니까 가상자산은 블록체인 기술을 구현하기 위한 보상이라고 생각하면 될 것 같아요! 블록체인 네트워크가 건강하게 유지되고 신뢰를 얻기 위해서는 많은 사람들이 참여해야겠죠? 그래서 블록체인 네트워크를 관리하고 검증자로 참여한 사람들에게 보상으로 가상자산을 지급하는 거예요. 가상자산을 통한 보상체계가 블록체인 네트워크의 자발적인 유지를 가능하게 하는 요인인 셈이죠.

 

 

블록 바디(Body)

블록 바디에는 가상자산의 거래내역들이 해시화되어 트랜잭션(Transaction)으로 저장되고 있어요. 누가 누구에게 얼마를 송금했는지에 대한 거래 정보가 담겨있답니다. 즉 블록 바디에는 트랜잭션의 집합이 블록 단위로 기록되고 있는 거예요. 

 

정리하자면, 블록은 블록의 버전(Version), 이전 블록 헤더의 해시값(Previous Block Hash), 머클 루트값(Merkle Root), 블록이 생성된 시간인 타임스탬프 (Timestamp), 블록 채굴의 난이도 목표 (Difficulty Target), 블록을 채굴하기 위한 논스값(Nonce), 마지막으로 블록체인 참여자들의 가상자산 거래내역(트랜잭션) 등이 포함되어 있어요. 매 블록은 바로 전 블록의 해시값을 담고 있어서 서로 이어질 수 있고, 이어진 블록들이 하나의 블록체인을 이뤄요.

 

이렇게 블록체인의 구조에 대해 알아보았는데요, 배워도 배워도 끝이 없는 게 바로 블록체인 세계인 것 같아요..! 이 글이 블록체인 초보자들에게 큰 도움이 되길 바라며, 다음 게시글에서는 블록체인에 대한 다양한 이야기를 가지고 와볼게요~!

 

 


 

 

Reference

 

A Decomposition Of The Bitcoin Block Header | Data Driven Investor

The Bitcoin contains important information inside the block. These are divided into 6 fields which provide details of the block summary…

medium.datadriveninvestor.com

 

More on Block Hash

In my last blog, I discussed about the concept of block headers, need of block headers, concept of merkle tree, need of merkle root in…

medium.com

반응형

댓글