Succinct Proofs of Random Access (SPoRA) 번역
1. 개요 (Abstract)
이 문서는 Arweave 네트워크의 새로운 합의 메커니즘을 설명한다. 이 메커니즘은 최신 블록위브(blockweave) 상태에서 유추된 과거 데이터 청크를 찾는 경쟁 방식에 기반을 둔다.
2. 동기 (Motivation)
현재 Arweave 네트워크에서 사용되는 합의 알고리즘은 기존 작업 증명(Proof of Work, PoW) 방식과 유사하지만, 추가적으로 최신 블록위브 상태에서 결정된 과거 데이터 청크(최대 256KiB) 를 포함해야 한다. 이 방식은 네트워크가 과거 데이터를 유지하도록 장려하는 효과는 있지만, 채굴자가 데이터를 얼마나 빨리 액세스할 수 있어야 하는지에 대한 제한이 거의 없는 문제가 있다.
• 문제점 1: • 채굴자가 원격 스토리지 풀(remote storage pool)을 활용하여 빠르게 데이터를 검색하는 방식이 가능하다. • 원격 저장소와 컴퓨팅 풀을 조합하면 1Gbps 인터넷 링크를 통해 초당 수백만 개의 PoW 입력값을 계산하여 제공할 수도 있다. • 실제로 Arweave 네트워크에서는 공개 노드(public node) 수가 감소하는 동시에, 네트워크 해시파워(hashpower)는 증가하고 있다. • 이는 일부 채굴자들이 공동 저장 및 계산 풀(storage & computation pool) 을 형성하고 있음을 시사한다.
• 문제점 2: • PoW 기반 네트워크는 에너지 소비량이 매우 크다. • 탄소 배출량이 많아 환경에 부정적인 영향을 미칠 수 있다. • 친환경적인 합의 알고리즘을 도입하는 것은 Arweave 플랫폼의 장기적인 지속 가능성을 위해 필수적이다.
SPoRA의 목표
새로운 합의 알고리즘(SPoRA)은 다음 두 가지 주요 목표를 달성하고자 한다.
-
데이터를 필요할 때만 불러오는 방식(온디맨드 데이터 검색)을 억제하고, 채굴자들이 데이터를 채굴 기계에 더 가깝게 저장하도록 유도한다. • 즉, 데이터를 로컬에 저장하지 않고 네트워크에서 불러오는 채굴자는 불리해지도록 설계한다.
-
네트워크의 에너지 소비를 줄인다. • 기존 PoW의 높은 연산 비용과 전력 소모를 낮춰 보다 효율적인 합의 과정을 만든다.
3. 참조 구현 (Reference Implementation)
해당 합의 알고리즘의 참조 구현(Reference Implementation)은 아래 링크에서 확인할 수 있다.
4. SPoRA 알고리즘 명세 (Specification)
4.1 사전 요구 사항 (Prerequisites)
1. 인덱싱된 데이터셋 (Indexed Dataset)
SPoRA의 핵심은 과거 데이터 청크를 지속적으로 검색하는 것이다. 모든 데이터 청크는 전역 오프셋(Global Offset) 으로 식별되며, 네트워크 전체에서 모든 바이트가 동일한 인센티브를 받도록 설계되어야 한다. 따라서, 블록위브 전체를 인덱싱하여, 특정 청크를 빠르게 검색할 수 있도록 해야 한다. Arweave Erlang 클라이언트는 버전 2.1부터 이러한 인덱스를 유지하도록 설계되었다.
2. 느린 해시(Slow Hash)
SPoRA는 채굴자가 지속적으로 저장소에 접근하도록 강제하는 방식으로 동작해야 한다. 즉, 채굴자가 특정 데이터를 빠르게 선택할 수 없도록 만들어야 하며, 이는 아래 두 가지 이유 때문입니다.
• 위협 1: • 채굴자가 데이터 저장 비용을 아끼고, 대신 빠른 연산으로 PoW를 수행하려는 가능성이 있다. • 데이터 저장 없이 빠른 계산만으로 동일한 보상을 받는다면, 저장 인센티브가 사라진다. • 위협 2: • 현재의 컴퓨팅 기술은 매우 발전하여, 데이터 검색을 하지 않더라도 높은 효율로 연산을 수행할 수 있다. • 이는 기존 PoW 방식보다도 더 빠르게 채굴이 이루어질 수 있음을 의미한다.
이를 해결하기 위해, Arweave는 버전 1.7부터 RandomX를 사용한다. RandomX는 일반 CPU에 최적화된 PoW 알고리즘으로, 전문 하드웨어의 채굴 우위를 줄이는 역할을 한다.
4.2 알고리즘 설명 (Algorithm Description)
채굴자(Miner)의 과정
- 랜덤 논스(nonce)를 생성하고, 현재 블록 상태, 후보 블록, nonce를 포함하는 머클 트리 해시를 생성한다.
- 이 해시 값을 기반으로 특정 Recall Byte(검색해야 할 바이트 위치) 를 결정한다.
- 로컬 저장소에서 해당 바이트가 포함된 데이터 청크를 검색한다. • 데이터를 찾지 못했다면 1번 단계부터 다시 시작한다.
- 찾은 데이터 청크와 이전 블록 해시를 조합하여 빠른 해시(Fast Hash)를 계산한다.
- 계산된 해시 값이 현재 난이도보다 크다면, 해당 블록을 네트워크에 전파한다. • 블록에는 nonce와 해당 데이터 청크가 포함된다.
이 과정에서 사용된 해당 데이터 청크와 머클 증명(Merkle Proofs) 를 Succinct Proof of Random Access (SPoRA) 라고 한다.
이는 새로운 합의 알고리즘의 이름이기도 하다.
검증자(Verifier)의 과정
• 검증자는 채굴자가 수행한 과정을 한 번 실행하여 블록의 유효성을 검증한다. • 블록 내의 nonce와 데이터 청크가 올바른지 확인하면 된다.
4.3 검색 공간 제한 (Search Space Constraints)
SPoRA는 검색 공간(Search Space)을 적절히 설정하여 데이터 저장을 장려해야 한다.
-
검색 공간이 충분히 커야 하는 이유: • 채굴자가 온디맨드 방식으로 전체 검색 공간을 다운로드하는 것이 불가능하도록 하기 위해서. • 네트워크 대역폭이 증가함에 따라, 데이터 요청만으로 PoW를 수행하는 것이 점점 쉬워지므로 이를 방지해야 한다.
-
검색 공간이 너무 크면 안 되는 이유: • 데이터 저장량이 적은 채굴자도 경쟁할 수 있도록 하려면 검색 공간이 너무 크면 안 된다. • 따라서 SPoRA는 검색 공간을 블록위브의 10%로 설정한다. • 이 경우, 일부 채굴자가 특정 부분을 집중적으로 저장하면 약 1.2배의 채굴 효율을 얻게 됨.
5. 관련 연구 (Related Work)
SPoRA는 Permacoin: Repurposing Bitcoin Work for Data Preservation 논문에서 영감을 받았다. Arweave는 이를 신뢰할 수 있는 중앙화된 데이터 대신, 분산 네트워크 전체에서 데이터를 유지하는 방식으로 개선했다. SPoRA는 연산으로 데이터 부족을 보완하는 것이 불가능하도록 설계되었으며, 네트워크가 데이터를 고르게 복제하도록 인센티브를 제공한다.