"머클루트"의 두 판 사이의 차이
leejia1222 (토론 | 기여) |
leejia1222 (토론 | 기여) |
||
16번째 줄: | 16번째 줄: | ||
둘째로 모든 거래내역들이 합하여 해시화된 값이 머클루트이기 때문에 하나의 거래내역에 작은 변화가 생기더라도 상위 해시값 모두가 변하게 된다. 따라서 특정 거래 내역을 확인하기 위해 모든 거래내역을 일일이 검사해야 하는 번거로움을 줄일 수 있다.<ref name="윤해리"></ref> 또한 거래내역을 위변조하려는 잘못된 해시값이 검출되는 경우 네트워크 접속을 거부할 수 있다. 모든 거래내역이 합쳐져 하나의 해시값으로 나타낸 것이 머클루트이기 때문에 기존 거래 내역 일부에 작은 변화가 있기만 해도 상위 해시값이 모두 변환되기 때문이다.<ref name="윤해리"></ref> 네트워크의 접근성은 높아졌지만 동시에 보안성도 높아지는 일석이조의 효과가 있다.<ref name="업비트"></ref> | 둘째로 모든 거래내역들이 합하여 해시화된 값이 머클루트이기 때문에 하나의 거래내역에 작은 변화가 생기더라도 상위 해시값 모두가 변하게 된다. 따라서 특정 거래 내역을 확인하기 위해 모든 거래내역을 일일이 검사해야 하는 번거로움을 줄일 수 있다.<ref name="윤해리"></ref> 또한 거래내역을 위변조하려는 잘못된 해시값이 검출되는 경우 네트워크 접속을 거부할 수 있다. 모든 거래내역이 합쳐져 하나의 해시값으로 나타낸 것이 머클루트이기 때문에 기존 거래 내역 일부에 작은 변화가 있기만 해도 상위 해시값이 모두 변환되기 때문이다.<ref name="윤해리"></ref> 네트워크의 접근성은 높아졌지만 동시에 보안성도 높아지는 일석이조의 효과가 있다.<ref name="업비트"></ref> | ||
+ | |||
+ | {{각주}} | ||
==참고자료== | ==참고자료== |
2019년 6월 7일 (금) 11:00 판
머클루트(merkle root)란 블록에 저장되어 있는 모든 거래의 요약본으로 해당 블록에 포함된 거래로부터 생성된 머클트리의 루트에 대한 해시를 말한다.
개요
머클루트는 블록이 보유하고 있는 거래 내역들의 해시값을 가장 가까운 거래내역끼리 쌍을 지어 해시화하고 쌍을 지을 수 없을 때까지 이 과정을 반복했을 때 얻게 되는 값이다. 더 자세한 머클루트의 생성 과정은 다음과 같다.[1]
- 최초 데이터를 SHA256 형태의 해시값으로 변환한다.
- 가장 가까운 노드 두 개를 한 쌍으로 묶어 합친 후 해시값으로 변환한다.
- 계속해서 해시값으로 변환하여 마지막 하나가 남을 때까지 이 과정을 반복한다.[2]
머클루트를 구하기까지 반복하게 되는 이 과정이 토너먼트 대진표의 모양으로 만들어지는데 이것을 머클트리라고 부른다. ‘log₂[전체거래내역의수]’값을 구하면 해시화한 과정의 횟수도 알 수 있기 때문에 머클트리만 따라가면 특정 거래내역을 쉽게 찾을 수 있다. 머클트리는 트리구조를 형성하고 있는 암호화 과정이다. 우측 그림을 보면, 맨 밑에 위치한 최종 값을 머클루트, 상부의 값들을 리프라고 칭한다. 8개 거래에 대한 머클트리를 예시로 들어보면 그림과 같이 거래에 대한 해시값이 TX1부터 TX8과 같이 리프가 이어져 있고, 이를 두 개씩 묶어 더한 후 같은 방식으로 진행하여 최종 값인 머클루트를 얻는다. 거래가 홀수인 경우, 맨 마지막 거래를 복사하여 거래를 짝수개로 만들어 사용하는 원칙으로 이용되고 있다. 이러한 경우를 균형트리(balanced tree)라고 한다.[3]
장점
머클트리의 결과값인 머클루트는 두 가지 이유로 블록체인의 효용성 향상에 크게 기여한다. 첫째로 특정 거래내역을 증명하기 위해 모든 거래내역을 검색할 필요가 없다. 블록체인은 시간이 지날수록 블록체인에 저장된 데이터가 늘어나 용량이 커진다면, 거래 처리 속도도 느려질 수밖에 없다. 따라서 모든 거래 내역을 저장하고 있는 풀노드(full node)와 데이터 일부만을 처리해 보관하는 라이트 노드(light node)를 분리해 거래 처리 속도를 높이는 방법을 선택하는 블록체인도 있다.[4]
머클루트가 바로 이 라이트 노드와 같은 역할을 해준다. 머클루트값만 알면 최소한의 정보만으로도 필요한 정보를 블록에서 가져올 수 있다. 블록체인 네트워크 용량 중 큰 부분을 차지하고 있는 거래내역을 조회하지 않고 32바이트에 불과한 값 하나로 거래내역 검증을 간편하고 확실하게 할 수 있기 때문에 사양이 낮은 기기들의 네트워크 접근성이 높아지는 동시에 탈중앙화를 통한 네트워크 안정성이 향상된다.[1]
둘째로 모든 거래내역들이 합하여 해시화된 값이 머클루트이기 때문에 하나의 거래내역에 작은 변화가 생기더라도 상위 해시값 모두가 변하게 된다. 따라서 특정 거래 내역을 확인하기 위해 모든 거래내역을 일일이 검사해야 하는 번거로움을 줄일 수 있다.[4] 또한 거래내역을 위변조하려는 잘못된 해시값이 검출되는 경우 네트워크 접속을 거부할 수 있다. 모든 거래내역이 합쳐져 하나의 해시값으로 나타낸 것이 머클루트이기 때문에 기존 거래 내역 일부에 작은 변화가 있기만 해도 상위 해시값이 모두 변환되기 때문이다.[4] 네트워크의 접근성은 높아졌지만 동시에 보안성도 높아지는 일석이조의 효과가 있다.[1]
각주
- ↑ 1.0 1.1 1.2 업비트, 〈암호화폐 필수용어, 머클루트〉, 《일분》, 2018-08-10
- ↑ yahweh87, 〈# 4 – 머클트리(Merkle Tree) 및 머클루트(Merkle Root)에 관한 정의〉, 《스팀잇》
- ↑ easyblockchain, 〈쉽게 설명하는 블록체인 : 머클트리(Merkle Trees)란〉, 《뱅크샐러드》, 2018-07-30
- ↑ 4.0 4.1 4.2 윤해리 기자, 〈(코린이 상식백과) 블록체인에는 머클트리가 있다?〉, 《데일리토큰》, 2018-12-03
참고자료
- 업비트, 〈암호화폐 필수용어, 머클루트〉, 《일분》, 2018-08-10
- 윤해리 기자, 〈(코린이 상식백과) 블록체인에는 머클트리가 있다?〉, 《데일리토큰》, 2018-12-03
- yahweh87, 〈# 4 – 머클트리(Merkle Tree) 및 머클루트(Merkle Root)에 관한 정의〉, 《스팀잇》
- easyblockchain, 〈쉽게 설명하는 블록체인 : 머클트리(Merkle Trees)란〉, 《뱅크샐러드》, 2018-07-30
- jsralph, 〈쉽게 설명하는 블록체인, 머클트리(Merkle Trees)란 뭔가요?〉, 《스팀잇》
- 불곰, 〈머클트리(merkle tree)란?〉, 《티스토리》, 2018-07-09
- Skkrypto, 〈Bitcoin#5: 풀(Pool)과 머클 루트〉, 《브런치》, 2018-11-01
- 니르바나, 〈머클루트 구하기〉, 《티스토리》
- Mr.Park, 〈해시함수와 머클루트&머클트리〉, 《미디엄》, 2018-03-21
같이 보기