[Blockchain] Merkle
머클 루트? 머클트리?
머클 루트(Merkle Root)와 머클 트리(Merkle Tree)는 블록체인에서 데이터의 무결성을 검증하고 효율적으로 저장하기 위한 구조입니다. 이들은 주로 트랜잭션 데이터를 블록 안에서 관리하고 검증하는 데 사용됩니다.
* 트랜잭션 - 블록체인 네트워크에서 수행되는 모든 활동이나 거래를 나타냅니다. 이는 디지털화된 자산 또는 가치가 전송되거나 변경되는 모든 과정을 포함합니다. 블록체인은 탈중앙화된 분산 시스템으로, 트랜잭션은 이러한 분산 시스템에서 안전하게 기록되어 블록이라는 단위로 연결되어 있습니다. 예를 들어 디지털화된 자산 전송, 분산 원장에 기록, 스마트 계약 실행, 암호화와 서명 등등
머클 트리(Merkle Tree):
머클 트리는 트랜잭션 데이터를 트리 구조로 구성하는 방법입니다. 데이터는 각각의 리프 노드(leaf node)로 표현되고, 각 리프 노드는 해당 데이터의 해시 값입니다. 그 다음 레벨에서는 각 두 개의 리프 노드의 해시를 계산하여 상위 노드로 올라가며 트리를 구성합니다. 이 과정을 반복하여 최종적으로 루트 노드에 도달하게 됩니다.
머클 루트(Merkle Root):
머클 루트는 머클 트리의 최상위 노드로, 모든 데이터를 요약한 단일 해시 값입니다. 머클 루트는 블록 헤더에 저장되어 블록의 무결성을 나타내는 중요한 값 중 하나입니다. 머클 루트를 사용하면 블록체인 네트워크에서 효과적으로 블록의 무결성을 확인할 수 있습니다.
블록에 새로운 트랜잭션이 추가되면 머클 트리를 업데이트하고, 이에 따른 머클 루트도 업데이트됩니다. 또한, 머클 루트를 통해 특정 트랜잭션이 블록에 속해 있는지 확인할 수 있습니다.

최하단에 위치한 거래 노드(Transaction: Tx0, Tx1, Tx2, Tx3)들을 제외한 모든 노드들이 해시 값을 가지고 있고 또 자식 노드들을 2개씩 가지고 있어서 이진 트리 형식을 만족합니다.
비트 코인에서 한 블럭 안의 모든 거래는 머클 루트라는 하나의 값으로 요약됩니다.
이 머클 루트 값을 구하려면 위 머클 트리에 표시한 Step 1, Step 2, Step 3 순으로 차례대로 해시하면 됩니다.
루트 해시 값 하나로 한 블럭에 담겨있는 모든 거래들의 위변조를 검증할 수 있습니다. 최하단의 거래 노드 중 하나만 변조되어도 트리 구조의 특성상 루트 해시 값은 바뀔 수 밖에 없기 때문입니다.
그리고 이렇게 완성된 하나의 블럭은 다른 블럭과 연결됩니다. 다들 아시다시피 이 구조를 블록체인(Blockchain)이라고 부릅니다.
