머클트리 편집하기

이동: 둘러보기, 검색

경고: 로그인하지 않았습니다. 편집을 하면 IP 주소가 공개되게 됩니다. 로그인하거나 계정을 생성하면 편집자가 아이디(ID)으로 기록되고, 다른 장점도 있습니다.

편집을 되돌릴 수 있습니다. 이 편집을 되돌리려면 아래의 바뀐 내용을 확인한 후 저장해주세요.
최신판 당신의 편집
1번째 줄: 1번째 줄:
'''[[머클트리]]'''(Merkle Tree)<!--머클 트리-->는 [[블록]]에 포함된 거래 내역을 나무 형태로 요약한 것이다. 1979년 머클트리를 개발한 [[랄프 머클]](Ralph Merkle)의 이름을 따서 머클트리라고 부르며 '''해시트리'''(Hash Tree), 혹은 '''이진트리'''(Binary Tree)라고도 한다.
+
'''[[머클트리]]'''(Markle Tree)<!--머클 트리-->는 [[블록]]에 포함된 거래 내역을 나무 형태로 요약한 것이다. 1979년 머클트리를 개발한 [[랄프 머클]](Ralph Merkle)의 이름을 따서 머클트리라고 부르며 '''해시트리'''(Hash Tree), 혹은 '''이진트리'''(Binary Tree)라고도 한다.
  
 
== 개요 ==
 
