
이더리움은 노드의 1TB 저장 한계에 도달하고 있다. 이로 인해 전체 노드를 운영할 수 있는 후보가 크게 줄어들 수 있다. 해당 논문에서는 "모든 클라이언트에 구현되어 있지만, 사용되지 않는 분산 해시 테이블을 최대한 활용하여 새로운 이더리움 동기화 및 저장 전략을 제안한다.
이러한 새로운 동기화 및 저장 전략은 Geth를 기반으로 솔루션을 도입했다. 이러한 솔루션은 기존 네트워크와 호환되며 노드의 저장 공간을 60%를 절약한다. 이는 네트워크 규모에서는 12PB의 데이터 규모이다.
2022년 9월, 이더리움은 작업 증명(PoW)에서 지분 증명(PoS)으로 전환하여 계산 비용을 크게 줄였지만, 이더리움 노드는 여전히 네트워크와 저장 자원을 소모한다. 이 논문은 이더리움의 저장 문제에 초점을 맞추고 있다.
2022년 11월 기준으로 새로운 이더리움 노드는 약 600GB의 데이터를 저장해야 한다. 이는 1TB의 저장 용량 한계에 빠르게 도달하고 있으며, 많은 노드가 저장 용량을 확장하지 못해 네트워크에서 이탈할 위험이 있다. 장기적으로 저장 공간 문제는 블록체인의 지속 가능성을 위협할 수 있다.
이 논문에서는 이더리움의 DHT를 활용하여 오래된 블록과 영수증(콜드 데이터)을 분산 저장함으로써 저장 공간을 절약하는 방법을 제안한다. Kademlia 아키텍처를 기반으로 한 이더리움의 P2P 네트워크는 로그형 복잡도로 데이터를 효율적으로 검색할 수 있지만, 현재는 노드 목록을 저장하는 데만 사용되고 있다.
이더리움의 확장성 문제는 샤딩을 통해 해결될 수 있다고 보고 있다.

이더리움의 현재 상태를 월드 스테이트(world state)라고 하며, 이 상태의 업데이트는 마지막으로 생성된 블록에 포함된 트랜잭션 세트를 적용함으로써 이루어 진다. 월드 스테이트는 모든 생성된 계정으로 구성되며, 계정은 사용자의 주소 또는 스마트 계약과 계정 상태의 연관을 나타낸다.
월드 스테이트 외에도 블록체인의 블록에서 받은 트랜잭션을 저장해야 한다. 트랜잭션의 주요 요소는 실행에 필요한 가스 가격, 수신자의 주소(스마트 계약일 수 있음) 및 트랜잭션의 가치입니다. 그런 다음 사용자에 의해 생성되고 조작되는 중간 객체인 영수증이 생성되고, 이는 블록에 캡슐화된 트랜잭션의 결과를 나타내는 객체로, 트랜잭션의 디지털 지문, 블록 번호, 사용된 가스량 및 스마트 계약이 배포된 경우 그 주소를 포함하게 된다.
기본적으로 Geth에서 사용되는 데이터 구조는 머클 트리와 패트리샤 트리의 두 가지 유형의 트리를 결합한 트리이다. 이는 머클 패트리샤 트리(MPT)라고 불린다.
머클 트리는 기본 데이터의 해시값들이 트리의 리프 노드로 사용된다.
리프 노드의 해시값들을 두 개씩 연결하여 부모 노드를 형성하고, 이를 반복하여 트리의 루트 해시를 생성하고, 트리의 루트 해시는 데이터 집합의 무결성을 검증하는 데 사용된다.. 데이터가 변경되면 루트 해시가 달라지므로, 데이터 무결성을 쉽게 확인할 수 있습니다.
패트리샤 트리는 키-값 데이터를 연관 배열로 나타내는 접두사 트리이다. 각 노드가 하나의 자식만을 가지는 경우 그 자식과 합쳐져서 압축된 구조를 가지고, 검색, 삽입, 삭제 작업이 O(log2 N)의 시간 복잡도로 수행된다.. 여기서 N은 저장된 요소의 수이다.
Snap 모드에서 새로운 노드의 동기화 과정은 다음과 같이 진행된다.
스냅샷은 새로운 데이터 구조로, 블록체인의 특정 시점에서 이더리움 상태의 전체 보기를 나타낸다. 이 구조는 O(1)의 접근 복잡도를 제공하여 데이터를 빠르게 접근할 수 있게 한다. 머클-패트리샤 트리의 복잡한 데이터 접근 문제를 해결하고 동기화 시간을 크게 단축한다.
이유는 트랜잭션의 실행결과가 계정 정보 및 월드 스테이트의 기반이 되는데, 일종의 체크포인트를 통해서 그 시점의 정보를 스냅샷으로 알고 있다면 굳이 실행할 필요가 없으며, 전체 트랜잭션 정보를 가지고 있을 필요가 없다.

