머클트리 설명

머클트리 설명

블록 체인을 이해하려면 기본이되는 기본 원칙을 알아야합니다. 머클트리 혹은 해쉬트리라고 불리는 데이터구조는 Ralph Merkle가 만들고 특허낸 구조입니다. 이 개념은 1979년에 고안한 개념으로 블록체인에서 사용되고 있습니다. 대규모 분산 네트워크의 문제를 해결하는데 도움이 됩니다.

머클트리란 무엇이며 암호화폐와 어떤 관련이 이 있는지 Changelly 기사에서 알아 보겠습니다!

머클트리의 기본사항

머클 트리는 데이터 블록의 해시가 있는 리프 정점에서 트리 형태의 완전한 데이터 구조이며, 내부 정점에는 하위 정점에 값을 추가하여 해시가 포함됩니다. 이것은 모든 요소와 그들 사이의  정보를 연결합니다.

머클트리의 기본사항

해시는 해시 함수를 변환 한 결과입니다. 특정 알고리즘에 따라 임의 길이의 입력 데이터 배열을 지정된 길이의 출력 문자열로 변환하는 기능입니다.

머클트리(Merkle Tree)는 무엇을 위해 사용됩니까?

중앙 집중식 시스템에서는 모든 구성 요소가 하나의 중앙 집중식 노드에 의존하기 때문에 정보의 진실성은 문제가 되지 않습니다. 은행계좌로 송금 할 때 돈의 진위에 대해 걱정할 필요가 없습니다.

그러나 분산 네트워크에서는 모든 것이 그렇게 간단하지 않습니다. 각 노드는 전송 된 정보의 진실성을 담당하므로 네트워크상의 트랜잭션 수로 인해 전체 볼륨의 신뢰성을 확인하는 것은 쉬운 일이 아닙니다. 최소한 머클 트리가 없으면 해싱을 사용하여 데이터를 표시하는 프로세스를 최적화 할 수 있습니다.

파일 시스템은 머클 트리를 사용하여 오류 정보를 확인하고 분산 데이터베이스는 레코드를 동기화합니다. 블록 체인에서 해시 트리를 사용하면 간단한 결제 확인 (SPV)이 가능합니다.

트랜잭션 정보를 확인하고 모든 해시를 다시 계산하지는 않지만 머클의 증거를 요청하기 위해 경량이라는 SPV 클라이언트 (내용이 아닌 블록 헤더 만 저장하기 때문에). 클라이언트는 다른 작업에 대한 정보가 필요하지 않기 때문에 요청 된 트랜잭션에서 루트로의 해시를 포함하는 루트와 분기로 구성됩니다. 요청 된 해시를 추가하고 루트와 비교할 때 클라이언트는 트랜잭션이 제자리에 있는지 확인합니다.

이 접근 방식을 사용하면 필요한 해시 만 다운로드 되므로 네트워크의 부하를 크게 줄이기 때문에 임의로 많은 양의 데이터를 작업 할 수 있습니다. 예를 들어, 최대 크기의 트랜잭션 5개가 포함 된 블록의 크기는 500KB 이상입니다. 같은 경우 머클의 크기는 140 바이트를 초과하지 않습니다.

비트 코인에서 머클 트리 작동 방식

해시 함수는 입력 데이터를 지정된 길이의 비트 문자열로 변환하는 프로세스입니다. 수신 된 문자열 인 해시는 수신 데이터의 배열에 따라 매우 다릅니다. 전체 배열에서 하나의 문자만 변경되면 결과 해시는 완전히 다른 값을 갖습니다.

비트코인 블록의 모든 트랜잭션은 16 진수 형식의 문자열입니다. 해시되어 트랜잭션 식별자 (txid)로 표시됩니다. 블록의 모든 txid는 블록의 단일 해시 값이 수신 될 때까지 해시됩니다. 이 과정에서 머클 트리가 생성됩니다.

  1. 먼저 txid (트랜잭션 ID) 자체, 즉 트랜잭션 해시가 계산됩니다.
  2. 그런 다음 트랜잭션 해시의 합계에서 해시가 계산됩니다. Merkle 트리는 바이너리입니다. 즉, 각각의 새로운 해시 단계마다 트리 요소의 수가 짝수여야합니다. 블록에 홀수 개의 트랜잭션이있는 경우 마지막 블록의 해시가 복제되어 자체에 추가됩니다.
  3. 새로운 해시는 트랜잭션 해시의 합의 해시로부터 계산됩니다. 단일 해시를 얻을 때까지 프로세스가 계속됩니다 (Merkle root). 블록 헤더에 표시됩니다.
머클 트리 작동 방식

비트코인 블록체인에서 머클트리는 SHA-256 알고리즘을 사용하여 구축됩니다. 다음은 hello 문자열을 해싱하는 예입니다.

First-round SHA-256: 

2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824

Second-round SHA-256:

9595c9df90075148eb06860365df33584b75bff782a510c6cd4883a419833d50

머클 트리의 원리

머클트리를 컴파일하는 과정은 데이터 폴딩과 유사합니다. 덕분에 거대한 거래 목록이나 다른 정보 배열을 한 줄로 나타낼 수 있습니다. 놀랍게도 동일한 트랜잭션 목록의 어딘가에서 하나의 심볼 만 변경하면 트리의 다음 레벨과 최종 해시가 완전히 달라집니다. 이것은 나무의 꼭대기 루트해시도 변한다는 것을 의미합니다.

즉, 다른 거래를 블록으로 대체하거나 기존 거래의 데이터를 변경할 수 없습니다. 이것이 머클 트리가 블록 체인에 거래를 기록하는 효율적인 방법으로 간주되는 이유입니다. 머클 프루프의 개념도 있습니다. 이것이 해시를 사용하여 정보의 유효성을 확인하는 원칙입니다. 전체 데이터 배열을 검사하는 대신 트리의 개별 해시를 검사하면 충분하므로 전체 프로세스의 계산 전력 오버 헤드가 크게 줄어 듭니다.

머클트리 대안

이 글은 Ralph Merkle이 발명 한 가장 간단한 바이너리 버전의 개념을 설명합니다. 여기에는 각“부모”해시에는 두 개의“헤어”가 있습니다. 비트코인에서 해시 트리는 SHA-256 이중 해싱을 사용하여 구성됩니다.

개념에 대한 더 복잡한 해석이 있습니다. 예를 들어, 이더리움은 접두사 머클 트리를 사용합니다. 각 이더리움 블록 헤더에는 트랜잭션, 실행 및 상태에 대한 정보와 같은 세 가지 트리가 한 번에 있습니다. 이진 트리와 달리 접두사 노드의 값은 다른 노드에 대한 연결에 따라 달라집니다. 값은 동적이며 고정되어 있지 않습니다. 트리의 모든 해시를 다시 계산하지 않고도 변경할 수 있습니다.

이더리움 머클트리

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다