Pokeball - Pokemon

Blockchain

[블록체인] 블록이란? - 블록의 개념 및 구성 요소

ansi. 2024. 4. 7. 13:19

1. 블록이란?

블록체인은 데이터를 분산하여 저장하고 관리하는 기술로, 중앙 서버가 없이 네트워크 상의 여러 참여자들(컴퓨터) 간에 데이터를 공유하고 동기화시키는 방식으로 작동한다.

 

블록은 데이터를 담는 블록체인의 기본 단위로,

하나의 블록은 현재 블록과 이전 블록의 해시 값,  그리고 다양한 메타데이터 및 여러 거래 정보(트랜잭션 데이터)를 포함하고 있다.

각 블록은 이전 블록의 해시 값으로 연결되고, 연결된 블록은 하나의 체인을 형성한다.

이렇게 연결 리스트(Linked List)처럼 블록이 체인 형태로 연결되어 있는 구조를 '블록체인'이라고 한다.

비트코인은 평균적으로 10분에 1개씩 블록이 추가되고, 블록에는 10분 동안 발생한 거래 정보가 담겨 있다.

 


 

2. 블록의 구성 요소

블록체인에서 블록은 크게 헤더(Header)와 바디(Body) 부분으로 나눠진다.

이를 그림으로 표현하면 다음과 같다.

 



위와 같이 구성된 각 블록은 아래의 그림처럼 이전 블록의 해시 값으로 연결되어, 체인 형태를 이룬다.

 

 

이제 헤더와 바디를 구성하는 각 요소들에 대해 알아보자.

 

 

블록 헤더(Header)

1. 버전(Version)

"블록의 버전"

 

블록을 만든 비트코인 프로그램의 버전 번호를 나타낸다.

 

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

"이전 블록의 헤더 내용을 모두 합해 해싱한 값"

 

블록체인 네트워크에서 블록들은 이전 블록의 해시값을 통해 이전 블록과 연결되는데,

이때 해시값이란 블록 헤더에 있는 6가지 정보들을 모두 합친 값을 해싱한 결과를 말한다.

그리고 해싱이란 '입력 데이터를 고정된 길이의 출력 값으로 변환하는 과정'을 뜻한다.

블록체인에서는 해싱을 위해 주로 SHA-256 해시 함수가 사용된다.

SHA-256은 입력 데이터를 256비트 길이의 고정된 해시 값으로 변환시킨다.

이러한 해시 함수의 가장 큰 특성은 입력값의 작은 변화에도 결과에 큰 변화를 준다는 점이다.

이 특성은 블록의 유효성을 검증하고 블록 체인의 무결성을 유지하는 데 중요한 역할을 한다.

만약 블록의 내용이나 순서가 변경되면 해당 블록의 해시 값도 변경되어 다음 블록과의 연결성이 깨지기 때문이다.

 

정리하자면,

이전 블록의 해시값은 해당 블록의 버전 + 이전 블록의 해시 + 머클 루트 + 타임 스탬프 + 난이도 + 논스를 모두 더한 값을 SHA-256 해시 함수에 입력해 구한 값이고,

해시 함수를 사용함으로써 블록 체인의 무결성이 보장된다!

 

3. 머클 루트(Merkle Root)

"블록에 포함된 트랜잭션 데이터를 요약한 값"

 

머클 루트는 머클 트리 구조를 통해 계산되는 값으로, 블록 내의 모든 트랜잭션 데이터의 해시를 묶어서 구해진다.

 

머클 트리

 

머클 루트를 구하는 과정은 다음과 같다.

 

1. 블록에 포함된 모든 트랜잭션 데이터를 개별적으로 해싱한다. => 이 해시값들이 리프 노드에 해당

2. 인접한 두 개의 리프 노드의 해시 값을 합쳐 하나의 상위 노드를 생성한다.

3. 이 과정을 반복하여 머클 트리의 상위 레벨 노드들을 계속해서 생성한다.

4. 위의 과정을 반복하여 머클 트리의 루트 노드, 즉 '머클 루트'를 얻는다.

 

머클 루트는 블록체인에서 트랜잭션 데이터의 무결성, 나아가 블록의 무결성을 보장하는 데 중요한 역할을 한다.

그 이유는 머클 루트가 블록에 포함된 트랜잭션 데이터들의 해시값을 더해 나온 결과이고,

이렇게 구해진 머클 루트의 값이 블록의 해시값을 생성하는 데에 사용되기 때문이다.

 

