Decentralized Storage (하)

Brynn Park
Decipher Media |디사이퍼 미디어
37 min readJul 6, 2024

Disclaimer: 서울대학교 블록체인 학회 디사이퍼(Decipher)에서 Blockchain Decentralized Storage에 대해서 다뤘습니다. 본 시리즈는 탈중앙 스토리지의 사용이 증가하고 있고, 향후 블록체인 탈중앙 스토리지에 대한 사용성이 증가할 것이라고 기대해 이에 대해 자세히 설명한 한국어로 된 아티클이 적다는 문제의식에서 출발해, 블록체인 탈중앙 스토리지에 대해 설명하고 관련 프로젝트들을 자세히 살펴보았습니다. 글에 들어가기 앞서서, 본 글은 어떠한 투자 조언으로도 해석될 수 없으며 해당 글에는 필자의 주관이 포함되어 있음과 필자는 글에 등장하는 프로젝트와 관계가 없음을 명확히 밝힙니다.

Series

  1. Decentralized Storage(상)
  2. Decentralized Storage(하)

Author

박보현(@BrynnPark_eth) of Decipher

Seoul Nat’l Univ. Blockchain Academy Decipher(@decipher-media)

Reviewed By 이현우, 신성헌

목차

1. Intro

2. Blockchain Decentralized Storage
2–1. Contract-based DSN
2–2. Network-based DSN

3. Filecoin: Contract-based DSN project
3–1. Filecoin 작동구조
3–2. Filecoin 인센티브
3–3. 피해자 보상 체계
3–4. 파일 암호화

4. Arweave: Network-based DSN project
4–1. Arweave 작동구조
4–2. Aweave 인센티브
4–3. 파일 암호화

5. Conclusion
5–1. Filecoin vs. Arweave
5–2. Filecoin & Arweave statistics
5–3. Closing sentences

Intro

앞서 Decentralized Storage(상)에서는 저장 공간인 스토리지가 어떻게 발전해왔는지 간단하게 살펴보면서 탈중앙 스토리지의 등장과 정의에 대해서 다뤘고, 탈중앙 스토리지에 본격적으로 들어가기에 앞서 Torrent와 IPFS를 통해 탈중앙 네트워크인 P2P에 대해 알아보았습니다. 탈중앙 스토리지는 탈중앙 네트워크 위에서 작동하는 저장공간으로 정의할 수 있으며, 탈중앙 스토리지 네트워크는 DSN — Decentralized Storage network — 라고 지칭하기도 합니다. 이번 Decentralized Storage(하)에서는 DSN 중에서도 블록체인을 이용해 구현된 Blockchain DSN의 정의와 종류, 그리고 각 DSN의 구현 예시를 프로젝트 분석을 통해 알아보겠습니다.

본론에 들어가기에 앞서 본 개요에서 DSN의 특징을 먼저 정리한 뒤, Blockchain DSN의 개념과 함께 어떤 문제를 해결하고자 등장하였는지를 설명하려고 합니다.

앞서 알아본 탈중앙 네트워크를 사용한 탈중앙 스토리지는 일반적으로 다음과 같은 특성을 지닙니다:

> 제 3자에 의존하지 않고 데이터를 저장하고 관리함으로써 데이터에 대한 소유권을 확보한다.
> 데이터가 단일 서버가 아닌 여러 노드에 분배되어 저장됨으로써 가용성이 향상된다.
> 단일 서버에 저장되지 않기 때문에 일반적으로 저장소를 대여하는 자와 제공하는 자가 있다. (P2P 모델)

하지만 이러한 탈중앙 네트워크의 가장 큰 문제점은 제대로된 인센티브 구조가 없다는 점과 거래 내역을 투명하게 볼 수 없다는 점입니다. 인센티브 구조가 없다는 점이 문제가 되는 가장 큰 이유는 타인의 파일을 저장해줄 동기가 없기 때문에, 파일 저장소라는 공간이 유지되기 힘들다는 것입니다. 또한 거래 내역을 투명하게 볼 수 없다는 점은 사용자의 원본 데이터가 제대로 저장되었는지 손상되었는지 등의 여부를 확인하기 어렵다는 문제로 이어집니다. 따라서 이를 블록체인을 통해서 해결하고자 하여 나온 것이 블록체인 DSN입니다. 블록체인 DSN은 구현방식에 따라 크게 2가지 — Contract-based DSN과 Network-based DSN — 로 나눌 수 있습니다. 본론에서는 각 구현 방식의 차이와 함께 Contract-based DSN의 구현 예시인 Filecoin과 Network-based DSN의 구현 예시인 Arweave에 대해서 자세하게 다룰 예정입니다.

Blockchain Decentralized Storage

앞서 설명한 것처럼 Blockchain DSN은 크게 Contract-based DSN과 Network-based DSN 2가지로 분류할 수 있습니다. 각 DSN에 대해서 자세히 알아보겠습니다.

Contract-based DSN

먼저 Contract-based DSN은 블록체인을 스토리지 거래의 매개체 혹은 인센티브 레이어로 사용하는 방식입니다. 블록체인이 스마트 컨트랙트를 통해 데이터를 저장할 공간의 사용자와 해당 공간의 제공자 사이의 소통을 매개합니다. 예를 들어, 데이터 저장 요청, 저장에 대한 검증, 데이터 조회 등의 작업을 수행하게 되는데 이러한 일련의 작업을 매개하고 블록체인에 기록합니다.

