
이더리움 스토리지 로드맵: 도전과 기회
글쓴이: EthStorage
요약
-
증가하는 스토리지 수요는 이더리움 노드에 큰 도전을 안겨준다.
-
스토리지 제한으로 인해 일부 클라이언트는 이미 역사적 데이터를 삭제하기 시작했으며, 이로 인해 전체 노드 간 저장 행동의 불일치가 발생하고 있다.
-
모든 클라이언트의 일관성을 보장하기 위해, 역사적 데이터 삭제는 EIP-4444 및 EIP-4844에서 표준화되고 있다.
-
따라서 과거 데이터를 재생하여 최신 L1 또는 L2 상태를 복구하려면 중앙화된 프로토콜 외부 서비스가 필요하게 되며, 이는 더 탈중앙화되고 이더리움과 일관된 해결책을 모색하게 만든다.
-
이더리움 포털 네트워크는 모든 종류의 이더리움 데이터(역사적 데이터 포함)를 위한 경량화된 탈중앙화 P2P 네트워크이다. 자원 제약 장치를 위해 설계되었으며 이더리움 JSON-RPC 서비스를 제공한다. 역사적 네트워크와 비콘체인 네트워크는 거의 준비를 마쳤다.
-
EthStorage 네트워크는 EIP-4844 BLOB 데이터를 위한 인센티브 기반 모듈러 스토리지 네트워크이다. BLOB 저장을 위해 사용자는 L1 스토리지 컨트랙트의 put() 메서드를 호출하며, ETH를 저장 수수료로 제공하고 체인 상에 BLOB 해시 값을 기록한다. 시간이 지남에 따라 저장 수수료는 오프체인 BLOB 저장 증명을 제출하는 스토리지 제공자에게 점진적으로 분배된다. EthStorage 테스트넷은 이더리움 Sepolia 테스트넷에서 운영 중이며, 여러 커뮤니티 참여자가 자신의 로컬 저장소를 성공적으로 증명했다.
-
향후 계획에는 탈중앙화된 이더리움 상태 네트워크 개발, 동적 크기 데이터의 저장 증명 구현, 브라우저를 통한 직접적인 탈중앙화 접근 등이 포함된다.
감사의 말: EF의 Piper Merriam, Polychain의 Karthik Raju, EthStorage의 Qiang이 본문에 피드백을 주어 감사드립니다.
배경
2023년 10월 22일, 유명한 Go-Ethereum(Geth) 개발 책임자 Péter Szilágyi가 트위터에서 깊은 우려를 표명했다. 그는 Geth 클라이언트가 모든 역사적 데이터를 유지하고 있지만 Nethermind 및 Besu 등의 다른 이더리움 클라이언트는 일부 역사적 이더리움 데이터(예: 과거 블록 및 블록 헤더)를 삭제하도록 구성할 수 있음을 지적했다. 이는 모든 클라이언트의 행동 불일치를 초래하며 Geth에게 불공평하다고 언급했다. 이로 인해 이더리움 로드맵 내 스토리지 문제를 둘러싼 격렬한 논의와 토론이 촉발되었다.

스토리지의 도전
왜 Nethermind와 Besu는 역사적 데이터 저장을 중단하기로 결정했을까? 이 결정 뒤에 있는 문제는 무엇인가? 우리의 관점에서 보면 두 가지 주요 원인이 있다:
-
이더리움 클라이언트의 스토리지 요구사항이 점점높아지고 있다.
-
이더리움 역사적 데이터 저장에 대해 프로토콜 차원의보상이나 처벌 메커니즘이 존재하지 않는다.
첫 번째 이유는 이더리움 클라이언트 운영 시 지속적으로 증가하는 스토리지 수요에서 비롯된다. 구체적인 수요를 이해하기 위해 아래 파이 차트는 2023년 12월 13일 기준 블록 18,779,761에서 새 Geth 노드의 스토리지 분포를 보여준다.

차트에서 확인할 수 있듯이:
-
총 스토리지 크기: 925.39GB
-
역사적 데이터(블록 / 트랜잭션 영수증): 약 628.69GB
-
Merkle Patricia Trie(MPT) 내 상태 데이터: 약 269.74GB
두 번째 이유는 역사적 블록 저장에 대한 프로토콜 내 인센티브나 처벌 부족이다. 이 프로토콜은 노드가 모든 역사적 데이터를 저장할 것을 요구하지만, 저장을 장려하거나 위반을 처벌하는 메커니즘은 제공하지 않는다. 따라서 노드는 역사적 데이터를 저장하고 공유하는 행위가 순전히 이타주의적일 수밖에 없으며, 클라이언트 운영자는 아무런 처벌 없이 자유롭게 역사적 데이터를 삭제하거나 수정할 수 있다. 반면 검증자(Validator) 노드는 제안/투표 시 무효 블록을 생성함으로써 Slash(벌금)를 당하지 않기 위해 로컬에서 완전한 상태를 유지하고 업데이트해야 한다.
따라서 스토리지 비용이 노드에 큰 부담이 될 때, 일부 노드 운영자가 역사적 데이터를 삭제하는 것은 놀랄 일이 아니다. 역사적 데이터가 없는 경우, 노드 클라이언트는 스토리지 비용을 약 1TB에서 약 300GB로 크게 줄일 수 있다.

