인프런 커뮤니티 질문&답변

지루한 해삼님의 프로필 이미지
지루한 해삼

작성한 질문수

장박사의 블록체인 이해와 구조

블록체인 구조 분석(1)

머클트리 해시

작성

·

494

0

안녕하세요. 강의 잘 듣고 있습니다.

 

머클트리 해시를 사용해서 굳이 해시를 구하는 이유가 뭘까요?

거래별로 해시를 구하고

전제 거래들의 해시를 모두 합해서 하나의 해시로 만들어서 해더에 넣으면 계산양도 많지 않고 좋을 것 같은데...

굳이 트리 형식의 해시를 반복해서 하는 이유가 있을까요? 해시 계산 횟수가 증가하는데 이렇게 한 이유가 분명히 있을것 같아서요..

보안상이라고 이해해보려고 했는데.. 거래별로 해시를 구하고.. 그 개별 해시들을 합해서 해시 한번만 구해도 될것같아서요..

아니면 모든 거래내역을 한번에 넣고 해시를 구해도되죠.

 

감사합니다. :)

답변 1

0

멘토티멘토링님의 프로필 이미지
멘토티멘토링
지식공유자

강의 신청하시고 좋은 질문 남겨주셔서 감사합니다.

거래마다 각자의 데이터(트랜잭션)가 무결성 된다는 것을 보증하기 위해서 입니다.

트랜잭션별로 무결성을 보장하기 위해서 해시 해야 하더라도 한꺼번에 하지 않는 이유는 두 가지로 말씀 드릴 수 있습니다.

질문 주신것 처럼 머클트리가 아닌 다양한 알고리즘을 선택 할 수 있으며, 단지 비티코인은 이진해시 알고리즘을 적용한 머클트리 알고리즘을 적용 했을뿐입니다. 다양한 메인넷이 있으며 다양한 알고리즘이 있습니다. 2009년 비트코인이 처음 나왔을때 개발은 이미 이전부터 해 왔었고, 그 당시 머클트리와 같이 다양한 알고리즘이 있었지만 가장 적합하고 안전하고 보수적인 방법을 선택하지 않았을까 생각합니다.

두 번째 이유는 트랜잭션마다 고유의 정보이다 보니, 특정한 트랜잭션이 변경됐을 경우 추적을 용이하게 하기 위해서 입니다. 해시 알고리즘 특징 중에 입력이 같으면 출력 결과도 같기 때문에 우리는 트랜잭션의 데이터가 무엇인지 알면 언제든 해시값을 만들어 낼 수 있습니다. 즉, 이미 블록체인에 저장된 트랜잭션의 해시 값은 비트코인 탐색기를 통해 알 수 있고, 트랜잭션 데이터도 알 수 있어서 블록체인에 기록된 내용을 우리는 스스로 얼마든지 검증해 볼 수 있습니다.

1) 트랜잭션 생성

2) 트랜잭션 해시 > 머클트리

3) 블록체인에 트랜잭션 해시와 트랜잭션 데이터 기록

4) 추후에 언제든지 검증해 볼 수 있음

질문 주신것처럼 모든 트랜잭션을 한번에 해시 하면 이런 추적은 불가능하겠죠?^^

 

도움이 되셨나요?^^

행복한 하루 되세요.

 

 

감사합니당

 

답변은 잘 읽었습니다. 상세한 설명 감사드립니다. 제가 이해를 잘 못한건지 여전히 머클트리해시가 궁금하네요.


위와 같은 이유라면 굳이 이진트리로 하지말고 개별 거래에 대한 해시들만 합쳐서 다시 해시를 구해서 사용하면 되는데.. 굳이 이진트리 형식까지 써가면 머클트리 해시를 구하는 이유가 있을까요?

멘토티멘토링님의 프로필 이미지
멘토티멘토링
지식공유자

안녕하세요.

이진트리가 머클트리입니다. ^^

트랜잭션별로 해시를 하고, 각각 생성된 해시를 이진트리가 아닌 한번 해시로 해도 해시라는 값은 동일하지만, 각각 트랜잭션에 대한 검증 및 검색 속도가 달라집니다.
블록안에 트랜잭션들이 담겨져 있고, 각각 트랜잭션별로 해시를 만들고, 이진트리를 하면 머클트르 루트입장에서 트랜잭션 검색시 빨라야 하는데, 이런 방법 적용에 있어서 이진트리가 검색속도가 빠른 편입니다. 이진을 확률이 50%라서요.
또한, 트랜잭션 변경이 있을 경우 찾기도 쉽게 하기 위해서랍니다.

도움이 되셨기를 바랍니다.
감사합니다.

아.. 이해 했습니다. :) 이진트리로 검색하는거군요. 아하.. ㅋㅋㅋ

지루한 해삼님의 프로필 이미지
지루한 해삼

작성한 질문수

질문하기