Contract-based DSN은 데이터 자체를 블록체인에 저장하지 않으며, 어느 곳에 저장될지는 유연하게 결정될 수 있지만 일반적으로 오프체인에 저장합니다. 용어의 명확성을 위해, 오프체인은 거래의 매개체로 사용되는 블록체인 외의 모든 수단을 의미함을 짚고 넘어갑니다. 오프체인에 저장되기 때문에 데이터는 대개 영구적으로 저장되지 않으며, 사용자는 사용한 데이터 저장소의 크기와 기간만큼만 비용을 지불하게 됩니다. 전형적인 구독 모델의 형태, Pay-as-you-go model로 생각하시면 됩니다.

Contract-based DSN은 AWS에서 호스팅하는 스토리지 서비스인 S3의 웹3 버전이라고 생각하면 될 정도로 여러 측면에서 비슷한 형태를 띠고 있습니다. 대표적인 구현 예시로 Filecoin이 있습니다.

Network-based DSN

다음으로 Network-based DSN은 블록체인 자체에 데이터를 저장하고 관리하는 방식의 네트워크입니다. Contract-based DSN과 다르게 스토리지 매개부터 저장까지 블록체인에서 이뤄지며 데이터는 저장된 블록체인의 보안을 상속받게 됩니다. 블록체인에 저장됨을 보장하기 때문에 일반적으로 데이터가 영구적으로 저장되는 스토리지입니다. 영구 저장 특성상 요금 지불을 한 번만 하게 되며, 처음에 선불로 지불하게 됩니다. 해당 네트워크의 구현 예시로 Arweave를 들 수 있습니다.

Filecoin: Contract-based DSN project

출처 —github.com/filecoin-project/filecoin-docs

그렇다면 먼저 Contract-based DSN 프로젝트 중 Filecoin에 대해서 자세히 살펴보겠습니다. Filecoin은 Juan Benet이라는 사람이 설립한 Protocol Labs에 의해 개발되었습니다. Protocol Labs는 2014년에 설립된 오픈 소스 소프트웨어 연구개발 회사로, 앞서 Decentralized Storage(상)편에서 살펴봤던 P2P 프로토콜인 IPFS를 개발한 회사이기도 합니다.

Protocol Labs에 의해 개발된 Filecoin은 파일을 저장할 수 있는 P2P 네트워크로, IPFS 프로토콜을 기반으로 개발되었습니다. 이미 IPFS를 통해서 탈중앙 스토리지가 구현되어 파일 교환까지 되는데 왜 굳이 블록체인을 이용해 블록체인 탈중앙 스토리지를 구현해야 했을까요? 앞서 제가 언급했던 일반적인 P2P 파일 교환 네트워크의 문제점을 생각해보시면 인센티브 구조가 없다는 것을 기억할 겁니다. 이 지점을 문제 지점으로 인식해 Filecoin은 블록체인을 이용해 인센티브 구조를 보장했습니다. 조금 더 자세히 IPFS를 예시로 들어보면, 누구나 자신의 데이터는 저장하고 싶어하지만 공짜로 남의 데이터를 저장해주고 싶어하진 않습니다. 남의 데이터를 저장함으로써 얻는 인센티브가 없기 때문입니다. 이를 위해 Filecoin은 자체적인 블록체인을 구축해 IPFS 위에 인센티브 계층으로 작용합니다. 앞서 말한 스토리지 제공자와 사용자 사이의 딜을 체결해주며 스토리지 제공자의 인센티브를 보장합니다.

Filecoin의 작동구조

Filecoin Data Lifecycle

어떻게 Filecoin에서 데이터의 저장과 조회가 이뤄지는지 파일의 Lifecycle을 통해 간단하게 살펴보겠습니다.

출처 — filecoin.io

순서를 설명하기에 앞서 용어 정의를 먼저 하고자 합니다. 여느 블록체인 시스템과 마찬가지로 Filecoin에도 Miner라는 개념이 있습니다. Miner는 크게 Storage Miner와 Retrieval Miner, 2가지로 나뉩니다.

Storage Miner

  • 저장 공간을 빌려주는 Storage Provider와 동일하다고 볼 수 있습니다. 사용자가 저장하고자 하는 데이터를 본인의 저장 공간에 저장을 해주고 인센티브를 받는 채굴자입니다. 이후 본 글에서는 스토리지 제공자 라고 통일하도록 하겠습니다.

Retrieval Miner

  • 사용자가 저장해둔 데이터를 조회하고 싶을 때 데이터에 대한 요청에 응답하는 채굴자입니다. 보통 Storage Miner와 같은데, 저장하기 위해 인센티브를 받은 Storage Miner가 데이터를 저장하고 있기 때문입니다. 이후 본 글에서는 데이터 제공자 라고 통일하도록 하겠습니다.

파일을 업로드하고 다운로드하는 순서는 아래와 같습니다:

1. 먼저 사용자는 본인의 파일을 저장하기 위해 스토리지 제공자에게 FIL(Filecoin)으로 지불하게 됩니다.

2. 스토리지 제공자는 해당 파일을 저장하고 해당 내용을 Filecoin의 블록체인에 기록합니다.

3. 이후, 스토리지 제공자는 해당 데이터를 저장하기로 한 기간동안 지속적으로 해당 데이터를 저장하고 있다는 것을 증명하게 됩니다.

4. 사용자가 데이터를 조회하고 싶다면 FIL(Filecoin)로 조회에 따른 비용을 지불하고 데이터 제공자로부터 데이터를 조회할 수 있게 됩니다.