그림: Nethermind가 역사적 블록 없이 노드를 실행하는 설정 — 현재 약 460GB의 스토리지 비용 절감 가능
다가올 이더리움 데이터 가용성(DA) 업그레이드와 함께 스토리지 도전은 더욱 심화될 것이다. 이더리움 DA 확장의 길은 DenCun 업그레이드의 EIP-4844에서 시작되며, 여기서는 고정 크기의 바이너리 대형 객체(BLOB)와 blobGasPrice라는 독립적인 요금 모델이 도입된다. 각 BLOB는 128KB로 설정되며, EIP-4844는 각 블록당 최대 6개의 BLOB를 포함할 수 있도록 허용한다. 데이터 처리량을 확장하기 위해 이더리움은 1D 리드솔로몬 코드를 채택할 계획이며, 처음에는 각 블록당 32개의 BLOB를 허용하고 완전 확장 시에는 각 블록당 256개의 BLOB까지 도달할 예정이다.
이더리움 DA가 최대 용량으로 운영된다면(각 블록당 256개의 BLOB), 이더리움 DA 네트워크는 연간 약 80TB의 DA 데이터를 수신할 것으로 예상되며, 이 숫자는 대부분의 노드 스토리지 능력을 훨씬 초과한다.

이더리움 스토리지 로드맵 및 그 결과

Vitalik이 게시한 이더리움 로드맵트윗, Purge가 주로 스토리지 관련 내용을 언급함
증가하는 스토리지 비용은 이더리움 생태계 연구자들의 관심을 끌었다. 이 문제를 해결하고 모든 클라이언트의 일관성을 보장하기 위해 연구자들은 역사적 데이터 삭제를 명확히 하기 위한 제안들을 마련하고 있다. 주요 두 가지 제안은 다음과 같다:
-
EIP-4444: 실행 클라이언트 내 역사적 데이터 제한: 이 제안은 클라이언트가 1년 이상 된 역사적 블록을 삭제할 수 있도록 한다. 평균 블록 크기를 100K로 가정하면, 역사적 블록 데이터 상한선은 약 250GB 정도이다 (100K * (3600 * 24 * 365) / 12, 블록 시간 = 12초 가정).
-
EIP-4844: 샤딩 BLOB 트랜잭션: EIP-4844는 18일 이상 지난 BLOB을 폐기한다. EIP-4444에 비해 더 급진적인 방법으로, 역사적 BLOB 크기를 약 100GB로 제한한다 ((18 * 3600 * 24) * 128K * 6 / 12, 블록 시간 = 12초 가정).
모든 클라이언트에서 역사적 데이터를 삭제하면 어떤 결과가 발생하는가? 가장 큰 문제는 신규 노드가 'full sync' 모드를 통해 최신 상태로 동기화할 수 없다는 점이다. 'full sync'란 제네시스 블록부터 최신 블록까지 모든 트랜잭션을 실행하여 동기화하는 방식이다. 이에 따라 우리는 'snap sync' 또는 'state sync'를 사용해 이더리움 노드로부터 최신 상태를 직접 동기화해야 한다. 이러한 방법은 이미 Geth에 구현되어 있으며 기본 동기화 방식으로 작동 중이다.
마찬가지로 이 결과는 모든 L2에도 적용된다. 즉, L2의 신규 노드는 L2 제네시스부터 최신 L2 블록까지 재생함으로써 이더리움 L2 제네시스의 최신 상태를 완전히 동기화할 수 없다. 또한 L1 노드가 L2 상태를 유지하지 않기 때문에, L2의 'snap sync' 방법은 L1로부터 최신 L2 상태를 유도할 수 없으며, 이는 중요한 L2 가정인 이더리움 보안 보장을 계승한다는 점을 위반한다. 예상되는 해결책은 Infura / Etherscan / L2 프로젝트 자체 같은 제3자 서비스가 역사적 L2 데이터나 상태 사본을 저장하는 것에 의존하는 것이다. 이는 프로토콜 외부, 간접적인 인센티브에 기반한 중앙화된 해결책이다.
우리가 탐구하고자 하는 핵심 질문은 다음과 같다:
-
스토리지 및 접근 측면에서 더 나은 탈중앙화된 해결책을 찾을 수 있을까?
-
직접적인 인센티브 메커니즘을 갖추고, 이더리움과 일관된(예: L1 컨트랙트 위에서 작동하는) 해결책이 가능할까?
-
이 모든 것을 바탕으로 이더리움 스토리지 로드맵을 위한 완전히 탈중앙화되고 프로토콜 내 직접적인 인센티브를 제공하는 해결책을 제시할 수 있을까?
해결책
해결책 1: 이더리움 포털 네트워크
이더리움 포털 네트워크는 이더리움 프로토콜에 접속하기 위한 경량화된 탈중앙화 접근 네트워크이다. eth_call, eth_getBlockByNumber 등의 이더리움 JSON-RPC 인터페이스를 제공하며, JSON-RPC 요청을 IPFS 네트워크와 유사한 분산 해시 테이블(DHT)에 대한 P2P 요청으로 변환한다. IPFS처럼 임의의 데이터 형식을 저장할 수 있지만 스팸 데이터에 취약한 것과 달리, 포털 P2P 네트워크는 역사적 블록 헤더 및 블록 트랜잭션 데이터와 같은 이더리움 데이터 전용으로 호스팅된다. 이는 포털 네트워크 내장의 경량 클라이언트 검증 기술을 통해 달성된다.
포털 네트워크의 중요한 특징은 경량화된 설계와 자원 제약 장치와의 호환성이다. 몇 메가바이트의 스토리지 공간과 낮은 메모리를 가진 노드에서도 실행 가능하여 탈중앙화를 촉진한다. 스마트폰이나 Raspberry Pi 장치조차 네트워크에 참여하고 이더리움 데이터 가용성에 기여할 수 있다.
포털 네트워크의 개발은 이더리움 클라이언트 다양성 개념과 일치하며, Rust, JavaScript, Nim으로 작성된 클라이언트들이 있다. 비콘 네트워크와 역사적 네트워크는 이미 사용 가능하며, 상태 네트워크는 활발히 개발 중이다. 주목할 점은 포털 네트워크가 데이터 저장에 대해 직접적인 인센티브를 제공하지 않는다는 점이다 — 네트워크 내 모든 노드는 이타적으로 운영된다.

