아하
생활

생활꿀팁

훈훈한너구리239
훈훈한너구리239

블록 헤더에 다양한 정보들이 포함된다고 하는데요 그 중에서 머클루트라는 것이 포함된 이유가 무엇일까요?

블록 헤더에는 타임스탬프, BITS, 논스, 머클루트 등이 포함된다고 알고 있어요.

타임스탬프는 블록이 생성된 시간, BITS는 난이도, 논스는 함수 문제의 정답 값이라고 알고 있는데요

머클루트는 어떤 기능을 하는지 궁금해요. 또 머클루트가 있어야 하는 이유는 무엇인가요?

답변 부탁드릴게요~

    55글자 더 채워주세요.
    2개의 답변이 있어요!
    • 때가쏙비트
      때가쏙비트

      안녕하세요. 머클트리는 블록체인 기술을 이용하는 암호화폐에 있어 중요한 역할을 합니다. 머클트리는 블록 내 저장된 트랜잭션 중 최초의 트랜잭션을 SHA-256 형태의 해쉬값으로 변환시킨 뒤 알고리즘 순에 의해 가장 가까운 노드 2개를 한쌍으로 묶어 합친 뒤 또 해쉬로 값을 변환하고 이 과정을 반복하여 마지막 하나가 남을 때까지 반복하게 됩니다. 그럼 하나의 블록 내에 모든 트랜잭션을 합친 해쉬값이 나오는데 이 값을 머클루트라고 합니다.

      머클트리를 생성하게 되면 데이터의 간편하고 확실한 인증이 가능해 집니다. 블록체인의 전체 정보를 저장하면 필요한 용량이 많아서 라이트노들은 블록체인의 정보를 머클트리를 이용한 머클루트 값만 가지게 됩니다. 한가지 해쉬로 생성된 머클루트 값은 64자를 가지고 있으며, 머클루트 값 하나만 가지게 되므로 다양한 디바이스들이 노드로 참여할 수 있어서 보안적인 측면에서도 좋아지게 되죠. 그리고 검증을 빠르고 확실하게 할 수 있게 됩니다.

    • 머클루트에 대해 설명을 드리기 전에 머클트리에 대한 설명부터 드리도록 하겠습니다. 머클트리(Tree)는 여러 거래 내역을 두 개씩 묶어 암호화(SHA256)하여 해시값으로 나타내는 과정을 계층적으로 반복함으로써 더 높은 층위로 갈수록 거래내역이 하나로 축약되어 가는 것이 마치 나무 모양과 같은 것을 일컫습니다. 그리고 최종적으로 모든 거래 내역이 포함된 하나의 해시값으로 나타나 있는 정보를 '머클루트(Root)'라고 부릅니다.

      즉, 어떤 책의 내용이 있다고 할 때 해당 내용을 두 페이지씩 계속해서 부분 부분 요약해 가면서 합쳐나감으로써 한장 짜리 요약본을 만드는 것과 비슷하다고 할 수 있습니다.

      이 머클루트의 경우 블록 헤더의 정보에 포함되게 되는데요, 머클 트리가 거래를 두 개씩 해시하여 층위를 나눠 만들어진다고 할 때 한 층위가 올라 갈 때마다 거래의 수는 절반으로 줄어들게 됩니다. 아래 그림을 참고로 해 주시면 좋을 듯합니다.

      1. [ㅁ]

      2. [ㅁ ㅁ]

      3. [ㅁ ㅁ] [ㅁ ㅁ]

      4. [ㅁ ㅁ] [ㅁ ㅁ] [ㅁ ㅁ] [■ ㅁ]

      이렇게 머클트리를 활용하게 되면 아무리 거래 내역이 많다고 하더라도 원하는 정보를 쉽게 찾을 수 있습니다. 블록에 포함된 머클 루트에 모든 거래 내역이 해시화되고 압축되어 있으므로 이 머클루트로 머클트리가 몇 개의 거래 내역으로 어떻게 구성되어 있는지 구조를 손쉽게 파악할 수 있습니다. 이렇게 되면 특정 거래 내역을 검색하기 위해서 마치 사다리 타기를 하듯이 빠르게 정보를 찾을 수가 있게 됩니다.

      예를 들어 위의 그림에서 '■'에 해당하는 거래 정보를 찾는다고 할 때 머클루트의 정보가 있기 때문에 일일이 모든 거래 내역을 뒤지지 않고서도 1번 머클루트에서 시작하여 '2단계 -> 3단계 -> 4단계 ■'까지 사다리 타기 처럼 내려가서 3단계만 거친다면 거래내역 ■를 손쉽게 찾을 수 있게 되는 것입니다.

      끝으로 이 머클트리 구조와 블록 헤더에 포함된 머클 루트를 활용하여 거래 내역을 빠르고 손쉽게 검증할 수 있습니다. 왜냐하면 어떤 블록의 거래 내역이 조작되었다고 한다면 머클루트에서 시작하여 해당 거래 내역까지 도달하려고 할 때 그 과정에서 최종 해시 값에 차이가 생기기 때문입니다. 즉, 어떤 책을 부분 부분 요약하여 하나로 합쳐 가며 한 페이지 짜리로 만들어 두었을 경우에 그 한 페이지의 내용부터 시작해서 책의 원문 내용으로 올라간다고 할 때 예전에 부분 부분으로 요약된 정보와 책의 원문 내용이 다르다면 그 책의 원문이 수정되었다는 것을 쉽게 파악할 수 있는 것과 비슷하다고 할 수 있습니다.

      답변이 도움이 되길 바랍니다.