블록체인의 가장 큰 장점은 블록체인의 모든 데이터를 참여자들이 모두 공유한다는 것이다. 그러나 블록체인의 크기가 계속해서 증가한다면 공유를 위해 많은 데이터를 동기화해야하기 땜누에 큰 문제가 아닐 수 없다. 따라서 비트코인의 경우 이 문제를 해결하기 위해 머클 트리를 사용했고, 이더리움에서는 이를 개선하여 머클 페트리시아 트리(Merkle Patricia Tree)라는 암호 해시 기반의 트리 자료구조를 사용한다. 그리고 트리 내의 모든 정보는 레벨DB에 저장한다.
이더리움은 Keccak256 암호 해시를 사용한다.
이더리움 블록 헤어데 포함되어 있는 상태(root), 트랜잭션(TxHash), 리시트(ReceiptHash) 중 트랜잭션과 리시트는 일단 블록 내에 저장되면 변하지 않는다. 그러나 어카운트 정보를 포함하고 있는 상태(Root)는 키(key)와 값(value)의 맵(map) 구조이기 때문에 자주 변경된다. 왜냐하면 어카운트는 생성되거나 삭제될 수 있고 잔액 또한 수시로 변할 수 있기 때문이다. 이러한 특징때문에 상태 트리의 경우 머클 트리에 패트리시아 트리의 특징을 결합한 머클 패트리시아 트리를 사용한다.
상태 머클 패트리시아 트리는 새로운 어카운트가 추가되거나 삭제되는 등 변경이 자주 발생한다. 이렇게 변경이 자주 발생하면 머클 트리는 변경된 부분과 관련된 트리의 해시값을 매번 재계산해야 한다. 따라서 머클 트리에서 재계산을 줄이기 위한 개선이 필요하게 되었다. 이더리움 개발팀은 기존 머클 트리에 두 가지 추가적인 개선사항을 도출하였다.
트리 깊이를 한정 짓지 않으면 자칫 디도스 공격 등으로 트리를 무한정 깊게 만들어 급격한 성능 저하를 가져올 수 있다.
업데이트가 되더라도 머클 루트가 변경되지 않도록 머클 루트에 숫자 값을 주고 이 값에 한정되도록 하는 것이다. 이렇게 하면 전체 트리를 재계산하더라도 트리 루트는 변경되지 않는다.
패트리시아 트리는 트리의 각 노드에 숫자 값을 지정하여 경로를 표시한다. 이더리움은 기존 머클 트리에 패트리시아 트리의 장점을 추가하여 머클 패트리시아 트리를 구현하였다.