머클 폴라드란?
, 승인을 받아 Odaily에서 재인쇄했습니다.medium, 승인을 받아 Odaily에서 재인쇄했습니다.
보조 제목
해시 함수
이미지 설명

-해시시-
머클 트리
머클 트리
머클 트리는 여러 입력 값과 해시 값을 조합하여 고정 길이 값으로 압축하는 것을 말합니다.
이미지 설명

-메르켈 트리-
위에 보이는 Merkle 트리는 8개의 입력 값을 가지며 4개의 레이어로 나뉩니다. 루트 노드는 맨 끝에 0xd576...ffd9입니다.
이미지 설명

- 전체 Merkle 트리에 대한 변경 효과(회색 음영 부분)-
보조 제목
메르켈 경로
이미지 설명

-"Peach"보조 제목
메르켈 증명
이미지 설명

-메르켈 증명-
Merkle 증명에는 입력 값(빨간색 표시), 중간 분기 해시(녹색 표시) 및 Merkle 루트 노드(파란색 표시)의 세 가지가 필요합니다. 각 입력 값에 해당하는 중간 분기 해시 값 집합이 다릅니다.
블록체인 시스템은 종종 Merkle 증명을 사용하여 특정 입력 값이 데이터 세트에 존재한다는 것을 증명하므로 전체 데이터 세트를 블록체인에 저장할 필요가 없습니다. 이더리움 계약에 화이트리스트 목록이 있고 목록에 있는 계정만 이더리움을 구매할 수 있다고 가정합니다. 화이트리스트에 있는 각 계정의 정보가 블록체인에 저장되면 높은 비용을 지불할 수밖에 없습니다. 이 경우 머클 트리를 생성하고 루트 노드를 블록체인에 저장하면 됩니다.
예를 들어 루트 노드가 스마트 계약에 저장되어 있는 경우 스마트 계약은 계정이 화이트리스트에 포함되어 있음을 쉽게 증명할 수 있습니다. 계정은 중간 분기 해시를 제공해야 합니다(일부 오프체인 수단을 통해 계약 소유자가 제공). ).계정 소유자에게) 스마트 계약은 이 계정의 해시 값과 중간 지점의 해시 값에 대해 차례로 해시 계산을 수행합니다. 최종 결과가 Merkel 루트 노드와 일치하면 계정이 실제로 화이트리스트에 있음을 증명합니다.
마지막 두 그림에서 Merkle 경로와 Merkle 증명의 해시 사이의 관계에 주목하십시오. 동일한 트리의 동일한 수준에서 Merkle 증명의 해시 값은 Merkle 경로의 해시 값과 상관 관계가 있습니다. 이를 통해 Merkle 증명이 입력 값의 Merkle 경로를 재구성할 수 있음을 알 수 있으며, 이것이 최종 결과가 Merkle 루트 노드인 이유입니다.
지금까지 Merkle 증명에는 다음과 같은 특징이 있음을 알 수 있습니다.
머클 증명을 온체인에 저장하면 입력 값을 직접 저장하는 것보다 훨씬 적은 공간이 필요합니다.
Merkle 증명을 체인에 공개적으로 저장해도 전체 입력 값 세트가 노출되지 않습니다.
보조 제목
중복 증명
위의 예에서 각 계정은 화이트리스트에 있는지 확인하기 위해 Merkle 인증서만 보내면 됩니다.
또한, 머클 트리는 확률론적 지식 증명(종종 STARK라고 함)으로도 사용될 수 있으며, 각 지식 증명은 우리(즉, "검증자, 도전자")를 더욱 확신하게 만들 수 있습니다. 머클 트리의 생성자(즉, "증명자") ) 모든 구성 요소 값을 알고 있습니다. 이 경우 증명자는 일반적으로 수십 또는 수백 개의 입력 값을 포함하는 Merkle 트리를 기반으로 수백 개의 증명을 생성합니다. 이러한 증명은 유효성을 확인하기 위해 Merkle 루트 노드와 함께 유효성 검사기로 전송됩니다.
이미지 설명



-동일한 머클 루트의 중복 증명-
총 1개의 Merkle 루트 노드와 3개의 인증서가 전송되어 총 10개의 해시 값(루트 노드용 1개, 나머지 3개의 인증서 각각에 3개)이 전송되는 것을 볼 수 있습니다.
이미지 설명



-확장 머클 루트 노드의 중복 증명-
보조 제목
머클 트리 잘림
이미지 설명

- 1차 메르켈 절단 -
이미지 설명

- 2차 메르켈 절단 -
이미지 설명

-다양한 차수의 Merkle 트리 절단으로 인한 이점-
보조 제목
구현 예
https://github.com/wealdtech/go-merkletree/는 Go 언어로 구현된 Merkle 트리 절단을 제공합니다.