이 때, 중요한 점은 데이터를 저장해주는 스토리지 제공자를 어떻게 신뢰할 수 있냐는 문제인데, 이에 대해서 스토리지 제공자는 일정 금액을 FIL을 담보로 스테이킹하게 됩니다. 저희가 흔히 생각하는 PoS 밸리데이터의 스테이킹과 매우 유사하다고 생각하면 됩니다. 자세한 내용은 Filecoin의 파일 저장 증명 알고리즘 부분에서 후술할 예정입니다.

기본적으로 사용자는 Filecoin에 데이터를 올릴 때 Single storage deal과 Multi storage deal 중 선택할 수 있고, Multi storage deal이 당연히 더 비싼 대신 data redundancy를 보장해줍니다. Single storage deal이란, 하나의 스토리지에만 데이터를 저장하는 옵션입니다. 즉, 스토리지 제공자 한 명에게만 저장을 부탁하게 됩니다. 이에 반해 Multi storage deal이란, 여러 곳에 데이터를 저장하는 옵션입니다. 만약에 사용자가 Single storage deal을 선택했을 경우, 사용자는 데이터 조회 시에도 단 한 명의 해당 스토리지 제공자에게만 데이터를 제공받을 수 있습니다.

위 설명드린 과정을 크게 2가지 — 데이터를 저장하기 위해 (1) 저장 스토리지를 거래하는 부분과 데이터를 조회하기 위해 (2) 데이터 조회를 거래하는 부분 — 로 나눌 수 있습니다. 각 과정이 일어나는 시장을 각각 (1) Storage Market과 (2) Retrieval Market이라고 칭하게 되는데 자세하게 알아보도록 하겠습니다.

출처 — Filecoin Whitepaper

위 그림은 Storage Market과 Retrieval Market에 대한 이해를 돕기 위해 화이트 페이퍼에서 발췌해온 도식으로 왼쪽에서 오른쪽 방향으로 진행됩니다.

Storage Market

먼저 데이터를 저장하는 스토리지 마켓을 보겠습니다. 스토리지 마켓은 스토리지 제공자와 사용자가 온체인에서 스토리지 거래를 협상하고 게시하는 네트워크 엔트리 포인트입니다. 스토리지 마켓에서 이뤄지는 딜을 스토리지 딜이라고 지칭합니다. 스토리지 딜은 온체인에서 발생하게 됩니다. (다만 오더북 과정은 오프체인입니다.)

스토리지 딜은 다음과 같은 순서로 이뤄집니다:

1. 사용자는 스토리지를 요청하는 FIL(Filecoin) 전송과 함께 bid order을 제출합니다.

bid order에는 다음과 같은 항목들이 포함됩니다 :

> size : 저장하려는 데이터의 크기
> funds : 보증금의 개념으로 사용자가 최소 funds 만큼의 금액을 소유하고 있음을 나타내는 수치
> price : spacetime 가격으로 일정 시간 해당 스토리지에 대해 얼마를 지불할지를 나타내는 지표
> time : 파일이 저장되어야 하는 시간 기한
> coll : 스토리지 제공자에게 담보로 요구하는 금액
> coding : 데이터를 복제하기 위해 사용할 erasure coding 명시

2. 스토리지 제공자는 제공할 스토리지와 함께 ask order를 제출합니다. 합의 사항에는 지불할 수수료, 언제부터 빌릴지, 얼마나 빌릴지 등의 내용이 포함됩니다.

ask order에는 다음과 같은 항목들이 포함됩니다 :

> space : 빌려줄 공간의 크기
> price : spacetime 가격으로 일정 시간 해당 스토리지를 얼마에 제공할지 나타내는 지표

3. bid order와 ask order가 매칭이 되어 deal order에 사용자와 스토리지 제공자가 각각 사인을 하면 deal order가 체결이 됩니다.

deal order에는 다음과 같은 항목들이 포함됩니다 :

> ask : 스토리지 제공자의 서명
> bid : 사용자의 서명
> ts : 사용자가 사인을 한 epoch에 대한 타임스탬프
> hash : 스토리지 제공자가 저장할 데이터의 암호화된 해시값

4. 딜이 체결이 완료가 되면 사용자는 파일을 스토리지 제공자에게 전송합니다.

5. 스토리지 제공자가 파일을 제대로 저장했다는 증명을 하게 되고 (challenge <> response), 증명이 완료되면 1번에서 사용자가 제출한 filecoin을 받게 됩니다.

Retrieval Market

다음으로 리트리벌 마켓은 데이터 제공자가 저장된 데이터를 사용자에게 제공하기 위해 검색 계약을 협상하는 것으로 오프체인에서 발생합니다. 이 계약에서 사용자는 조회를 제공하는 주체에 일정 금액의 FIL(Filecoin)를 지불하는 데 동의하게 되며, 지불을 위해 Payment channel이 개설되는데 이는 State channel이라고 생각하시면 됩니다. 리트리벌 마켓에서 이뤄지는 딜을 리트리벌 딜이라고 지칭합니다. 리트리벌 딜은 사용자와 데이터 제공자 사이의 계약을 의미합니다.

리트리벌 딜의 과정을 보기 전에, 데이터를 보관하는 방법에 대해서 짚고 넘어가겠습니다. Filecoin에서는 하나의 데이터를 더 작은 단위인 piece로 쪼개서 저장할 수 있습니다. 따라서 사용자는 각 마켓에서 특정 피스만 저장하고 조회하는 것이 가능합니다.

리트리벌 딜은 다음과 같은 순서로 이뤄집니다 :

1 사용자는 데이터 조회를 요청하는 bid order를 p2p 네트워크에 제출합니다.

bid order에는 다음과 같은 항목들이 포함됩니다 :

