머클 트리는 전체 데이터베이스의 버전을 검토하고 비교할 필요없이 개별 기록을 확인할 수 있습니다. 개별 레코드를 공개하는 암호화를 사용하여 데이터베이스의 다른 모든 레코드가 변경되지 않았 음을 보장합니다.. 1979 년 Ralph Merkle에 의해 처음 특허를받은 Merkle 나무는 컴퓨터 역사 전반에 걸쳐 데이터베이스 검증에 중요한 열쇠였습니다..

머클 트리는 여러 컴퓨터가 동일한 데이터베이스 또는 원장의 사본을 보관하는 분산 네트워크에 특히 유용합니다. Satoshi가 Bitcoin을 만들었을 때 거래 확인을 위해 Merkle 트리를 사용하는 것은 당연한 일이었습니다. 블록 체인의 분산 된 특성으로 인해 네트워크의 모든 사람이 동일한 원장을 가질 수 있도록 안전하고 빠른 방법이 필요합니다..

블록 체인을 공부했다면 머클 트리와 머클 뿌리에 대해 들어 보셨을 것입니다. 그러나 많은 투자자와 애호가들은 그들이 어떻게 작동하는지 모릅니다. 블록 체인 보안 및 신뢰의 핵심 부분이라는 점을 고려할 때 기본 사항을 이해하는 것이 좋습니다. 이 독창적 인 메커니즘으로 수백만 개의 블록 체인 트랜잭션을 저장하고 검색 할 수 있습니다..

효율적인 검증의 필요성

기본부터 시작하겠습니다. 머클 트리가 필요한 이유와 블록 체인 컨텍스트에서 유용한 이유?

이 질문에 답하려면 검증을 위해 Merkle 트리가없는 세계를 고려하십시오. 비트 코인에 머클 트리가 없다면 네트워크의 모든 노드는 비트 코인에서 발생한 모든 단일 트랜잭션의 완전한 사본을 보관해야합니다. 그런 다음 과거 트랜잭션을 확인할 때 노드는 네트워크에 연결하여 피어로부터 원장 사본을 가져와야합니다. 한 줄씩, 노드는 네트워크 원장이 정확히 일치하는지 확인하기 위해 각 항목을 자체 레코드와 비교해야합니다. 변경 사항이 빠져 나가면 네트워크 보안이 손상됩니다..

데이터를 검증하려면 데이터 자체가 필요하기 때문에 비트 코인에 대한 모든 단일 검증 요청은 네트워크를 통해 엄청난 양의 정보 패킷을 전송해야합니다. 그런 다음 유효성 검사 컴퓨터는 변경 사항이 없는지 확인하기 위해 원장 비교에 처리 능력을 할당해야합니다..

머클 트리는 원장의 레코드를 해싱하여이 문제를 해결합니다. 이것은 데이터 자체에서 데이터 증명을 효과적으로 분리합니다. 이러한 해시는 원장 자체보다 훨씬 작기 때문에 트랜잭션의 유효성을 입증하려면 네트워크를 통해 작은 패킷 만 전송해야합니다. 두 가지 버전의 원장이 최소한의 컴퓨팅 성능과 네트워크 대역폭으로 일관된다는 것을 증명할 수 있습니다..

그게 좋게 들리면 그렇기 때문입니다. 머클 트리는 정말 멋진 암호화 발명품입니다. 이제 문제는 어떻게 작동합니까??

해싱에 대한 빠른 복습

Merkle 트리에 대해 자세히 알아보기 전에 해싱에서 암호화 기반이 필요합니다. 블록 체인은 작업 증명 알고리즘에서 파일 검증에 이르기까지 모든 곳에서 해싱을 사용합니다. 해싱은 현대 암호화의 초석입니다..

잡초에 너무 많이 들어 가지 않고 해시는 길이에 관계없이 입력을 받아 표준 길이의 임의 출력을 출력하는 알고리즘 유형입니다. 예를 들어 비트 코인에서 “Alice가 Bob 1 BTC를 보냅니다”트랜잭션은 결국 임의의 문자열처럼 보입니다.

“3cbcf3e1075b0b3357140de438336733bd6927cd1e78d36cc278324fcce932ad”