위 표를 보면 스냅샷은 Leveldb에 포함되어 있다. 차지하는 비중은 전체의 약 10%정도이며, Leveldb이기 때문에 기존 levedb에서 발생할 수 있는 디스크 증폭의 가능성이 존재한다.
이더리움의 데이터는 크게 두 가지로 나눌 수 있다: LevelDB와 FreezerDB.
LevelDB: 자주 읽히거나 변경되는 항목(블록, 헤더, 영수증 등)을 저장. 주로 최근 3개의 에포크에 해당하는 데이터(약 90,000 블록)를 저장.
FreezerDB: 장기 저장을 위한 데이터베이스로, 접근이 드물고 수정이 불가능한 append-only 구조. LevelDB에서 3개의 에포크를 넘는 데이터는 FreezerDB로 이동.
Merkle-PATRICIA 트리
Merkle-PATRICIA 트리는 이더리움의 세계 상태, 블록 내 트랜잭션, 트랜잭션 영수증 및 계정의 저장 데이터를 저장하기 위한 자료 구조이다. 이 트리는 LevelDB와 FreezerDB를 통해 구현되며, 두 트리의 장점을 결합하여 데이터 무결성을 쉽게 확인할 수 있도록 한다.

본 논문에서 요점은 ancient(FreezerDB)를 DHT를 통해 분산시킴으로서 저장공간을 절약한다?가 요지인 것 같다. 위 그림은 "새로운 동기화 모드에서 DHT를 활용하는 방법. 노드는 DHT 관점에서 가까운 이웃에게만 데이터를 요청"하는 과정을 도식화하여 보여주고 있다.
제안된 동기화 방식은 스토리지 공간을 절약하는 데 목적이 있다.
주요 포인트
새로운 동기화 방식은 주로 DHT 이웃들로부터 데이터를 받아와 스토리지 공간을 절약한다.
공통 접두사 범위를 사용하여 블록 데이터를 분산 저장하고, 중복 저장을 통해 데이터 안정성을 높인다.
기존 전체 노드와의 호환성을 유지하여, 필요시 전체 노드로부터 데이터를 요청할 수 있다.
부하 분산의 측면의 새로운 측면을 제시하는데, 새로운 동기화 방식의 또 다른 이점은 네트워크에 접속하는 피어로 인해 발생하는 부하를 더 잘 분산시킨다는 점이다.

Figure 5에서 확인할 수 있듯이 기본 Snap 동기화 중에 접속한 피어들이 보낸 블록 수의 비율을 보인다. 여기서 대부분의 패킷은 소수의 피어에 의해 전송되었음을 알 수 있다. 가장 많은 블록을 보낸 피어는 동기화 중인 피어에게 전송된 블록의 약 12%를 담당했으며, 상위 10%의 피어는 전송된 블록의 85.21%를 담당했다.
이러한 경향은 동기화 중에 접속한 피어들이 보낸 블록 수는 소수의 피어에 집중되어 있음을 알 수 있다.
예상되는 저장 공간 절감은 새로운 동기화 전략을 채택함으로써 이더리움 P2P 네트워크는 상당한 저장 공간을 절약할 수 있다. FreezerDB의 저장 공간 절감을 계산할 때, 전체 노드의 장기 저장 공간 절감치는 약 95%이며 3,6000개의 노드로 구성된 이더리움 네트워크를 고려할 때, 약 12PB의 데이터를 절감할 수 있다.
이 논문은 블록체인 데이터 저장 문제의 중요성을 다룬다. 우리는 Geth 소스 코드와 개발자들의 기술 문서 조사를 통해 이더리움의 동기화 및 저장 전략을 종합적으로 설명했다. Fast와 Snap 동기화 모드의 도입 이후, 모든 노드가 모든 블록을 저장할 필요가 없음을 설명했다. 따라서 현재 FreezerDB에 저장된 고정된 블록체인 데이터를 Kademlia DHT에 분산 저장하는 방안을 제안했다. Kademlia DHT는 모든 이더리움 클라이언트에 구현되어 있지만, 지금까지 사용되지 않았다.
우리는 공식 Geth 클라이언트에 우리의 솔루션을 구현하고, 소규모 개인 이더리움 인스턴스에서 DHT를 활용한 새로운 동기화 및 저장 모드를 평가했다. 우리의 솔루션은 현재 클라이언트와 완전히 호환되며, 그 실용성을 입증했다. 1125개의 피어의 복제 요인을 기준으로, 이 새로운 분산 저장 전략은 각 피어의 장기 저장 크기를 줄일 수 있으며, 이는 FreezerDB 볼륨의 95%와 총 볼륨의 58%에 해당한다. P2P 네트워크 전체 규모에서는 약 12PB의 전체적인 이득을 제공하면서도 블록체인의 신뢰성을 실질적으로 감소시키지 않는다.
미래 연구에서는 Geth 개발자들이 발표한 샤딩(Sharding) 기능의 영향을 연구할 계획이며, 이는 우리의 접근 방식과 보완적으로 작용할 수 있다.
문제 제기
이더리움 노드의 데이터 저장 문제와 그로 인한 리소스 소비 문제를 제기.
최신 블록 데이터를 저장하는 비용이 기하급수적으로 증가하고 있음.
2. 제안된 솔루션
FreezerDB에 저장된 고정된 블록체인 데이터를 Kademlia DHT에 분산 저장.
이를 통해 개별 노드의 저장 요구량을 줄이고 네트워크 전체의 데이터 저장 효율성을 향상.
3. 구현 및 평가
공식 Geth 클라이언트에 제안된 솔루션을 구현.
소규모 개인 이더리움 인스턴스에서 테스트하여 솔루션의 실용성을 확인.
4. 기대 효과
노드당 장기 저장 크기를 95%까지 감소.
네트워크 전체적으로 약 12PB의 저장 공간 절약.
5. 미래 연구 방향
샤딩 기능과의 상호 보완적 연구 계획.
다음은 샤딩에 대해서 살펴보도록 하자.