블록체인 기초

[블록체인 기초] #2. 체인의 형성과 머클 트리: 해시 함수란?

dxlixi 2025. 11. 23. 21:02

지난 포스팅에서는 블록체인의 작동 원리에 대해 알아보며 블록의 해시값에 대해 간단하게 알아보았습니다. 블록들이 체인처럼 연결되는 기초가 되는 것이 바로 블록 해시값이었는데요. 해시값은 지문과 같이 해당 블록의 데이터를 유일하게 식별할 수 있는 값이자, 데이터의 무결성과 신뢰성을 유지할 수 있게 해주는 중요한 개념이었습니다.

 

이번 포스팅에서는, 블록 내 데이터를 해시값으로 만들어주는 ‘해시함수’에 대해 더 자세히 알아보도록 하겠습니다.

 

체인의 형성: 해시 함수 (Hash Function)

이전 시간에 배웠던 것과 같이 블록은 ‘해시 함수’라는 일방향 함수로부터 도출된 고유한 블록 해시값을 가지게 됩니다.

해시 함수(Hash function)는 임의의 길이를 갖는 데이터를 고정된 길이의 데이터로 변환시켜주는 함수입니다. 블록체인에서는 해시 함수가 하는 역할은 ‘암호화'로, 해시값 비교를 통해서 위변조 여부를 판별하고, 무결성을 검증하는 데 사용됩니다.

 

이전 포스팅과 같이 비트코인의 예시로 살펴보겠습니다. 블록 해시값은 블록 헤더의 모든 데이터를 해시 함수에 넣은 결과값으로, 이전 블록 해시, 타임스탬프, 머클루트, 버전, 난이도, 논스값 등이 블록 해시에 활용됩니다. 여기서 ‘머클루트’란 여러 데이터에 대해 단계적으로 해시함수를 적용해 만들어진 하나의 해시값을 뜻하며, 다음 장 ‘머클 트리’에서 더 자세히 살펴보겠습니다.

주목해야 할 부분은, 다음 블록 해시값을 위해서는 이전 블록의 해시값이 필요하다는 점입니다. 해시 함수는 입력값이 조금이라도 달라지면 결과값이 완전히 달라지는데, 이러한 상황을 암호학에서는 ‘눈사태 효과(avalanche effect)’라고도 합니다.

 

모든 블록들은 블록 헤더의 모든 데이터를 암호화 하는 해시함수로 연결되어 있으며, 이 때 이전 블록의 해시값이 활용되기 때문에 앞선 블록에서 데이터가 수정되면 ‘눈사태 효과(avalanche effect)’에 의해 뒤이은 모든 블록의 해시값이 완전히 뒤바뀌게 됩니다.

따라서, 블록체인 상의 모든 정보는 수정이 거의 불가능하며, 해시 함수가 이전 블록에 대한 ‘연결고리’가 되어 블록들이 체인처럼 연결될 수 있도록 합니다.

 

머클 트리

블록 해시에 활용되는 가장 중요한 값인 ‘머클 루트’는 여러 트랜잭션 데이터를 단계적으로 해시하여 하나의 해시값으로 압축시킨 값입니다. 이 때 트랜잭션(transaction)이란 쉽게 정리하여 ‘거래기록’이라고 할 수 있습니다.

그렇다면 머클 루트 값은 어떤 과정을 통해 도출될까요?

  1. 데이터 블록의 해시 계산: 먼저, 각 트랜잭션 데이터 블록에 대해 해시 함수를 적용해 리프 노드(트리의 가장 아래 있는 노드)를 만듭니다.
  2. 해시 결합: 이 리프 노드들의 해시 값을 두 개씩 짝지어 결합하고, 그 결과에 다시 해시 함수를 적용해 상위 노드의 해시 값을 만듭니다. 이 과정은 트리의 꼭대기까지 반복됩니다.
  3. 머클 루트 생성: 마지막으로, 이 과정을 거쳐 최상위 노드, 즉 머클 루트를 얻습니다. 이 루트 해시는 트리의 모든 데이터 블록을 대표하는 값입니다.

머클 트리는 블록체인의 데이터 안정성과 무결성을 보장할 수 있도록 하는 중요한 데이터 구조 중 하나로, 해시 함수를 활용하기 때문에 데이터가 변조되었는지 확인할 때 유용합니다.

여러 트랜잭션 데이터가 해시 함수로 묶이기 때문에 머클 트리를 이루는 트랜잭션 데이터 중 하나라도 변경되면 머클 루트 값이 변경되고, 변경된 머클 루트 값에 의해 최종적으로는 블록 헤더 데이터를 해시해서 만들어지는 블록 해시 값 또한 변경되게 됩니다. 이러한 원리에 의해 블록체인 상의 데이터는 변조되기 매우 어렵습니다.

 

블록체인의 불변성: 왜 중요한가?

블록체인의 불변성은 이 기술이 그토록 안전한 이유 중 하나입니다. 이전 블록의 해시값과 머클 트리 덕분에, 한 번 체인에 추가된 정보는 변조하기가 매우 어렵습니다. 이는 블록체인이 신뢰할 수 있는 DB 메커니즘으로 자리 잡는 데 핵심적인 역할을 합니다.

블록체인의 심오한 원리를 한 걸음 더 깊이 이해해 본 시간이었습니다. 다음 포스트에서는 이 불변성이 우리 삶에 어떤 영향을 미치는지, 더 실제적인 측면에서 탐구해 보겠습니다.

 

요약

  • 블록체인에서 각 블록은 이전 블록의 해시값을 포함하여 체인처럼 연결됩니다.
  • 머클 루트는 여러 트랜잭션 데이터를 단계적으로 해시하여 하나의 해시값으로 압축시킨 값입니다.
  • 머클 트리는 블록체인의 데이터 안정성과 무결성을 보장할 수 있도록 하는 중요한 데이터 구조입니다.

복습

  • OOOO는 임의의 길이를 갖는 데이터를 고정된 길이의 데이터로 변환시켜주는 함수입니다.
  • 블록체인의 데이터 안정성과 무결성을 보장할 수 있도록 하는 데이터 구조 중 하나로, 여러 데이터를 단계적으로 해시하여 하나의 해시값으로 만드는 데이터 구조는 무엇인가요?
  • 블록 체인의 ‘연결고리’가 되는 중요한 함수는 무엇인가요?