안녕하세요 김광호님,
일단 머클트리를 설명드리기 전에 이더리움의 블록 생성 과정에 대해서 잠깐 말씀을 드려야 할 것 같습니다.
대부분의 POW 합의 알고리즘을 사용하는 블록체인 플랫폼들은 블록을 생성하는 일명 '채굴'을 하는 노드(Node) 라고 불리는 특별한 클라이언트가 있습니다.
노드는 개인도 단순히 이더리움의 경우 Geth 의 명령어 몇가지만으로 뚝딱뚝딱 실행해 보실 수 있습니다.
이러한 특수한 클라이언트들은 단순히 거래만을 발생시키는 여러 사용자들의 거래정보들을 한데 모아 블록이라고 하는 비가역적인 데이터 셋을 생성합니다.
이때, 현존하는 대부분의 블록체인은 머클트리를 사용하여 블럭을 구조화하죠.
이 머클 트리는 아래 그림과 같이 구성 되어있는데요,
보시게 되면 Top Hash는 모든 거래 내역의 배타적인 해쉬값의 합으로 구해집니다.즉, Top Hash 를 구한 이후에 새로운 거래 내역을 추가하는것은 계산을 또 다시 해야만 하는 아주 비효율적인 방법입니다.
그래서 대부분의 블록체인은 블럭에 어떤 거래들을 포함할지 결정하고 블럭을 생성하기 시도합니다.
블럭이 한번 생성되어 다른 노드들에게 전파되고 이더리움의 경우 6컨펌이 일어나게 되면 더이상 새로운 거래를 추가하거나 하는 일은 일어날 수 없습니다.
다만, 각 노드들이 담는 거래 내역은 완전히 다를 수 있기 때문에 A 노드가 블럭을 생성하였다고 하더라도 6 컨펌을 받지 못한다면 기 생성되었던 머클 루트가 달라질 수는 있습니다.
도움이 되었기를 바랍니다.