== 개요 ==
머클트리는 블록 내에서 다수의 원장(ledger)들을 암호화하고 합치는 과정을 반복하여 최종적으로 하나의 유닛(Unit)으로 암호화하는 방법이다.<ref>YH, 〈[https://blog.naver.com/yunho85/221368892105 머클 트리 (Merkle Tree), 개념 어렵지 않습니다.]〉, 《네이버 블로그》, 2018-10-01</ref>  머클트리의 형태는 블록이 보유하고 있는 거래 내역들의 [[해시값]]을 가장 가까운 거래내역끼리 쌍을 지어 해시화하고, 쌍을 지을 수 없을 때까지 해당 과정을 반복하여 완성되는데, 이 과정을 통해 다수의 [[데이터]]를 하나로 묶어 용량을 절약할 수 있다.
+
머클트리의 형태는 블록이 보유하고 있는 거래 내역들의 [[해시값]]을 가장 가까운 거래내역끼리 쌍을 지어 해시화하고, 쌍을 지을 수 없을 때까지 해당 과정을 반복하여 완성된다. 이 과정을 통해 다수의 [[데이터]]를 하나로 묶어 용량을 절약할 수 있다.
  
 
머클트리에서는 모든 거래내역들을 해시화한 [[머클루트]]를 통해 거래내역의 변동여부를 쉽게 확인할 수 있고 이 머클루트를 헤더에 담아 [[트랜잭션]]의 유효성을 보장한다. 또한 머클 경로(Merkle path)를 제공받아 특정한 트랜잭션이 블록에 유효하게 있는 효율적인 검사가 가능하다. 즉, 머클트리는 모든 정보를 압축하여 간단하게 표현한 데이터로서 머클트리를 통해 데이터의 간편하고 확실한 인증이 가능하다.<ref>yahweh87, 〈[https://steemit.com/kr/@yahweh87/4-merkle-tree-merkle-root # 4 - 머클트리(Merkle Tree) 및 머클루트(Merkle Root)에 관한 정의]〉, 《네이버 블로그》, 2018</ref>
 
머클트리에서는 모든 거래내역들을 해시화한 [[머클루트]]를 통해 거래내역의 변동여부를 쉽게 확인할 수 있고 이 머클루트를 헤더에 담아 [[트랜잭션]]의 유효성을 보장한다. 또한 머클 경로(Merkle path)를 제공받아 특정한 트랜잭션이 블록에 유효하게 있는 효율적인 검사가 가능하다. 즉, 머클트리는 모든 정보를 압축하여 간단하게 표현한 데이터로서 머클트리를 통해 데이터의 간편하고 확실한 인증이 가능하다.<ref>yahweh87, 〈[https://steemit.com/kr/@yahweh87/4-merkle-tree-merkle-root # 4 - 머클트리(Merkle Tree) 및 머클루트(Merkle Root)에 관한 정의]〉, 《네이버 블로그》, 2018</ref>
11번째 줄: 11번째 줄:
 
=== 생성 과정 ===
 
=== 생성 과정 ===
  
머클트리는 머클루트를 구하기 까지 반복하게 되는 과정이 토너먼트 대진표의 모양으로 만들어진다. ‘log₂[전체거래내역의수]’값을 구하면 해시화한 과정의 횟수도 알 수 있기 때문에 머클트리만 따라가면 특정 거래내역을 쉽게 찾을 수 있다. 머클트리는 트리구조를 형성하고 있는 암호화 과정이다. 우측 그림을 보면, 맨 밑에 위치한 최종 값을 머클루트, 상부의 값들을 리프(leaf, 잎)라고 칭한다. 8개 거래에 대한 머클트리를 예시로 들어보면 그림과 같이 거래에 대한 해시값이 TX1부터 TX8과 같이 리프가 이어져 있고, 이를 두 개씩 묶어 더한 후 같은 방식으로 진행하여 최종 값인 머클루트를 얻는다. 거래가 홀수인 경우, 맨 마지막 거래를 복사하여 거래를 짝수개로 만들어 사용하는 원칙으로 이용되고 있다. 이러한 경우를 [[균형트리]](balanced tree)라고 한다.<ref>easyblockchain, 〈[https://banksalad.com/contents/%EC%89%BD%EA%B2%8C-%EC%84%A4%EB%AA%85%ED%95%98%EB%8A%94-%EB%B8%94%EB%A1%9D%EC%B2%B4%EC%9D%B8-%EB%A8%B8%ED%81%B4%ED%8A%B8%EB%A6%AC-Merkle-Trees-%EB%9E%80-ilULl 쉽게 설명하는 블록체인 : 머클트리(Merkle Trees)란]〉, 《뱅크샐러드》, 2018-07-30</ref> 머클트리의 생성 과정은 다음과 같다.
+
머클트리는 머클루트를 구하기 까지 반복하게 되는 과정이 토너먼트 대진표의 모양으로 만들어진다. ‘log₂[전체거래내역의수]’값을 구하면 해시화한 과정의 횟수도 알 수 있기 때문에 머클트리만 따라가면 특정 거래내역을 쉽게 찾을 수 있다. 머클트리는 트리구조를 형성하고 있는 암호화 과정이다. 우측 그림을 보면, 맨 밑에 위치한 최종 값을 머클루트, 상부의 값들을 리프라고 칭한다. 8개 거래에 대한 머클트리를 예시로 들어보면 그림과 같이 거래에 대한 해시값이 TX1부터 TX8과 같이 리프가 이어져 있고, 이를 두 개씩 묶어 더한 후 같은 방식으로 진행하여 최종 값인 머클루트를 얻는다. 거래가 홀수인 경우, 맨 마지막 거래를 복사하여 거래를 짝수개로 만들어 사용하는 원칙으로 이용되고 있다. 이러한 경우를 [[균형트리]](balanced tree)라고 한다.<ref>easyblockchain, 〈[https://banksalad.com/contents/%EC%89%BD%EA%B2%8C-%EC%84%A4%EB%AA%85%ED%95%98%EB%8A%94-%EB%B8%94%EB%A1%9D%EC%B2%B4%EC%9D%B8-%EB%A8%B8%ED%81%B4%ED%8A%B8%EB%A6%AC-Merkle-Trees-%EB%9E%80-ilULl 쉽게 설명하는 블록체인 : 머클트리(Merkle Trees)란]〉, 《뱅크샐러드》, 2018-07-30</ref> 머클트리의 생성 과정은 다음과 같다.
  
 
# 최초 데이터를 SHA256형태의 해시값으로 변환한다.  
 
# 최초 데이터를 SHA256형태의 해시값으로 변환한다.  
53번째 줄: 53번째 줄:
 
* [[머클경로]]
 
* [[머클경로]]
  
{{블록체인 기술|검토 필요}}
+
{{블록체인 기술|토막글}}

해시넷에서의 모든 기여는 다른 기여자가 편집, 수정, 삭제할 수 있다는 점을 유의해 주세요. 만약 여기에 동의하지 않는다면, 문서를 저장하지 말아 주세요.
또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다 (자세한 사항은 해시넷:저작권 문서를 보세요). 저작권이 있는 내용을 허가 없이 저장하지 마세요!

취소 | 편집 도움말 (새 창에서 열림)