[IPFS vs Swarm] 블록체인 스토리지 분석 (1) - IPFS vs Swarm

[IPFS vs Swarm]  블록체인 스토리지 분석 (1) - IPFS vs Swarm

[IPFS vs Swarm]  블록체인 스토리지 분석 (1) - IPFS vs Swarm

1. IPFS vs Swarm 비교

1.1 IPFS(InterPlanetary File System)


분산 파일 저장 시스템

IPFS는 하이퍼 미디어 배포 프로토콜로서 파일과 ID로 처리됩니다. IPFS는 모든 컴퓨팅 장치를 동일한 파일 시스템으로 연결하려고 만든 분산 파일 시스템입니다. 하지만 차이점은 IPFS는 Git 객체를 교환하는 단일 Bittorent swarm과 비슷합니다. 쉽게 말해 모든 컴퓨터를 연결해 P2P로 파일을 분산시키는 것 입니다. 크게 IPFS의 특징은 다음과 같이 정리될 수 있습니다.


1. HTTP is inefficient and expensive (HTTP는 비효율적이고 비쌉니다.)
- HTTP는 여러 컴퓨터(노드)로부터 동시에 파일 조각들을 가져오는 구조입니다. P2P 통신을 통해 기존 비디오 전송 대역폭 비용을 60%이상 절감 할 수 있습니다. 

2. Humanity's history is deleted daily (인류의 역사는 매일 사라집니다.)
- IPFS는 버전관리 시스템(Git)를 제공하며 데이터 미러링을 위한 백업을 할 수 있습니다.

3. The web's centralization limits opportunity (웹의 중앙 집중 기회를 제한합니다.)
- IPFS는 개방적이고 비-중앙집중화되어 있습니다.

4. Our apps are addicted to the backbone. (백본에 중독, 블록체인화되어있습니다.)
- IPFS는 인터넷 백본 연결 유무와 상관없이 지속적인 가용성을 가능하게 하는 다양하고 탄력적인 네트워크의 생성을 가능하게 합니다.


* IPFS structure



주로 IPFS는 단순 블록체인으로 구성된 것이 아닌, 다양한 백그라운드(Background) 기술을 내포하고 있습니다. (기술적 용어가 많이 나오니 중요 부분은 굵게 표시해두었습니다.)

해당 내용은 IPFS - Content Addressed, Versioned, P2P File System (DRAFT 3).pdf 를 기반으로 서술되었습니다.

IPFS DESIGN



* DHT (Distributed Hash Table)


DHT는 분산 해시 테이블로 P2P 시스템에 대해 메타데이터를 유지/관리 할 수 있습니다.

- Kademlia : 대규모 네트워크를 통한 효율적 조회 , 오버헤드 조정이 낮음, 다양한 공격에 대한 저항성, P2P 에플리케이션에서 광범위한 사용성을 가집니다.

Github 에 작성된 설명을 추가하자면, 'Kademlia 알고리즘 및 데이터 구조를 사용하는 분산 형 해시 테이블 저장소 컨테이너, 추상화의 자바스크립트, 네트워크를 통하지 않고도 구현 가능'이라고 작성되 어 있습니다. 

- Coral DSHT : 일부 P2P 파일 시스템은 데이터 블록을 DHT에 직접 저장하지만, 이 부분은 '저장 및 대역폭을 데이터로 낭비'합니다. 따라서 DSHT는 기존 Kademlia에서 3가지 중요한 것을 확장시켰습니다.

1. Kdemlia는 ID가 가장 가까운(using XOR-distance) 노드에 해당 키를 저장합니다. 하지만 이 부분은 application 데이터의 지역성을 고려하여 저장하지 않습니다. 이미 저장된 데이터가 있는 먼 노드 근방에 위치한 또 다른 노드에 또 저장하는 불필요함을 수행합니다. 하지만 Coral 은 데이터 블록을 제공할 수 있는 피어에 주소값을 저장합니다.
2. Coral은 특정 키값에 해당하는 값을 가져오는 DHT API를 유연하게 만듭니다. 가능한 이유는 Coral 사용자는 오직 싱글 피어(single-peer) 이기 때문입니다. API 결과값으로 반환되는 값을 살펴보면, Coral은 오직 가장 근방의 노드 값들의 서브셋(subset)들을 배포합니다. 
3. Coral은 지역 및 규모에 따라 클러스터라고 하는 별도의 DSHT 계층 구조를 구성할 수 있습니다. 이를 통해 노드는 먼저 자신의 지역에서 피어를 찾을 수 있습니다. 즉, 거리가 먼 노드를 찾으려 하지 않고 가까운 데이터를 찾아 "조회하는데 소요되는 시간"을 크게 줄 일 수 있게합니다.