> piece : 요청한 데이터 piece의 index 값
> price : 사용자가 데이터 조회에 지불한 금액

2. 데이터 제공자는 bid order에 대한 데이터를 제공하기 위한 ask order를 반환합니다.

ask order에는 다음과 같은 항목들이 포함됩니다 :

> piece : 요청받은 데이터 piece의 index 값
> price : 데이터를 제공하고 받을 금액

3. bid order와 ask order가 매칭이 되어 deal order에 사용자와 데이터 제공자가 각각 사인을 하면 deal order가 체결이 됩니다.

deal order에는 다음과 같은 항목들이 포함됩니다 :

> ask : 데이터 제공자의 서명
> order : 사용자의 서명

4. 딜이 체결이 완료가 되면 payment channel을 열고, 사용자가 요청한 데이터를 한 번에 보내는 것이 아닌 쪼개서 조금씩 보냅니다.

5. 사용자 또한 본인이 요청한 데이터가 올바르게 조회되면 각 조각에 비례한 만큼의 지불만 점진적으로 하게 됩니다.

6. 데이터 조회와 금액 지불이 완료되면 payment channel이 닫히고 해당 내용을 블록체인에 기록하게 됩니다.

위 4번과 5번 과정을 보면 금액을 지불할 때 일괄지불이 아닌 micropayment라는 개념을 사용하는 것을 볼 수 있습니다. 이는 소위말하는 먹튀를 방지하고자 파일을 한 번에 보내는 것이 아닌 조금씩조금씩 보내고 돈도 조금씩 지불하는 방식입니다.

Market cycle

출처 — Research Gate

두 마켓의 사이클을 전체적으로 살펴보면 위 그림과 같습니다. 그림에서 보이는 1번, 2번, 3번 부분이 앞서 말씀드린 스토리지 마켓의 사이클입니다. 먼저 사용자는 파일에 대한 정보, 사용 기간 등의 내용과 함께 FIL을 스토리지 마켓에 bid order를 올립니다. 동시에 스토리지 제공자는 ask order를 올립니다. Deal은 스토리지 마켓에서 deal order의 형태로 체결이 됩니다.

Deal이 체결이 되면 사용자는 스토리지 제공자에게 파일을 보내고, 스토리지 제공자는 본인의 스토리지에 파일을 올리게 됩니다. 스토리지 제공자는 지속적으로 해당 데이터를 저장하고 있다는 증명을 해야하며 증명을 하지 못하면 담보로 스테이킹해둔 FIL을 슬래싱 당하게 됩니다.

리트리벌 마켓은 4번 부분으로 비교적 간단합니다. 사용자가 FIL 지불을 약속하며 파일을 요청하게 되면 이를 발견한 데이터 제공자가 파일을 보내주고 해당 보상을 받게됩니다.

Proof-of-Storage

앞서 언급했듯이 사용자는 본인의 데이터가 잘 저장됐다는 증명을 받아야합니다. Filecoin에서 어떻게 스토리지에 대한 증명을 하는 지 알아보겠습니다. 크게 2가지 증명 — (1) Proof-of-Replication(PoRep)(2) Proof-of-Spacetime(PoSt) — 을 하게 됩니다.

먼저 스토리지 딜이 체결되어 사용자의 데이터를 저장하고 네트워크에 커밋할 때, 스토리지 제공자는 Proof-of-Replication라는 증명을 생성해서 같이 제출합니다. 해당 증명은 사용자로부터 받은 데이터를 본인의 스토리지에 제대로 저장했음에 대한 증명이며 이는 스토리지 딜이 체결됐을 시, 데이터 저장 후 1회만 하면 됩니다.

이후, 데이터를 지속적으로 해당 공간에 보유하고 있다는 것을 보장하기 위한 증명도 필요합니다. 해당 증명을 위해 Proof-of-Spacetime을 생성하게 됩니다. 증명은 zk-snark를 사용하며, 데이터 공급자는 랜덤한 시간에 PoSt를 지속적으로 제출하며 증명해야 합니다. 따라서 스토리지 제공자는 FIL을 담보로 스테이킹하게 되며 해당 증명을 제 시간에 제출하지 못한 경우, 슬래싱 당하게 됩니다.

두 가지 증명 알고리즘을 통해 Filecoin은 데이터의 저장과 보관을 보장하고자 했다는 것을 알 수 있습니다.

Filecoin Incentive

위 Filecoin Data Lifecycle을 보면서 알 수 있는 사실은 사용자는 데이터를 저장할 때도, 조회할 때도 비용을 지불한다는 점으로 우리가 흔히 사용하는 일반적인 클라우드 스토리지 시스템과 매우 비슷한 지불 구조를 가지고 있을 것을 확인할 수 있습니다. 사용자가 사용한 만큼만 지불하게 되는 Pay-as-you-go 모델입니다. 사용자가 지불하는 비용으로 스토리지 제공자와 데이터 제공자는 인센티브를 보장받게 됩니다.

사용자 피해 보상 체계

데이터 저장 공간에서 가장 중요한 것은 저장을 요청한 데이터가 유실되지 않는 것입니다. 하지만 저장 공간 제공자의 실수로 인해 데이터가 손실될 수 있고, 예상치 못하게 더이상의 스토리지 제공이 불가능해지는 경우가 존재합니다. 이러한 경우에, Filecoin은 어떻게 사용자에게 보상하는 지에 대해 알아보겠습니다. 많은 다른 프로젝트는 슬래싱된 토큰을 사용의 피해 보상에 사용하는 데 쓰이기도 하지만 Filecoin의 경우, 슬래싱 당한 스토리지 제공자의 담보가 사용자에게 지급되지 않고 그냥 소각되는 것으로 확인했습니다.

