Blockchain
Celestia의 데이터 저장 공간 사용량
Celestia의 데이터 저장 공간 사용량
Celestia의 EDS(Extended Data Square) 구조에서 저장 공간 사용은 다음과 같습니다:
전체 EDS 용량 (이론적인 값)
전체 EDS는 원본 데이터의 4배 크기를 차지합니다:
- Q1 (원본 데이터): 원본 데이터의 100%
- Q2 (행 패리티): 원본 데이터의 100%
- Q3 (열 패리티): 원본 데이터의 100%
- Q4 (행+열 패리티): 원본 데이터의 100%
즉, 모든 사분면을 모두 저장한다면 원본 데이터 크기의 4배가 필요합니다.
실제 Celestia의 저장 전략
하지만 Celestia에서는 실제로 모든 사분면을 저장하지 않고, 필요에 따라 다음과 같은 저장 전략을 사용합니다:
-
ODS만 저장 (원본 데이터만):
- 원본 데이터의 1배 용량 사용
- 오래된 블록이나 아카이브 목적의 저장에 사용
- 필요시 나머지 사분면(Q2, Q3, Q4)은 계산으로 복구 가능
-
ODSQ4 저장 (원본 + Q4 사분면):
- 원본 데이터의 2배 용량 사용
- 가용성 윈도우 내의 최근 블록에 사용
- 특정 접근 패턴에서 계산 효율성 향상
실제 코드에서의 저장 전략
코드에서 이런 저장 전략은 다음과 같이 구현되어 있습니다:
// 가용성 윈도우 내의 블록은 ODS와 Q4 모두 저장 (원본의 2배)
if availability.IsWithinWindow(eh.Time(), availability.StorageWindow) {
err = store.PutODSQ4(ctx, eh.DAH, eh.Height(), eds)
} else {
// 그 외 블록은 ODS만 저장 (원본의 1배)
err = store.PutODS(ctx, eh.DAH, eh.Height(), eds)
}
저장 공간 최적화의 이유
이렇게 저장 공간을 최적화하는 이유는:
-
디스크 공간 효율성:
- 모든 블록의 모든 사분면을 저장하는 것은 비효율적
- 대부분의 경우 원본 데이터만으로도 충분
-
계산 비용과 저장 비용의 균형:
- Q2와 Q3는 Q1과 Q4로부터 계산 가능 (필요할 때만 계산)
- 가장 자주 접근하는 최근 블록에만 Q4도 함께 저장하여 계산 비용 절약
-
가용성과 검증의 균형:
- 데이터 가용성 검증은 최근 블록에 대해 더 중요
- 따라서 최근 블록은 더 많은 공간(ODS+Q4)을 사용하고, 오래된 블록은 공간 효율성(ODS만)을 우선시
결론적으로, Celestia는 원본 데이터의 약 1~2배 정도의 저장 공간을 사용하면서도, 데이터 가용성 검증과 복구 기능을 효율적으로 제공합니다.