Skip to main content

목적 및 범위

이 문서는 StableNet이 블록체인 상태, 블록, 영수증을 유지하기 위해 사용하는 영구 및 메모리 저장소 아키텍처를 설명합니다.
고수준 StateDB 캐싱 레이어부터 원시 데이터베이스 백엔드까지의 계층형 저장소 구조를 다루며, Merkle Patricia Trie, 캐싱 전략, 스냅샷 시스템을 포함합니다.
상태 전환 및 EVM 실행에 대한 내용은 State Transitions and Gas를 참고하세요.
블록체인 관리 및 정식 체인 유지에 대한 내용은 Blockchain Management를 참고하세요.
고대 저장소와 데이터 라이프사이클에 대한 상세 설명은 Ancient Store and Data Lifecycle을 참고하세요.

저장소 레이어 계층

StableNet의 저장소 아키텍처는 각기 다른 추상화 수준과 성능 최적화를 제공하는 여러 레이어로 구성됩니다.

StateDB: 상태 캐싱 레이어

StateDB는 블록체인 상태를 조회하고 수정하기 위한 핵심 인터페이스입니다.
저널링 기반의 원자성 보장과 스냅샷을 이용한 롤백 기능을 제공하는 고급 캐싱 레이어입니다.

StateDB 구조

상태 객체 관리

각 계정은 기본 types.StateAccount를 래핑한 stateObject로 관리되며, 실행 중 변경 사항을 추적합니다.

저널링 및 스냅샷

StateDB는 모든 상태 변경을 저널에 기록하여 롤백 가능성을 보장합니다.
각 저널 항목은 revert() 메서드를 구현하며 다음과 같은 변경 유형을 포함합니다.
  • balanceChange
  • nonceChange
  • storageChange
  • codeChange
  • extraChange
  • createObjectChange
  • selfDestructChange
  • touchChange
  • addLogChange

Merkle Patricia Trie 구현

Merkle Patricia Trie(MPT)는 상태를 저장하는 핵심 암호화 데이터 구조입니다.
StableNet은 해시 기반 스키마와 경로 기반 스키마를 모두 지원합니다.

Trie 노드 타입

저장소 스키마: Hash vs Path

StableNet은 두 가지 trie 저장 방식을 지원합니다. 경로 스키마는 상태 히스토리, 효율적인 프루닝, 과거 상태 조회를 지원합니다.
해시 스키마는 단순하지만 히스토리를 내장하지 않습니다.

BlockChain 캐싱 전략

BlockChain은 다수의 LRU 캐시를 사용해 데이터베이스 접근을 최소화합니다.

스냅샷 시스템

스냅샷은 상태 트라이를 순회하지 않고 계정과 저장소에 빠르게 접근하기 위한 평면화된 뷰를 제공합니다.

스냅샷 레이어

스냅샷 접근 순서는 diff → disk → trie 폴백입니다.

스냅샷 구성

상태 커밋 및 최종화

상태 변경은 수정 → 최종화 → 트라이 업데이트 → 커밋 단계를 거칩니다.
최종 결과는 새로운 상태 루트 해시로 반환됩니다.

원시 데이터베이스 및 고대 저장소

저수준에서는 키-값 데이터베이스를 사용하며, 오래된 데이터는 고대 저장소로 이동됩니다.

고대 저장소 특징

  • 데이터베이스 크기 감소
  • 과거 데이터의 빠른 순차 접근
  • 활성 DB 프루닝 가능
  • Era1 아카이브 생성 지원

캐시 구성 요약