이 부분과 관련해 실제로 Filecoin 커뮤니티에서 슬래싱된 토큰을 어떻게 활용한 것인가에 대한 논의가 활발하게 이뤄졌었으나 결론은 소각하는 방향으로 결정이 되었고, 사용자(피해자)는 해당 기간에 지불한 남은 금액을 환불 받고 스토리지 제공자가 담보로 걸어둔 금액 중 슬래싱 당하지 않은 나머지 금액을 보상으로 받게 되었습니다.

파일 암호화

Filecoin을 통해 저장하는 데이터에 대한 프라이버시를 보장하기 위해 사용자가 Filecoin에 파일을 올리기 전에 암호화를 해서 올려야 하고, 암호화를 한 파일에 대해서는 사용자 본인을 제외하고 아무도 복호화할 수 없습니다. 실제로 Filecoin에서는 암호화해서 올릴 것을 권고하고 있으며 사용자가 암호화해서 올리면 Filecoin은 이후 자체적으로 PoSt와 PoRep와 같은 암호화 증명을 사용하여 저장된 파일을 안전하게 보호합니다. Filecoin에 저장된 파일을 암호화하기 위해 Lighthouse에서는 Kavach encryption SDK를 개발하기도 하였으며, 사용자는 해당 SDK를 이용해서 암호화 가능합니다. 암호화된 파일의 복호화 키를 가지고 있지 않은 주체는 데이터에 접근할 수 없고 이에 따라 프라이버시가 보장됩니다.

Arweave: Network-based DSN project