따라서, 트랜잭션 데이터가 조작되는 경우 머클 루트의 값이 바뀌게 되고,

머클 루트의 값이 바뀌면 블록의 해시값 또한 바뀌어 그 블록 이후의 모든 블록의 해시 값도 영향을 받게 된다.

이러한 원리로 머클 루트는 블록의 트랜잭션 데이터가 변경되지 않았음을 증명하는 수단으로 사용될 수 있다.

 

4. 타임스탬프(Timestamp)

"블록이 생성된 시간"

 

5. 난이도(Target Difficulty)

"블록을 생성하기 위한 난이도 (= 비트코인의 채굴 난이도)"

 

난이도는 4바이트 숫자인 '비츠(bits)'로 표현한다.

 

6. 논스(Nonce)

"채굴 과정에서 사용되는 값."

 

논스는 블록체인 '채굴'에 필요한 값이다.

'채굴'은 블록체인 네트워크에서 새로운 블록을 생성하고 추가하는 과정으로,

이 과정은 '작업 증명(Proof of Work, PoW)'과 같은 합의 알고리즘을 통해 이루어진다.

(작업 증명이 곧 채굴인 것이 아니라, 채굴이라는 전체 과정 속에 작업 증명이 포함된다.)

 

'작업 증명'은 간단하게 말하자면 아주 어려운 수학 문제를 푸는 일이다.

그리고 작업 증명의 핵심이 바로 이 '논스값'을 찾아내는 일이다.

논스값을 찾는 이유는 논스값을 사용해 새롭게 생성될 블록의 해시값을 계산해 새로운 블록을 추가하기 위해서, 즉 채굴을 하기 위해서다.

논스값만 찾으면 되냐? 그렇다. 

우리는 이전에 한 블록의 해시값은 그 블록의 헤더에 있는 6가지 정보를 모두 합한 값이라는 것을 배웠다.

이때, 논스를 제외한 5가지 정보(버전, 이전 블록 해시, ...)는 고정된 값으로 주어지므로 채굴자는 논스값만 알아내면 되는 것이다.

 

그렇다면 작업 증명을 통해 '어떤' 논스값을 찾아내야 하는가?

새로 추가될 블록의 해시값이 특정 난이도 목표보다 낮도록 하는 논스값을 찾아야 한다.

따라서, 채굴자는 블록헤더의 다른 정보들은 고정된 상태로 두고 논스값만 변경하여 블록의 해시값을 계산하여, 이 해시값이 특정 난이도 목표보다 낮아지도록 해야 한다.

 

이 논스값을 구하는 방식은 무작위의 숫자를 일일이 논스값에 대입해 찾는 수밖에 없다.

정확히는 논스값을 1씩 증가시키면서 반복적으로 계산한 블록 해시값이 특정 숫자보다 작다면, 그 블록은 새로운 블록으로서 블록 체인에 추가되며 작업이 완료 된다. 

이렇게 새로운 블록의 해시값을 찾는 과정은 시간과 컴퓨팅 파워를 매우 많이 필요로 하기 때문에, 가장 빨리 작업증명에 성공한 채굴자에게 암호화폐가 보상으로 주어지는 것이다.

 

 

블록 바디(Body)

1. 트랜잭션 데이터

블록 바디에는 새로운 블록이 추가되기까지 블록체인 네트워크 상에서 발생한 여러 트랜잭션에 대한 데이터, 즉 거래 정보가 포함되어 있다.

하나의 트랜잭션 데이터에 포함되는 정보는 송신자, 수신자, 전송되는 자산의 양, 수수료, 타임스탬프 등이 있다.

Alice가 Bob에게 1 BTC(비트코인)을 송금했다는 기록이 그 예이다.

 

이러한 실제 거래 정보는

https://www.blockchain.com/explorer/

 

Blockchain Explorer - Bitcoin Tracker & More | Blockchain.com

The most popular and trusted Bitcoin block explorer and crypto transaction search engine.

www.blockchain.com

위의 사이트에서 누구나 조회할 수 있다.

 

2. 기타 정보

블록 바디에는 여러 개의 트랜잭션 데이터 외에도 기타 메타데이터들이 포함되어있다. 

 

 

참고)

ChatGPT

https://steemit.com/kr/@yahweh87/3

https://eunjin3786.tistory.com/296

https://blog.naver.com/rcd97/222670755192