암호학이나 컴퓨터 과학에서 머클 트리(Merkle tree) 는 모든 자식 노드들이 암호학적 해시로 이뤄진 데이터 블록을 갖는 트리 형태의 자료 구조로 해시 트리(hash tree)라고도 부릅니다.
랄프 머클(Ralph Merkle) 이 발명했고 79년에 특허를 받았습니다.
용도
머클 트리는 위와 같이 자식 노드의 데이터를 암호학적 해시로 계산한 값을 트리로 만든 데이터로 블록 단위로 빠르게 데이터를 검증하고 이상 유무를 확인할 수 있습니다.
Bit torrent
그래서 네트워크로 상대방에게 파일을 보낼때 블록 단위로 나눠서 보내고 각 블록을 머클 트리로 만들어두면 수신한 데이터가 문제있을 경우 전체 데이터를 받지 않고 문제되는 블록 데이터만 받을수 있는 장점이 있습니다.
이때문에 파일 전송 프로토콜인 Bit torrent 에서는 머클 트리를 사용하고 있습니다.
file system
Btrfs 나 ZFS 같은 file system 은 데이터 무결성을 검증하기 위해 머클 트리 자료 구조를 사용합니다.
git
머클 트리를 사용하는 유명한 프로그램은 버전 관리 도구인 git 입니다.
git 에서 브랜치와 머지는 이전 상태를 자식으로 갖고 있는 머클 트리이며 커밋 해시는 자식 노드의 데이터를 해시한 값입니다.
Bit coin
이제는 머클 트리를 사용하는 가장 유명한 제품은 비트 코인이 아닐까 싶습니다.
비트 코인의 원장은 머클 트리 구조로 이전 트랜잭션 데이터를 묶어서 해시한 값을 갖고 있습니다.
Add Comment