이더리움 - 머클 페트리샤 트리(Merkle trees)

choko's avatar
Jun 29, 2024
이더리움 - 머클 페트리샤 트리(Merkle trees)
 
notion image
 
     
     
    • 머클 트리
      • 머클 트리 데이터의 무결성을 효과적으로 검증하는데 사용되는 구조이다.
      • 머클 루트 를 형성하기 위해, 반복적으로 데이터를 해시화한다.
      • 이후 데이터 조각이 잘못된 경우, 이를 효율적으로 검증할 수 있다.
        • 검증에 필요한 용량이 대폭 줄어들고, 저사양 디바이스의 참여가 가능해짐(라이트 노드)
          •  
    • 머클 루트
      • 머클 루트 의 해시가 개발자에 의해 공개된 것과 일치하는지 확인해야 한다.
        • 두 해시가 일치하면, 모든 파일이 정확히 일치한다고 할 수 있다. → O(logN)
        • 머클루트는 다음 과정으로 만들어진다
          • 최초 데이터를 SHA256 형태의 해시값으로 반환
          • 가장 가까운 2개의 노드를 한 쌍으로 묶어 합친 후, 해시값으로 반환
          • 위 과정을 계속하여, 마지막 하나가 남을 때까지 반복
            • 머클루트의 값이 됨
            • 이 과정을 통해, 각 리프노드의 거래 정보들의 유효성 검사를 할 수 있음
            •  
    • 머클 페트리샤 트리
      • 이더리움은 머클 패트리샤 트리를 사용한다.
        • 머클 트리 + 페트리샤 트리이다. 여기서 페트리샤 트리는 트라이 이다.
          • 트라이문자열을 빠르게 탐색할 수 있는 자료구조이다.
      • 머클 페트리샤 트리도 해시 기반 트리 구조이다. 데이터가 변경되면 상위 노드들의 해시가 바뀐다.
      • 각 레벨에서 중복되는 해시를 최소화해 효율적인 압축 구조를 갖는다.
      • 트리에서의 위치가 키를 정의하는 데 사용된다는 점에서 머클 트리와 다르다
      •  
        notion image
      • 공통 접두사를 하나의 키에 저장하기 때문에 공통 접두사를 찾는 속도가 빨라지고, 그 결과로
        • 메모리 사용량 감소, 검색 속도 향상, 노드 탐색 최소화가 가능하다.
     
    • 머클 페트리샤 트리에는 다음 데이터들이 저장된다.
        1. 상태 루트(State Root)
            • 모든 Account와 Account의 상태 데이터가 저장된다.
        1. 트랜잭션 루트(Transaction Root)
            • 블록에 포함된 모든 트랜잭션 데이터를 나타낸다.
            • 각 거래의 송신자, 수신자, 금액, 데이터 등 정보가 포함됨
        1. reciept 루트
            • 거래 결과 (영수증)
     

    ref

     
    Share article

    Tom의 TIL 정리방