그림: 100MB 스토리지 제한을 가진 포털 네트워크 Rust 클라이언트(Trin) 실행 중
해결책 2: EthStorage 네트워크
EthStorage 네트워크는 EIP-4844 BLOB 저장을 전문으로 하는 탈중앙화 인센티브 스토리지 네트워크이며 ESP 프로젝트의 지원을 받고 있다.
-
최소 신뢰: 중심화된 데이터 브릿지가 필요한 기존 솔루션과 달리, EthStorage는 이더리움의 합의와 무허가 EthStorage 스토리지 노드의 1/m 신뢰 모델에 의존한다. BLOB 저장 과정은 사용자가 BLOB을 담은 트랜잭션에 서명하고 스토리지 컨트랙트의 put(key, blob_idx) 메서드를 호출하는 것으로 시작된다. 이후 스토리지 컨트랙트는 BLOB 해시를 체인 상에 기록한다. 그 후 스토리지 제공자는 이더리움 DA 네트워크에서 직접 BLOB을 다운로드하고 저장함으로써 데이터 브릿지 문제를 우회한다.
-
스토리지 비용과 인센티브의 일치: put() 메서드 호출 시 거래는 저장 수수료(msg.value를 통해)를 보내고 컨트랙트에 예치해야 한다. 성공적으로 오프체인 저장 노드가 저장 증명을 제출하고 검증된 후, 이 저장 수수료는 시간이 지남에 따라 점진적으로 저장 노드들에게 분배된다. 기존의 일회성 저장 수수료를 제안자(proposer)에게 지불하는 이더리움 저장 모델과 비교해, 시간이 지남에 따라 저장 수수료를 지불하는 방식은 할인된 현금흐름 모델을 따른다 — 시간이 지남에 따라 스토리지 비용이 ETH 가격 대비 하락할 것이라는 가정 하에 말이다. EthStorage가 도입한 이 혁신은 수수료와 저장 노드의 저장 기여를 일치시키는 데 성공했다.
-
저장 증명: 저장 증명은 데이터 가용성 샘플링에서 영감을 받았으며, EthStorage의 샘플링은 특정 기간 동안 저장된 BLOB을 대상으로 한다. 체인 상 샘플링을 효과적으로 검증하기 위해 EthStorage는 스마트 컨트랙트와 최신 SNARK 기술 발전을 충분히 활용한다.
-
무허가 운영: EthStorage의 모든 저장 노드는 데이터를 저장하고 정기적으로 체인 상에 저장 증명을 제출하기만 하면 보상을 받을 수 있다.
모듈러 블록체인 관점에서 보면, EthStorage는 이더리움 스토리지 L2 역할을 하지만 트랜잭션 수수료 대신 저장 수수료를 받는다. 체인 상에서 BLOB 해시를 색인함으로써 EthStorage는 이더리움의 모듈러 스토리지 계층이 되어 저장 확장성 향상 및 비용 절감(목표 약 1000배)을 실현한다.
개발 측면에서, EthStorage는 이미 이더리움 Sepolia 테스트넷의 EIP-4844와 통합되었다. 우리는 약 수백 GB의 BLOB을 EthStorage에 쓰는 것을 포함해 EthStorage와 이더리움 Sepolia 테스트넷에 대한 스트레스 테스트를 수행했다. 100명 이상의 커뮤니티 참여자가 네트워크에 가입하여 자신의 로컬 저장소를 성공적으로 증명했다.
EthStorage 네트워크의 주요 장점은 이더리움 위에서 탈중앙화된 직접 인센티브를 제공한다는 점이다 — 현재까지의 지식으로는 이는 획기적인 기능이다. 그러나 이 네트워크의 한계는 고정 크기의 BLOB 전용으로 설계되었다는 점이다.