출처 — Logowiki (https://logowik.com/arweave-ar-logo-vector-svg-pdf-ai-eps-cdr-free-download-10110.html)

다음으로 Network-based DSN 프로젝트 중 Arweave에 대해 알아보겠습니다. Arweave는 원래 2017년도 archain이라는 이름으로 나온 프로젝트지만 이후 2018년에 Arweave로 이름을 변경하였습니다. Arweave는 Filecoin과 다르게 데이터 영구저장이라는 내러티브를 강력하게 주장하고 있는 블록체인 스토리지입니다.

Blockweave라는 자체적인 네트워크에 영구적으로 데이터를 저장할 수 있으며, 영구저장이기 때문에 데이터를 저장할 때 딱 한 번의 선불 비용만 지불합니다. 또한 Endowment pool이라는 기금풀을 통해 인센티브 메커니즘을 유지하고 있으며 SPoRA라는 합의 알고리즘을 통해 새로운 블록을 생성함과 동시에 데이터의 저장을 보장합니다. 자세한 내용들을 하나씩 살펴보도록 하겠습니다.

Arweave의 작동구조

자체 네트워크 구조 (Blockweave)

사용자는 Arweave에 저장할 파일을 올리고 일회성의 비용을 지불하게 됩니다. 해당 파일을 Arweave의 자체 네트워크인 Blockweave에 올리며, 사용자가 데이터를 조회하고 싶을 때 언제든 조회할 수 있습니다. Filecoin과 다르게 Arweave에서 사용자는 데이터 조회에 대한 지불을 할 필요가 없습니다.

그렇다면 먼저 Arweave의 자체 네트워크 구조인 Blockweave에 대해서 살펴보겠습니다. Blockweave는 Arweave의 블록 자료 구조로 데이터가 저장되는 네트워크라고 생각하시면 됩니다. 저희가 아는 일반적인 블록체인에서 그 구조를 차용해왔지만 하나의 블록이 단 하나의 이전 블록과만 연결되는 체인 형태의 블록체인과는 다르게 하나의 블록이 총 2개의 과거 블록과 연결되어 있어 체인처럼 일자가 아닌 Weave 구조입니다.

위 사진과 같이 얽히고 섥힌 모양의 구조를 취하게 되며 이것을 저희가 흔히 아는 Weave에 비유해 Block”Chain”이 아닌 Block”Weave”라고 합니다.

출처 — The Block Research

상단에 있는 그림을 통해 실제 Blockweave의 구조를 보면 바로 이전 블록 1개(Previous Block)와 리콜 블록이라고 불리는 과거의 블록 1개(Recall Block), 총 2개의 블록이 현재 블록(Head)과 연결되어 있는 것을 알 수 있습니다. 이런 구조를 고안한 이유는 Arweave의 Blockweave 자체가 파일을 저장하는 스토리지 용도이기 때문입니다. 보통 파일 저장을 제공하는 서비스에서 가장 중요한 것은 파일이 제대로 저장되고, 원할 때 언제든 조회할 수 있어야 한다는 것입니다. Arweave는 Blockweave 구조와 더불어 후술할 자체 합의 알고리즘 SPoRA(Proof-of-access의 업그레이드 버전)를 통해 이를 해결하고자 했습니다. Blockweave 구조가 어떻게 기여했는지 후술할 SPoRA와 함께 살펴보겠습니다.

자체 합의 알고리즘 (SPoRA)

Arweave는 Succinct Proofs of Random Access 또는 SPoRA라는 자체 합의 알고리즘을 사용해, 새로운 블록을 생성함과 동시에 데이터의 저장을 보장합니다.

Blockweave의 mining power

= (Recall block을 가지고 있을 확률)*(Recall block을 가진 노드 중 해시 파워)

*해시 파워 : PoW에서 문제를 푸는 속도를 의미하는 것을, 파워가 높을수록 빠르게 풀음.

Blockweave의 마이닝 파워는 위와 같이 계산됩니다. 즉, 새로운 블록을 생성하기 위해선 리콜 블록이라는 이전 블록의 데이터가 필요하며 이를 가지고 있어야지만 새로운 블록을 생성할 수 있습니다. 따라서 채굴자들은 최대한 많은 과거 블록들의 데이터를 가지고 있으려고 하며 이에 따라 데이터의 영구저장이 가능해지도록 합니다. 이로써 블록을 채굴하기 위해 드는 비용은 cost of storage와 cost of electricity의 곱인 (cost of storage)* (cost of electricity)가 됩니다.

출처 — Arweave Yellow Paper

조금 더 자세하게 알아보도록 하겠습니다. SPoRA는 기존의 PoA(Proof of Access)알고리즘을 업그레이드한 합의 알고리즘입니다. PoA 알고리즘은 새로운 블록을 생성하기 위해 이전 블록에만 의존하는 기존의 일반적인 PoW 알고리즘과는 다르게 추가로 무작위로 선택된 이전 블록의 데이터까지 요구합니다.

즉, Blockweave에서 새로운 블록을 채굴하기 위해선 총 3가지가 필요합니다 :

1. 바로 이전 블록의 hash 값

2. 무작위로 선택된 리콜 블록

3. 새로운 블록에 포함될 transaction과 meta data

리콜 블록을 가지고 있어야만 새로운 블록을 생성할 수 있기 때문에 채굴자들에게 과거의 블록 데이터를 소유하고 있으려는 유인을 제공하게 됩니다. 다음 블록에 통합할 ‘리콜 블록’은 현재 블록의 해시와 블록 높이에 대한 mod 연산을 통해 계산됩니다. 이는 곧 Deterministic 하지만 Unpredictable 하다는 성질을 가지고 있다고 말 할 수 있습니다.

리콜 블록의 특징을 자세히 살펴보면 아래와 같습니다 :

> Deterministic : 리콜 블록은 이전 블록의 해시 값과 height에 의해 결정됨

> Unpredictable : 현재 블록이 채굴되기 전까지 해당 블록의 hash값을 알 수 없음

리콜블록과 이전 블록의 hash값, 그리고 포함될 transaction을 합해서 Block Data Segment(BDS)를 생성한뒤, 일반적인 PoW와 마찬가지로 nonce값을 찾아 블록을 채굴하게 되는 구조입니다.

기존의 PoA와 SPoRA의 차이점은 PoA는 데이터의 영구 저장 및 데이터 접근성(데이터를 노드가 소유하고 있음)이라는 Arweave의 주요 목표를 달성했지만, 채굴자가 데이터를 빠르게 제공하는 데 충분한 인센티브를 제공하지는 못했습니다. 기본적으로 데이터 제공에 대한 증명이 아닌 채굴자가 데이터를 소유하고 있음에 대한 증명을 요구했기 때문에 채굴자들은 별도의 탈중앙화된 노드를 유지하며 빠르고 안전하게 데이터를 제공하는 대신 원격 스토리지 혹은 데이터 센터를 사용해 데이터 저장 비용을 아끼고 아낀 비용을 hash power에 사용하는 경우가 많았습니다. SPoRA는 이러한 PoA의 문제를 해결하기 위해 리콜 블록의 데이터를 가지고 있다는 증명 뿐만 아니라, 리콜 블록의 일부 데이터(challenge byte라고 미리 정해짐)를 같이 반환하게 합니다. 따라서 물리적 거리는 데이터의 반환 속도에 영향을 미치는 요소 중 하나이기 때문에 채굴자들은 멀리 있는 원격 저장소가 아닌 본인의 로컬 노드에 데이터를 저장하고 있으려고 하며, 최대한 많은 데이터 복제를 통해 빠르게 데이터를 조회하려고 합니다. 즉, 업그레이드된 SPoRA 알고리즘은 채굴자들이 보다 효율적이고 신속하게 본인의 로컬 노드에 데이터를 복제하도록 장려하였습니다.

추가적으로 기존의 타 블록체인에서의 PoA는 과거의 블록 데이터를 전부 저장하고 있어야 했으므로 노드에 부하가 많다는 단점이 있었습니다. 이에 반해 Arweave가 고안한 Blockweave 데이터 구조에서 채굴자는 이론적으로 모든 블록을 저장할 필요가 없습니다. 관련한 자세한 내용은 Blockweave의 데이터 구조에서 설명할 예정입니다.

자체 데이터 구조 (Block data structure)

Blockweave 데이터 구조는 Block memoization이라는 특징을 지니고 있어 저희가 흔히 아는 이더리움처럼 노드가 모든 블록에 대한 정보를 저장할 필요를 없애줍니다. 현재 최신 블록 한 개만으로 전체 네트워크에 대한 Syncing이 가능하게 하며, 이는 자체적으로 가지는 블록의 데이터 구조 덕분입니다.

Blockweave의 Block data structure는 다음과 같습니다 :

> Transactions : 블록에 포함되는 모든 트랜잭션 리스트
> Block Size : 블록의 크기로 블록에 포함되는 각 트랜잭션 데이터 크기의 합
> Timestamp : 블록 채굴이 시작된 시간을 기준으로 한 타임스탬프
> Reward Address : 보상을 받을 지갑 주소
> Previous Block : 이전 블록의 hash 값
> Height : 해당 블록의 블록 높이
> Weave Size : 제네시스 블록부터 현재 블록까지의 블록 사이즈 총합
> Storage Endowment : Endowment에 있는 AR의 물량 (Winston 단위로 표기 / 1 AR = 1,000,000,000,000 Winstons)
> Hash List : 이전 블록에서 제네시스 블록까지의 블록 hash 목록
> Hash List Merkle Root : 이전 블록의 hash 값과 이전 블록의 Hash List Merkle Root 값을 합친 값
> Wallet List : 현재 블록에 포함될 트랜잭션을 기준으로 했을 때 Active wallet의 List로, AR 거래를 한 지갑을 Active wallet이라고 합니다.
> Block Data Segment : 여러 블록 데이터들을 합친 데이터의 hash 값
> Dependent Hash : BDS와 nonce값을 합친 값의 hash 값
> Nonce : 해당 에포크의 논스값
> Difficulty : PoW의 난이도로 PoW hash값은 이 값보다 큰 값을 가져야 합니다. Difficulty는 보통 이전 블록의 난이도를 상속받지만, 만약 현재 블록이 Retarget block이라면 난이도는 현재 블록 생성 시간과 목표로 하는 타겟 블록 생성 시간 사이에서 조정되게 됩니다. Retarget block은 난이도 조정이 이뤄지는 블록을 의미합니다.
> Last Retarget : Retarget이 발생한 마지막 블록의 타임스탬프
> Cumulative Difficulty : 네트워크에 의해 시도된 해시의 예상 수로, 이전 블록들을 통해 누적된 값입니다. 즉, 이전 블록들까지 계산된 모든 해시 시도 횟수입니다.
> Independent Hash : 블록의 hash 값
> Serialized Representation : 블록 데이터의 요소들 중 몇 가지를 통합한 값

위와 같은 자체 블록 데이터 구조로 인해 새로운 블록을 채굴하기 위해 필요한 데이터는 모든 블록에 각각 포함되어 memoization되어있습니다. 블록 데이터 구조 중 특히 Block Hash List로 인해 이전 블록 데이터를 요청하거나 검증할 수 있고, Wallet List를 통해 새로운 트랜잭션에 대해 해당 지갑이 포함된 모든 블록들을 다 소유하고 검증하지 않고도 새로운 트랜잭션을 검증할 수 있습니다.

이러한 Block Hash List와 Wallet List는 새로운 블록이 채굴될 때마다 채굴자 네트워크에 의해 지속적으로 업데이트가 되며 새로운 채굴자는 이론적으로 네트워크에 접속해 신뢰받는 피어로부터 가장 최신 블록 하나만 다운받아도 채굴을 할 수 있게 됩니다. 이러한 블록 데이터 구조는 확실히 채굴자의 부하를 줄여준다는 점에 있어서 타 블록체인과의 차별점을 갖습니다.

Arweave Incentive

Arweave는 어떻게 인센티브를 유지하는 지 알아보겠습니다. 앞서 Arweave는 자체적으로 Endowment pool라는 기금풀을 운영한다고 했는데, 해당 기금풀은 사용자가 처음에 지불하는 이용수수료의 일부가 저장되는 Vault입니다. 채굴자들에게 보상을 보장하기 위한 구조로, 사용자가 처음에 일화성으로 지불하는 비용의 약 84 퍼센트가 기금풀에 저장되며, 나머지 16 퍼센트는 바로 스토리지 제공자에게 보상으로 주어지게 됩니다.

출처 — Delphi Digital

기금풀에 있는 자금들은 채굴자가 받는 블록 보상이 저장 비용보다 높게 유지될 수 있도록 보충하는 역할을 하는 것으로, 블록 보상이 저장 유지 비용보다 낮아질 때 기금풀에서 채굴자에게 추가적인 보상을 주도록 설계되어 있습니다. 이러한 인센티브 구조가 지속가능한지에 대한 논의는 있었지만, 실제로 기술이 발전할수록 저장비용은 지속적으로 줄어들 것이기 때문에 Arweave는 자체적으로 향후 100년은 지속가능하다고 예상하고 있습니다. 또한 Arweave는 Filecoin과 같은 다른 탈중앙 저장 스토리지에 비해 비용 측면에서 보수적으로 운영함으로써 지속가능성 측면을 제고했다고 보입니다.

파일 암호화

기본적으로 Arweave는 Public data storage이기 때문에 암호화가 되지 않은 상태로 파일을 저장하게 됩니다. 따라서 사용자가 파일을 암호화하고 싶을 경우, 암호화를 한 상태로 파일을 업로드 해야하며 Filecoin과 비슷하게 사용자가 암호화한 파일에 대한 암호화키를 소유하고 있으며, 복호화 키를 가지고 있는 사용자만이 데이터에 접근하여 복호화할 수 있습니다. Arweave에서의 파일 암호화는 AES (Advanced Encryption Standard)에 맞춰 이뤄지는 것이 일반적이며 자세한 내용은 해당 페이지를 참고하시길 바랍니다.

Conclusion

Filecoin vs. Arweave

지금까지 DSN의 개념과 블록체인 DSN, 그리고 각 DSN를 구현한 프로젝트를 알아봤습니다. 두 프로젝트가 동일한 비교 항목에 대해 어떤 차이점을 가지는 지 간단하게 표로 살펴보겠습니다.

출처 — Bohyeon Park (자체 제작)

먼저 경제 모델을 살펴보겠습니다. Filecoin의 경우, 구독 모델로 사용한 만큼만 지불이 되며 영구저장을 보장할 수 없습니다. 또한 구독 모델인 만큼, 데이터를 저장할 때와 조회할 때 모두 지불을 하게 됩니다. 반면 Arweave의 경우, 선불로 한 번 지불을 하게 되며 영구저장을 보장합니다. 따라서 말씀드린 것처럼 데이터의 조회에 대한 지불을 하지 않습니다.

다음으로 어떻게 데이터 저장을 보장하는 지 알아보겠습니다. Filecoin의 경우, Proof of Replication(PoRep)과 Proof of Spacetime(PoSt), 두 가지 알고리즘을 통해 보장하게 됩니다. PoRep를 통해 데이터가 초기에 제대로 저장되었음을 증명하고, PoSt을 통해 데이터가 구독 기간동안 지속적으로 잘 유지되고 있는 지를 증명하게 됩니다. Arweave의 경우, 자체 합의 알고리즘인 SPoRA를 통해 채굴자에게 블록 생성과 더불어 데이터 소유를 권장함으로써 데이터의 영구 저장을 보장합니다.

세 번째로 계약 방식은 Filecoin의 경우, 계약 조건이 사용자마다 다르고 블록체인이 데이터까지 저장하는 용도가 아닌 거래의 매개체로 사용되기 때문에 각 조건에 따라 여러 개의 컨트랙트가 존재하게 됩니다. 하지만 이에 반해 Arweave의 경우, 모두 동일하게 영구저장되기 때문에 하나의 컨트랙트로 관리됩니다.

마지막으로 데이터 스토리지의 측면에서, Filecoin은 계약을 통해 어떤 스토리지 제공자가 어디에 저장을 할 지가 정해지는 반면, Arweave는 더 희귀한 데이터(리콜 블록)를 가지고 있을 수록 많은 보상을 받기 때문에 채굴자들이 데이터를 선택하여 저장하는 방식입니다.

Fliecoin & Arweave Statistics

실제로 앞서 알아본 Filecoin과 Arweave가 현재 얼마나 사용되고 있는 지 통계를 살펴보겠습니다.

출처 — Filecoin TL;DR

Filecoin의 경우, 가파르게 증가하는 추세는 아니지만 매 분기 Active Deal이 증가하고 있으며 이에 따라 Storage Utilization도 같이 증가하는 것을 확인할 수 있었습니다.

또한 100 TB 이상의 큰 데이터를 저장하는 사용자들이 증가하고 있으며, 새로운 고객층도 늘고 있는 것을 보실 수 있습니다. 실제로 Filecoin을 저장공간으로 사용하는 곳 중 UC Berkeley와 같은 대학 교육 기관을 비롯해 The Victor Research Institute와 같은 연구기관도 확인되었습니다.

Arweave의 통계를 살펴보면, Arweave에 저장되어 있는 데이터들의 합인 Weve Size의 크기가 지속적으로 증가하고 있음을 확인할 수 있었습니다. 하지만 Weave Size 자체가 아닌 증가율로 수치를 계산해봤을 때, 2023년의 증가율이 2022년에 비해 크지 않음을 확인할 수 있었습니다.

출처 — PermaDAO

Weave Size의 증가율이 크지는 않았지만, 기금풀에 축적되고 있는 자금의 수치는 2023 4분기에 급격하게 증가한 것을 확인했으며, 이를 통해 지속적인 인센티브 구조를 더욱 견고히 한 것으로 보입니다. 실제로 2023 4분기에 합산된 기금풀의 자금은 USD로 환산했을 때 147,352.47 USD로 한화로 약 2억 500만원 정도의 금액입니다.

Closing Sentences

블록체인 탈중앙 스토리지의 개념과 구현 예시, 프로젝트의 통계를 통해 등장 원인과 구현 방법에 대해서 자세하게 알아보았습니다. 하지만 지금까지 알아본 블록체인 탈중앙 스토리지가 실제로 사용성이 얼마나 있을지는 또 다른 문제입니다. 이 부분에 대해서 아직까지 블록체인 스토리지가 실생활에서 광범위하게 사용되기에는 무리가 있다고 판단됩니다. 수많은 기업들이 현재 AWS에서 제공하는 S3, 혹은 Google Cloud에서 사용하는 Cloud Storage를 사용하고 있지만 해당 스토리지 서비스들은 데이터에 대한 접근이 public하지 않으며 사용자 인터페이스가 매우 좋다는 특징이 있습니다. 이에 반해 저희가 알아본 블록체인 스토리지들은 public하기 때문에 개인의 정보 혹은 기업의 기밀을 보유하고 있는 회사 입장에서 사용하기에 마땅하지 않으며, 사용자의 입장에서는 암호화가 가능하다고 하더라도 순전히 사용자의 몫이기 때문에 파일을 바로 올릴 수 없고 암호화라는 한 단계를 더 수행해야 한다는 점에서 번거로움이 있을 거라고 생각됩니다. 즉, 사용자 인터페이스가 좋지 않습니다.

출처 — CoinGecko

하지만 상단의 그래프에서 알 수 있듯이 가격적인 측면에서 따졌을 때는 기존의 클라우드 스토리지에 비해 훨씬 저렴하기 때문에 위와 같은 문제들이 해결된다면 미래에는 충분히 사용될 수 있는 스토리지라는 생각을 가지고 이 글을 마무리하려고 합니다. 실제로 해외의 대학기관이나 연구기관은 블록체인 탈중앙 스토리지를 사용하는 경우가 나오고 있으며 이는 사회가 점점 무신뢰를 요구하는 방향으로 발전하고 있다고 생각됩니다. 이러한 발전 방향 속에 언젠간 탈중앙 스토리지의 붐은 온다고 믿으며 본 리서치 글을 전개했으며, 관심이 있으신 분들은 Filecoin과 Arweave 외의 다른 프로젝트를 살펴보셔도 좋을 거 같습니다.

Reference

--

--