머클 트리는 컴퓨터 과학 응용 프로그램에 사용되는 데이터 구조입니다. 비트 코인 및 기타 암호 화폐에서 머클 트리는 블록 체인 데이터를보다 효율적이고 안전하게 인코딩합니다.
"이진 해시 트리"라고도합니다.
머클 트리 분해
비트 코인의 블록 체인에서 트랜잭션 블록은 알고리즘을 통해 실행되어 해시를 생성합니다. 해시는 주어진 데이터 집합이 원래 트랜잭션 집합과 동일한 지 확인하는 데 사용할 수있는 숫자와 문자의 문자열입니다. 원래 거래 세트를 얻지 못합니다. 그러나 Bitcoin의 소프트웨어는 한 번에 해시 기능을 통해 평균 10 분 분량의 트랜잭션을 나타내는 전체 트랜잭션 데이터 블록을 실행하지 않습니다. 오히려 각 트랜잭션이 해시 된 다음 각 트랜잭션 쌍이 연결되고 해시되며 전체 블록에 대해 하나의 해시가있을 때까지 계속됩니다. (홀수의 트랜잭션이있는 경우 하나의 트랜잭션이 두 배가되고 해시 자체와 연결됩니다.)
시각화 된이 구조는 나무와 유사합니다. 아래 다이어그램에서 "T"는 트랜잭션 "H"를 해시로 지정합니다. 이미지는 매우 단순합니다. 평균 블록에는 8 개가 아닌 500 개가 넘는 트랜잭션이 포함됩니다.
맨 아래 행의 해시는 "리브", 중간 해시는 "분기", 맨 위의 해시는 "루트"라고합니다. 주어진 블록의 Merkle 루트는 헤더에 저장됩니다. 예를 들어, 블록 # 482819의 Merkle 루트는 e045b18e7a3d708d686717b4f44db2099aabcad9bebf968de5f7271b458f71c8입니다. 루트는 다른 정보 (소프트웨어 버전, 이전 블록의 해시, 타임 스탬프, 난이도 목표 및 nonce)와 결합 된 다음 해시 함수를 통해 블록의 고유 해시를 생성합니다. 000000000000000000bfc767ef8bf28c42cbd4bdbafd9aa1b5c3c33c2b089594 # 482819. 이 해시는 실제로 관련 블록에 포함되지 않고 다음 블록에 포함됩니다. 머클 뿌리와는 다릅니다.
머클 트리는 사용자가 전체 블록 체인을 다운로드하지 않고도 특정 거래를 확인할 수 있기 때문에 유용합니다 (2017 년 8 월 말에 130 기가 바이트 이상). 예를 들어, 트랜잭션 다이어그램이 위 다이어그램의 블록에 포함되어 있는지 확인하려한다고 가정하십시오. 루트 해시 (H ABCDEFGH)가 있으면 프로세스는 스도쿠 게임과 같습니다. H D 에 대해 네트워크를 쿼리하면 H C, H AB 및 H EFGH가 반환됩니다. Merkle 트리를 사용하면 H AB, H C, H EFGH 및 루트 H ABCDEFGH, H D (유일하게 누락 된 해시)가 데이터에 있어야하는 세 가지 해시로 모든 것이 설명되는지 확인할 수 있습니다.
머클 트리는 Ralph Merkle의 이름을 따서 1987 년 "기존 암호화 기능을 기반으로 한 디지털 서명"이라는 논문에서 제안했습니다. Merkle은 또한 암호화 해싱을 발명했습니다.