이 문자열은 해시이며 결정적입니다. 그것은“A -> B 1BTC”는 항상 동일한 출력으로 해시합니다..

그러나 해시는 또 다른 훌륭한 속성이 있습니다. 입력의 작은 변화조차도 출력의 급격한 변화를 나타냅니다. 트랜잭션을 “A”로 약간 수정하면-> B 1.1BTC”를 입력하면 해시가 완전히 달라집니다. 따라서 한 글자라도 레코드가 바뀌 었는지 즉시 알 수 있습니다..

해시는 다른 이유로도 훌륭하지만 해시가 결정적이며 변경 사항이 폭포를 생성한다는 것을 이해하면 Merkle 트리의 작동 방식을 알 수 있습니다..

머클 트리를 만드는 방법

머클 트리 단순

머클 트리. 블록 체인 머클 트리에는 수천 개의 해시가 포함됩니다. 여기에 8 개만 그려져 있습니다..

이제 머클 트리를 만들 차례입니다. 위의 Allice / Bob 거래는 ‘거래 A’라고합니다. 해당 트랜잭션이 블록 체인에 추가되면 다른 트랜잭션과 함께 블록의 일부가됩니다. 단순화를 위해 이러한 트랜잭션을 B, C, D라고 부르겠습니다..

이러한 각 트랜잭션은 해시되므로 트랜잭션이 누구이고 얼마나되었는지에 대한 세부 정보를 보유 할 필요가 없습니다. 그러나 우리는 모든 해시를 가지고 있기 때문에 거래가 변조되지 않았 음을 여전히 증명할 수 있습니다. 이제 H (A), H (B), H (C), H (D)가 있습니다..

네 개의 해시를 보유하는 것은 그렇게 큰 문제가 아닙니다. 그러나 각 비트 코인 블록에는 약 2,000 개의 트랜잭션이 포함되어 있으므로 이러한 모든 해시를 보유하고 전송하는 것은 너무 많은 스토리지와 대역폭입니다. 머클 트리는 트랜잭션을 페어링하고 함께 해싱하여 문제를 해결합니다..

이제 H (A) + H (B) = H (AB) 및 H (C) + H (D) = H (CD)입니다. 트랜잭션을 결합하고 해싱함으로써 저장해야하는 해시의 수를 절반으로 줄였습니다. 다시 같은 일을 할 수 있으므로 H (AB) + H (CD) = H (ABCD). 그렇게함으로써 우리는 이제 모든 기본 트랜잭션의 해시를 기반으로 결정적인 하나의 해시 만 저장할 수 있습니다. 이 단일 해시는 머클 루트라고합니다..

머클 루트를 사용하여 트랜잭션 확인

Merkle 트리의 루트 해시는 체인의 다음 블록에 연결되는 각 비트 코인 블록의 핵심 부분입니다..

각 비트 코인 블록에는 블록 헤더에 포함 된 Merkle 루트가 있습니다. 블록의 내용과 여러 원장의 일관성을 확인하는 방법입니다. 내 블록 체인 사본이 블록에 대한 Merkle 루트가 블록 체인 사본과 동일한 경우 해당 블록의 모든 트랜잭션이 동일하다는 것을 알고 원장에 동의합니다. 작은 불일치조차도 해시의 속성으로 인해 매우 다른 Merkle 루트로 이어질 것입니다..

merkle 확인 tx

거래 D를 확인하려면 H (AB), H (C), H (D), H (EFGH) 만 알면됩니다..

Merkle 루트에 불일치가있는 경우 신뢰할 수있는 기관에 두 개의 하위 해시를 요청할 수 있습니다. 여기에서 추가 하위 해시를 요청하여 동의하지 않는 레코드를 좁힐 수 있습니다. 결과적으로 전체 원장을 한 줄씩 살펴 보지 않고도 불일치를 식별 할 수 있습니다..

결론

전 세계의 블록 체인, 데이터베이스 및 네트워크는 Merkle 트리를 사용하여 여러 컴퓨터에서 레코드를 빠르고 효율적으로 조정합니다. 이제 기본 사항을 이해 했으므로 이러한 데이터 구조화 방식이 블록 체인을 안전하고 효율적으로 만드는 이유를 쉽게 알 수 있습니다..