상태트리란?
이더리움의 기본 데이터 베이스는 Keccak256 해시 키를 32byte 값에 매핑하는,
키/값 쌍으로 구성된 상태트리이다.
솔리디티의 데이터 구조는 하나 이상의 상태 트리 항목을 사용해서 프로그래밍에 도움되는 프로그래밍 구문을 생성한다.
간단한 자료형은 32byte 이하이며, 하나의 상태트리 항목에 저장할 수 있다.
배열과 같은 복잡한 자료형에는 여러 상태 트리 항목이 필요하다.
Keccak256 해시는 256 비트 길이이므로, 이더리움 상태 트리는 최대 2,245개의 고유 항목을 저장하도록 설계되었다.
그러나 약 280개의 항목 이후에는 해시 충돌로 인해 트리의 사용에 상당한 제약이 발생한다. 어느 쪽이든, 이것은 현재 전 세계에 존재하는 것보다 많은 디스크 공간이므로 개발자는 주한정의 저장 장치가 있다고 가정할 수 있다.
단, 해당 스토리지를 사용하는 비용은 다른 문제다.
상태 트리에 데이터를 저장하면 상당한 양의 가스를 소비하기 때문이다.
컨트랙트를 신중하게 작성해서 상태트리에 대한 삽입 및 업데이트 횟수를 최소화하는 것이 필요하다.
상태 트리는 트랜잭션 실행을 통해 만드렁지고 수정된다.
대부분의 트랜잭션은 상태트리를 수정한다.
상태트리는 머클-패트리샤 트리 (Merkle - Patricia Trie)로 구현된다.
머클-패트리샤 트리란?
머클 패티르샤 트리는 이더리움에서 사용하는 수정된 머클트리이며, 효율적으로 정보를 관리하기 위한 자료구조
각각의 노드들은 키/값 을 가지고 있고 , 이웃 노드와 함께 상위 노드의 해시값으로 올려지게 된다.
반복된 가정을 거치면서 최상위 노드에 이르게 되고, 나무와 같은 구조를 가지게 된다.
이 노드의 해시값을 루트 해쉬라고 한다.
1.머클 패트리샤 사용하는 이유
- 효율성 : 정보를 효율적으로 저장, 수정, 삭제, 검색 등을 할 수 있다.
머클 패트리샤 트리는 공통의 키 값을 따라 저장하고 그 안에서 수정, 삭제, 검색을 한다.
정보를 저장할때는 키값에 따라 저장하고 중복저장을 하지 않아 공간이 절약된다.
세부적으로는 일정 바이트를 초과하면 해싱도 한다.
전체 정보를 뒤질 필요없이 연결된 키 값들을 따라 수정, 삭제, 검색을 하니 처리속도도 빨라진다. - 검증가능성 : 거래정보를 검증할 수 있다.
해시 함수로 인해 노드의 값이 달라지면 상위 노드의 해쉬값이 달라지고 , 루트값도 완전히 달라지게 된다. 이로인해서 full node 는 새로운 거래 정보를 효율적으로 검증할 수 있고, 블록헤더만 가지고 있는 light node 도 root 값을 통해 거래 정보를 검증할 수 있다.
머클 트리가 없다면 light node는 거래 정보를 검증할 방법이 없어진다.
따라서 머클 패트리샤 트리는 이더리움의 코어 프로토콜 이외에도 이더리움 스케일링 솔루션인 샤딩, 플라즈마 등 블록체인 기술 전반에 널리 쓰이고 있다.
2. 유형
총 4종류이며, State Trie, Stroage Trie, Transaction Trie, Receipts Trie등이 있다.
'블록체인 공부 > 블록체인 개념' 카테고리의 다른 글
[블록체인 개념-7] 이더리움 내의 프로그램, 솔리디티(Solidity), 해킹방지, 이더리움 게임 (0) | 2023.01.25 |
---|---|
[블록체인 개념-6] Web3 , 비트코인 vs 이더리움 , 주소와 키 쌍 , 컨트랙트와 외부 계정 (1) | 2023.01.25 |
[블록체인 개념-4] 이더리움 가상 머신(EVM) - What is Ethereum Virtual Machine (*EVM) (0) | 2023.01.23 |
[블록체인 개념-3] 트랜잭션이란? - What is transaction (0) | 2023.01.23 |
[블록체인 개념-2]채굴이란? - What is mining (0) | 2023.01.23 |
댓글