- S/Kademlia DHT : S/Kademlia는 다음과 같은 두 가지 방법의 악의적 공격을 방어합니다.

1. Node id 생성을 보호하고 시빌(Sybill) 공격을 방어하기 위한 스크마를 제공합니다. 노드가 PKI 키 쌍을 만들고, 자신의 메시지에 서명하도록 요구하게 합니다. 또 다른 스키마로는 시빌 공격 시 POW 작업에 소비되는 비용을 비싸게 만드는 것을 합니다.
2. 노드는 분리 된 경로를 통해 값을 조회하여 정직한 노드가 네트워크의 많은 적들이 존재할 때 서로 연결할 수 있도록 합니다.  여기서 S/Kademlia 는 노드의 절반 이상, 대다수의 비율로도 약 85% 성공률을 보여주고 있습니다.

* Block Exchange (BitTorrent)


BitTorrent는 가장 대중적인 P2P 파일 공유 시스템입니다. IPFS 설계를 알려주는 BitTorrent 및 해당 생태계의 주요기능은 다음과 같습니다.

1. BitTorrent의 데이터 교환 프로토콜은 서로 공헌하는 노드를 보상하고 다른 사람의 리소스만 사용하는 노드를 처벌하는 "준결승 전략(Tit-for-tat strategy)"을 사용합니다.

여기서 팃포탯(Tit-for-tat)은 게임이론에서 나온 반복되는 죄수의 딜레마의 강력한 전략입니다. 이 전략은 처음에는 협력관계였지만, 그 이후에는 상대의 전략에 반응하는 것을 말합니다. 만약 상대가 이전에 협력했다면 협력, 배반했다면 역시 배반할 것 이라는 것 입니다. 즉 공헌하는 노드는 계속 보상을 받고, 계속 리소스만 사용하는 노드는 보상이 없는 것을 말합니다.

2. BitTorrent의 피어는 파일 조각의 가용성을 추적하여 가장 드문 조각을 우선적으로 전송합니다. 이것은 시드(seeds)로부터 부담을 줄여줄 뿐만 아니라, 시드가 아닌 피어끼리도 트레이딩하게 할 수 있습니다.

3. BitTorrent의 표전 팃포탯(Tit-for-tat)은 악의적인 대역폭 공유 전략에 취약점이 있습니다. PropShare는 착취 전략에 더 잘 견디는 다른 피어 대역폭 할당 전략이며 스웜(Swarm)의 성능을 향상 시킵니다. 

* Version Control System (Git)


버전 관리 시스템은 시간 경과에 따라 변하는 파일을 모델링하고 여러 버전을 효율적으로 배포 할 수 있는 기능을 제공합니다. 대중적인 버전 관리 시스템인 Git 은 분산된 방식으로 파일 시스템 트리에 대한 변경 사항을 캡쳐하는 강력한 Merkle DAG 객체 모델을 제공합니다. 

1. 불변한 객체는 파일(blob), 디렉토리(tree) 및 변경(commit)을 나타냅니다.
2. 객체는 내용의 암호화 해시에 의해 내용이 처리됩니다.
3. 다른 객체에 대한 링크가 내장되어 Merkle DAG를 형성합니다. 이것은 많은 유용한 무결성 및 작업 흐름 속성을 제공합니다.
4. 대부분의 버전 관리 메타 데이터(분기, 태그 등)는 포인터 참조 일 뿐이므로 생성 및 업데이트 비용이 저렴합니다.
5. 버전 변경은 참조를 업데이트 하거나 객체를 추가하면 됩니다.
6. 다른 사용자에게 버전 변경 사항을 배포하는 것은, 단순히 객체를 전송하고 원격 참조를 업데이트 하는 것 입니다.

* Self-Certified Filesystems (SFS)


SFS는 분산 신뢰 체인과 평등 주의적(공정한)으로 공유된 글러벌 네임스페이스의 강력한 구현을 제안했습니다. SFS는 다음 체계를 사용하여 원격 파일 시스템을 처리합니다.

/sfs/<Location>:<HostID>