이더리움 Sepolia 테스트넷 상의 EthStorage 대시보드
앞으로의 전망
이더리움 스토리지는 아직 주목받지 못했지만, 이더리움 생태계 내에서 매우 중요한 의미를 갖는다. 이더리움 네트워크의 급속한 성장과 함께 이더리움 데이터의 저장 및 접근 가능성은 핵심 도전 과제가 되었다. 포털 네트워크와 EthStorage 네트워크는 여전히 초기 단계이며, 주목해야 할 중요한 장기적 발전 방향들이 많다:
-
탈중앙화된 저지연 이더리움 상태 데이터 네트워크. 이더리움 상태 데이터에 탈중앙화되고 검증 가능한 방식으로 접근하는 것은 중요하지만 도전적인 작업이다. 기존 DHT 네트워크 모델을 사용하면 계정 정보 조회 시 서로 다른 P2P 노드에 저장된 내부 트라이 노드를 여러 번 조회해야 하므로 상당한 지연이 발생한다. 상태 트리 구조를 어떻게 활용해 접근 속도를 높일 것인지가 핵심이다. 이더리움 포털 네트워크의 곧 출시될 상태 네트워크는 바로 이 문제 해결을 목표로 하고 있다.
-
포털 네트워크와 EthStorage 네트워크의 통합: 포털 네트워크는 BLOB 데이터를 지원하도록 매끄럽게 확장할 수 있다. EthStorage 팀은 이미 이를 부분적으로 구현했다. 다음 단계는 이러한 네트워크를 통합하여 컨트랙트를 통해 BLOB에 프로그래밍 가능한 접근이 가능한 탈중앙화 JSON-RPC 네트워크를 제공하는 것이다. 컨트랙트 내 애플리케이션 로직과 EthStorage가 제공하는 규모화된 BLOB 저장을 결합함으로써, 동적 탈중앙화 웹사이트(예: 탈중앙화된 Twitter/YouTube/Wikipedia 등)와 같은 새로운 dApp을 이더리움 상에서 구현할 수 있게 된다.
-
브라우저를 통한 탈중앙화 접근: IPFS 네트워크 내 데이터 접근을 위한 ipfs:// 프로토콜과 유사하게, 웹3 산업은 브라우저가 직접 접근할 수 있도록 이더리움 네이티브 접근 프로토콜이 필요하다. 이를 통해 이더리움의 풍부한 데이터 잠재력이 해방될 수 있다. 이 데이터는 토큰 소유권, 계정 잔액에서부터 NFT 이미지 및 동적 탈중앙화 웹사이트에 이르기까지 광범위한 분야를 아우르며, 스마트 컨트랙트와 미래 이더리움 스토리지 기능 덕분에 가능해진다. 이 분야에서는 ERC-4804/6860이 정의한 web3:// 프로토콜이 현재 활발히 개발 및 보급 중이며 이 목표를 달성하고자 한다.
-
동적 크기 데이터를 위한 고급 저장 증명: 고정 BLOB 외에도 역사적 블록이나 상태 객체 등 동적 크기 데이터를 위한 고급 저장 증명 탐색이 필수적이다. 복잡한 알고리즘 개발을 통해 저장 솔루션의 적응성을 강화할 수 있다.
우리는 이러한 노력들을 통해 이더리움 로드맵에 공동으로 기여하고, 미래 이더리움 생태계를 위한 탈중앙화 스토리지 솔루션의 기반을 마련하고자 한다.
TechFlow 공식 커뮤니티에 오신 것을 환영합니다
Telegram 구독 그룹:https://t.me/TechFlowDaily
트위터 공식 계정:https://x.com/TechFlowPost
트위터 영어 계정:https://x.com/BlockFlow_News














