스큐드 머클트리(skewed merkle tree)란 머클트리 중에서 최소 개수의 노드를 가지면서, 왼쪽이나 오른쪽 서브 트리만 가지고 있는 트리이다.[1] 머클트리는 해시트리(Hash Tree), 이진트리(Binary Tree)라고 불리기도 하며, 스큐드 머클트리는 편향트리, 사향트리라고도 불리기도 한다.
개요
이진 탐색트리의 탐색 연산은 O(log n)의 시간 복잡도를 갖는다. 트리의 높이를 하나씩 더해갈수록 추가할 수 있는 노드의 수가 두 배씩 증가하기 때문이다. 하지만 저장 순서에 따라 계속 한쪽으로만 노드가 추가되는 경우가 발생할 수 있는데, 이러한 경우 스큐드 머클트리가 된다. 이럴 경우 성능에 영향을 미치게 되며, 탐색의 Worst Case가 되고 시간 복잡도는 0(n)이 된다. [2]스큐드 머클트리 구조를 사용하면 과거 대부분의 데이터가 로컬 환경에 존재하지 않는 상황에서도 데이터 정당성을 검증할 수 있다.
다른 종류
- 포화 이진트리(full binary tree) : 포화 이진트리란 모든 노드가 2개의 자식 노드를 가지며 모든 레벨이 꽉 찬 트리이다.
- 완전 이진트리(complete binary tree) : 완전 이진트리는 포화 이진트리같이 모든 레벨이 꽉 찬 트리는 아니지만 모든 노드가 2개의 자식 노드를 가지는 트리이다.
- 루트 이진트리(rooted binary tree) 루트 이진트리는 모든 노드의 자식이 최대 2개인 루트를 가진 트리이다.
리밸런싱 기법
리밸런싱(Rebalancing) 기법이란 균형을 잡기 위한 트리 구조의 재조정을 말한다. 이 기법을 구현한 트리에는 AVL Tree, Red-Black Tree, B-tree 등이 있다.
Red-Black Tree
Red-Black Tree는 다음의 성질들을 만족하는 이진 탐색트리(BST; Binary Search Tree)이다.
- 각 노드는 'Red' or 'Black'이라는 색깔을 갖는다.
- 루트노드(root node)의 색깔은 'Black'이다.
- 각 리프노드(leaf node)는 'Black'이다.
- 어떤 노드의 색깔이 'red'라면 두 개의 자식의 색깔은 모두 Black이다.
- 각 노드에 대해서 노드로부터 descendant leaves까지의 단순 경로는 모두 같은 수의 black nodes들을 포함하고 있다. 이를 해당 노드의 Black-Height라고 한다. (노드 x로부터 노드 x를 포함하지 않은 리프노드까지의 simple path 상에 있는 black nodes들의 개수)
- 이진 탐색트리이므로 BST의 특징을 모두 갖는다.
- 루트노드로부터 리프노드까지의 모든 경로 중 최단 경로와 최대 경로의 크기 비율은 2보다 크지 않다. 이러한 상태를 밸런스 상태라고 한다.
- 노드의 자식이 없으면 자식을 가리키는 포인터는 NIL 값을 저장한다. 이러한 NIL들을 리프노드로 간주한다.
RBT는 BST의 삽입, 삭제 연산 과정에서 발생할 수 있는 문제점을 해결하기 위해 만들어진 자료 구조이다.
AVL트리
AVL트리는 삽입, 삭제, 탐색 등 연산을 수행할 때마다 트리 스스로 자신의 밸런스를 확인하고, 필요할 때마다 밸런스를 조정하는 트리이다. 그래서 자가 균형 트리(Self-balancing Tree)라고도 한다.
- AVL트리는 BST이면서 동시에 균형을 유지하고 있다.
- 모든 노드의 왼쪽과 오른쪽 서브트리의 높이 차이가 1 이하다.
- 균형을 유지하고 있기 때문에 이진 검색 시의 효율성을 보장한다.
- 검색, 삽입, 삭제 모두 O(logN)이며 항상 균형을 맞춘다.
- 프로그래밍하기가 어렵고 디버깅 또한 어렵다.
- 위 검색, 삽입, 삭제가 빠르긴 하지만 균형을 맞추는 데 시간이 든다.
- 대규모 트리를 이룬 후 검색하는 것은 데이터베이스(DB;database)에서 주로 발생하는데 데이터베이스는 이미 B-Tree 자료구조를 사용 중이다.
B-Tree
B-Tree는 데이터를 정렬하여 탐색, 삽입, 삭제 및 순차 접근이 가능하도록 유지하는 트리형 자료구조로 B는 밸런스(Balanced)를 의미하며, 리프노드(leaf node)가 한쪽으로 쏠리는(skewed) 현상이 적다.
- 각 노드는 1/2 이상 채워져야 하며, 모든 리프노드는 같은 레벨(level)에 있다.
- 탐색, 추가, 삭제는 루트노드(root node)로부터 시작한다.
- 노드 내 값은 오름차순을 유지한다.
- 공백이거나 높이가 1 이상인 m-원 탐색 트리(m-way search tree)
- 루트와 리프를 제외한 내부 노드는 최소 m/2, 최대 m개의 서브트리를 가지며, 적어도 m/2-1개의 킷값을 가진다. (적어도 반 이상이 킷값으로 채워져 있어야 한다.)
- 루트는 그 자체가 리프가 아닌 이상 적어도 두 개의 서브트리를 가진다.
- 모든 리프는 같은 레벨에 있다. (균형트리)
각주
참고자료
- 푸른하늘의해, 〈이진 트리(Binary Tree)〉, 《네이버 블로그》, 2012-07-08
- _lbee, 〈(DataStructure) 5. Red-Black Tree〉, 《티스토리》, 2017-03-11
- 씩이 머릿속, 〈[스위프트 : 자료구조 AVL Tree: 자가 균형 트리: #balance: #트리의 높이: #rotation메소드: #성능]〉, 《티스토리》, 2018-10-01
- 불곰, 〈AVL Tree〉, 《티스토리》, 2018-08-17
- 〈베리파이어블 프루닝〉, 《해시넷》
같이보기
이 스큐드 머클트리 문서는 블록체인 기술에 관한 토막글입니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 이 문서의 내용을 채워주세요.
|
블록체인 : 블록체인 기술 □■⊕, 합의 알고리즘, 암호 알고리즘, 알고리즘, 블록체인 플랫폼, 블록체인 솔루션, 블록체인 서비스
|
|
블록체인 기술
|
Bech32 • BTP • DRC-20 • EIP • IPFS • KRC-20 • NFT 마켓플레이스 • P2P • P2PKH • P2SH • PFP • PUF • SPV • TPS • TRC-20 • UTXO • 가나슈 • 가명성 • 가스 • 가십 • 가십 프로토콜 • 개념증명(PoC) • 검증가능지연함수(VDF) • 게스 • 고스트 프로토콜 • 공공예산 • 글로벌신뢰인공지능 • 대체가능토큰 • 대체불가토큰(NFT) • 도지더리움 브릿지 • 디지털 자산 • 디지털 희소성 • 라운드 • 라운드 로빈 • 라이트하우스 • 랜덤 • 레그테크 • 레이든 • 리카르디안 계약 • 린스타트업 • 마스터키 • 마스트 • 메인넷 • 멜팅 • 믹싱 • 민팅 • 밈블윔블 • 반감기 • 베타넷 • 변경불가성 • 브릿지 • 블록체인 생태계 • 블록체인 클라우드 서비스(BaaS) • 블룸필터 • 비블록체인 • 비앱 • 비콘체인 • 비트코인코어 • 빤통경제 • 수정 고스트 프로토콜 • 스냅샷 • 스마트 계약 • 스마트 브리지 • 스웜프로토콜 • 스크립트퍼브키 • 스테이킹 • 스텔스 주소 • 스핀오프코인 • 슬래싱 • 시크릿 컨트랙트 • 심플 컨트랙트 • 아토믹스왑 • 암호경제(크립토 이코노미) • 앤드어스체인인공지능 • 앵커링 • 언스테이킹 • 에어드랍 • 에폭 • 오프체인 오더락 • 오피리턴 • 옵코드 • 원토큰 문제 • 웨이 • 위스퍼 프로토콜 • 위임 • 유니스왑 • 유동성 • 이더리움 가상머신(EVM) • 이더리움 클라이언트 • 이중지불 • 익명성 • 인증된 익명 아이디 • 인터레저 프로토콜(ILP) • 자산화 • 잠금 스크립트 • 최소기능제품(MVP) • 컨소시엄 블록체인 • 컬러드코인 • 코인셔플 • 코인소각 • 코인에이지 • 코인조인 • 코인토싱 • 크립토노트 • 키스토어 • 타임락 • 테스트넷 • 토다 • 토큰 이코노미 • 토큰화 • 튜링완전 • 튜링불완전 • 트랜잭션 아이디(TxID) • 트러스트 컨트랙트 • 트루빗 • 트릴레마 • 파워 • 파티셔닝 • 퍼블릭 블록체인 • 페널티 • 프라이버시 • 프라이빗 블록체인 • 플랫폼 • 플러딩 • 피어 • 피투피(P2P) • 하이브리드 블록체인 • 합의 • 해시락 • 해시타임락(HTLC) • 해제 스크립트 • 확장성
|
|
해시
|
레인보우 테이블 • 매핑 • 머클경로 • 머클루트 • 머클트리 • 분산해시테이블(DHT) • 블록해시 • 스큐드 머클트리 • 온라인툴즈 • 이전블록해시 • 카뎀리아 • 해시 • 해시레이트 • 해시맵 • 해시충돌 • 해시테이블 • 해시파워 • 해시함수 • 해싱
|
|
블록
|
고아블록 • 그래핀 • 논스 • 마이크로블록 • 베이킹 • 북키퍼 • 브랜치블록 • 브로드캐스팅 • 블록 • 블록높이 • 블록바디 • 블록생성자 • 블록정보 • 블록타임 • 블록헤더 • 비츠 • 세그윗 • 엉클블록 • 완결성 • 제네시스블록 • 타임스탬프 • 프룻 • 프룻체인
|
|
체인
|
더블체인 • 라이트닝 네트워크 • 라이트닝 루프 • 루트체인 • 루프체인 • 메인체인 • 방향성 비순환 그래프(DAG) • 베리파이어블 프루닝 • 블록격자 • 블록체인 • 사용자 활성화 소프트포크(UASF) • 사용자 활성화 하드포크(UAHF) • 사이드체인 • 서브체인 • 소프트포크 • 오페라체인 • 오프체인 • 온체인 • 인터체인 • 차일드체인 • 체인 • 탱글 • 테스트체인 • 토카막 네트워크 • 포크 • 포크체인 • 퓨어체인 • 프로덕트체인 • 프루닝 • 프리포크 • 플라즈마 알고리즘 • 플라즈마캐시 • 플래시 계층 • 하드포크 • 해시그래프 • 홀로체인
|
|
노드
|
검증인(밸리데이터) • 기본노드 • 노드 • 라이트노드 • 랜덤노드 • 마스터노드 • 베이킹노드 • 보조노드 • 보증노드 • 슈퍼노드(슈퍼대표, 대표노드) • 슬롯 • 슬롯리더 • 엔드포인트노드(레인저노드) • 의회 네트워크 • 작업노드 • 종단노드 • 종자노드(시드노드) • 중계노드 • 지갑노드 • 채굴노드(마이닝노드) • 쿼럼 • 풀노드 • 합의노드
|
|
샤딩
|
네트워크 샤딩 • 데이터베이스 샤딩 • 동적샤딩 • 샤드 • 샤딩 • 스테이트 샤딩 • 알고리즘 샤딩 • 적응형 상태 샤딩 • 체인샤딩 • 트랜잭션 샤딩
|
|
채굴
|
병합채굴 • 사전채굴 • 에이식(ASIC) • 에이식부스트 • 에이식 저항 • 일드파밍 • 채굴 • 채굴 난이도 • 채굴량 • 탄소감축채굴 • 페어런치
|
|
탈중앙화
|
TVL • 거버넌스 • 게임파이 • 다오(DAO) • 다이코(DAICO) • 닥(DAC) • 닥스(DAX) • 덱스(DEX) • 디앱(DApp) • 디지오(DGO) • 디튜브 • 디파이(DeFi) • 분산경제 • 분산원장(DLT) • 분산 클라우드 • 소셜파이 • 씨파이(C-Fi) • 오프체인 거버넌스 • 온체인 거버넌스 • 원장 • 준중앙화 • 중앙화 • 탈중앙화 • 탈중앙화 TPS • 탈중앙화 조직(DO) • 탈중앙화 지수(DQ)
|
|
분산아이디
|
DIDs • IETF • ToIP • 검증가능한 자격증명 • 검증인 • 디지털아이덴티티재단 • 발급자 • 보유자 • 분산아이디(DID) • 분산아이디 기관 • 분산아이디 인증(DID Auth) • 아이온 • 자기주권 • 자기주권신원 • 최소화된 자격증명 데이터 • 탈중앙화 키관리시스템 • 통합해석기
|
|
오라클
|
상호인증 블록체인 • 오라클 • 오라클 머신 • 오라클 문제 • 오라클 서비스 • 중간자
|
|
BIP
|
BIP • BIP9 • BIP16 • BIP32 • BIP39 • BIP43 • BIP44 • BIP47 • BIP49 • BIP63 • BIP70 • BIP84 • BIP141 • BIP148
|
|
ERC
|
ERC • ERC-20 • ERC-165 • ERC-223 • ERC-621 • ERC-721 • ERC-777 • ERC-827 • ERC-884 • ERC-998 • ERC-1155 • ERC-1404
|
|
위키 : 자동차, 교통, 지역, 지도, 산업, 기업, 단체, 업무, 생활, 쇼핑, 블록체인, 암호화폐, 인공지능, 개발, 인물, 행사, 일반
|
|