Location은 서버 네트워크 주소 입니다. 그리고 HostID는 해쉬 값으로 구성되어 있습니다. 

HostID = hash(public_key || Location)

따라서 SFS 파일 시스템의 이름은 해당 서버를 인증하게 됩니다. 사용자는 서버가 제공하는 공개키를 확인할 수 있고 모든 트래픽을 보호합니다. 그리고 모든 SFS 인스턴스는  name allocation 이 암호화되어 있으며 모든 중앙화된 본문에서 gate가 아닌 전역 이름 공간을 공유하게 됩니다.


IPFS는 DHT, BitTorrent, Git 및 SFS를 포함한, 이전의 P2P 시스템의 성공적인 아이디어를 종합하는 분산 파일 시스템입니다. IPFS는 검증된 기법을 단순화하고 진화하며 해당 부분을 합친 단일 응집 시스템으로 연결하는 것입니다. IPFS는 응용 프로그램 작성 및 배포를 위한 새로운 플랫폼과 대규모 데이터의 배포 및 버전 관리를 위한 새로운 시스템을 제공합니다. IPFS는 웹 자체를 진화시킬 수도 있습니다. IPFS는 peer-to-peer입니다. 어떤 노드도 권한이 없습니다. IPFS 노드는 로컬 저장소에 IPFS 개체를 저장합니다. 노드는 서로 연결되어 객체를 전송합니다. 이러한 개체는 파일 및 기타 데이터 구조를 나타냅니다.

스탠포드 대학 - IPFS 강연


IPFS Demo 영상


1.2 Swarm(Decentralized Storage)



Swarm은 분산 스토리지 플랫폼 및 컨텐츠 배포 서비스로 이더리움 web3 stack으로 basic layer 서비스 입니다. Swarm은 P2P 스토리지를 사용하는 내장 인센티브 시스템으로 인해 DDOS 공격 방지 및 제로 다운 타임, 검열에 대한 저항성과 자립성을 가지고 있습니다. 주로 이더리움의 공공 기록을 분산시키는데 있습니다. 특히 Dapp 코드와 데이터는 물론 블록 체인 데이터를 저장하고 배포하는 것이 중요합니다. 경제적 관점에서 볼 때, 참가자들은 모든 참여자에게 앞서 언급 한 서비스를 제공하기 위해 스토리지 및 대역폭 리소스를 효율적으로 풀링 할 수 있습니다.

최종 사용자의 관점에서, Swarm은 업로드가 특정 서버가 아닌 것을 제외하면 WWW와 다르지 않습니다. 목표는 피어 투 피어 (peer to peer) 계정을 사용하는 내장 된 인센티브 시스템으로 인해 DDOS 방지, 제로 다운 타임, 내결함성 및 검열에 대한 저항성과 자립성을 갖춘 피어 투 피어 저장소 및 서비스 솔루션입니다. 지불을위한 거래 자원을 허용합니다. Swarm은 Ethereum의 dev p2p 다중 프로토콜 네트워크 계층 및 도메인 이름 확인, 서비스 지불 및 콘텐츠 가용성 보험을위한 Ethereum 블록 체인과 깊이 통합되도록 설계되었습니다.

* distributed storage, inclusivity, long tail of power law
* flexible expansion of space without hardware investment decisions, unlimited growth
* zero downtime
* immutable, unforgeable, verifiable yet plausibly deniable storage
* no single point of failure, fault and attack resilience
* censorship resistance, universally accessible permanent public record
* sustainability due to a incentive system
* efficient market driven pricing. tradeable trade off of memory, persistent storage, bandwidth
* efficient use of the blockchain by the swarm accounting protocol

아직 Swarm은 초기 단계라 사용화까지는 조금 기다려야할 것 입니다. Swarm 에대한 Orange paper 에 대해 궁금하신 분들 께서는 링크1, 링크2 에서 받아보실 수 있습니다. 내용적으로 조금 어려운 감이 있어 해당 부분은 추후 업로드 하겠습니다. 


Swarm devcon three 영상


Swarm Demo 영상



참고자료:

Leave a Comment

    2 Comments

  1. (2)편에서 본격적으로 각 Sia, Storj, Filecoin, Maidsafe, STOKIT 에 대한 비교 분석글이 서술됩니다.

  2. 다음 편은 https://coinforu.io/coin/board/read/8361/ 에서 확인하실 수 있습니다.
    Sia 코인 분석 글입니다.