IPFS 분산 저장소 InterPlanetary File System
![](https://mcloud.biweus.com/data/file/paas/b0723d9b0d7922f1b9186363dd0be7b2_5xNFE6dL_f132a1b17df49f532ec4b1954d16b89e998d8543.jpg)
분산형 파일 시스템에 데이터를 저장하고 인터넷으로 공유하기 위한 프로토콜
냅스터, 토렌트 등 P2P 방식으로대용량 파일과 데이터를 공유하기 위해 사용
Http 방식 IPFS 방식
. 데이터가 위치한 곳의 주소를 . 데이터의 내용을 변환한 해시값을 이용하여
찾아가서원하는 콘텐츠를 전세계 여러 컴퓨터에 분산 저장되어 있는 콘텐츠를
한꺼번에 가져오는 방식 찾아서 데이터를 조각조각으로 잘게 나눠서 빠른 속도로
가져온 후 하나로 합쳐서 보여주는방식으로 작동
해시테이블은 정보를 키와 값의 쌍(key/value pairs)으로 저장하는데,
전 세계 수 많은 분산화된 노드들이
해당정보를 저장하기 때문에 사용자는 IPFS를 사용함
으로써 기존 HTTP 방식에 비해 뤌씬 빠른 속도로 데이터를 저장하고 가져옴
개요
IPFS는 파일과 아이디(ID)로 처리되는 하이퍼 미디어 프로토콜로서, 동일한 파일 시스템으로 모든 컴퓨터 장치를 연결하려고 만든 분산 파일 시스템이다. IPFS는 파일코인(file coin)의 초기 모델이기도 하다.
특징
IPFS는 다음과 같은 특징을 가지고 있다.
HTTP는 효율적이지 않고 비용이 많이 든다. IPFS는 파일 조각을 동시에 여러 컴퓨터 노드로부터 가져오는 구조이다. 기존 대역폭 비용을 60% 이상 절감할 수 있다.
인류 역사의 데이터들은 지금 이 순간에도 소멸하고 있다. IPFS는 데이터 미러링을 위한 백업과 버전 관리 시스템인 깃(git)이 제공된다.
웹의 중앙화를 제한한다. IPFS는 개방적이고 중앙집중화되어 있지 않다.
IPFS는 지속적인 가용성을 토대로 탄력적인 네트워크 생성을 가능하게 하는데, 이는 인터넷 백본 연결 여부와 상관없다.
구조
분산 해시 테이블[편집]분산 해시 테이블(DHT; Distributed Hash Table)은 P2P 시스템에 대해 메타데이터를 유지관리할 수 있다.
카뎀리아[편집]카뎀리아(Kademlia)는 분산 P2P 컴퓨터 네트워크를 위한 분산 해시 테이블이다.[3] 카뎀리아는 디앱과 같은 분산형 애플리케이션에서 사용성이 뛰어나고, 대규모 네트워크를 통한 효율적 조회, 오버헤드 조정이 낮은 특성을 가진다. 카뎀리아는 알고리즘으로 데이터 구조를 사용하는 분산형 해시 테이블 저장소 컨테이너와 추상화된 자바스크립트에서 네트워크를 통하지 않고 구현할 수 있다.[4]
코럴 CDN[편집]코럴 CDN(Coral Content Distribution Network)은 P2P 방식의 무료 콘텐츠 전송 네트워크(CDN)이다. 코럴 CDN은 2004년 마이클 프리드먼(Michael Freedman)에 의해 만들어졌다. 월드와이드웹(Worldwide Web) 내용(contents)을 미러(mirror)하기위한 네임 서버들(name servers)과 웹 프록시(web proxies)를 위한 대역폭(bandwidth)에 사용된다. 웹서버 상에서 로드(load)를 줄이기 위해 종종 슬래시닷 효과(/.slashdot effect)를 피하기도한다. 이러한 기능으로부터 DSHT는 기존 카뎀리아에서 다음과 같은 3가지로 확장했다.
카뎀리아는 ID가 가장 가까운(using XOR-distance) 노드에 해당 키를 저장하지만, 이 부분은 애플리케이션 데이터의 지역성이 고려되지 않는다. 이미 저장된 데이터가 있는 먼 노드 근방에 위치한 또 다른 노드에 또 저장하는 불필요함을 수행하기도 한다. 하지만 Coral은 데이터 블록을 제공할 수 있는 피어에 주소 값을 저장한다.
코랄은 특정 키값에 해당하는 값을 가져오는 DHT API를 편리하게 한다. Coral 사용자는 오직 싱글 피어(single-peer)이기 때문에 API 결과값으로 반환되는 값을 살펴보면, Coral은 오직 가장 근방의 노드 값들의 서브셋(subset)들을 배포한다.
코랄은 지역 및 규모에 따라 클러스터라고 하는 별도의 DSHT 계층 구조를 구성할 수 있다. 이를 통해 노드는 먼저 자신의 지역에서 피어를 찾을 수 있다. 즉, 거리가 먼 노드를 찾으려 하지 않고 가까운 데이터를 찾아 "조회하는데 걸리는 시간"을 크게 줄 일 수 있게 한다.
S/Kademlia DHT[편집]S/Kademlia는 다음과 같은 두 가지 방법의 악의적 공격을 방어한다.
Node id 생성을 보호하고 시빌(Sybill) 공격을 방어하기 위한 스키마를 제공한다. 노드가 PKI 키 쌍을 만들고, 자신의 메시지에 서명하도록 요구하게 한다. 또 다른 스키마로는 시빌 공격 시 POW 작업에 소비되는 비용을 줄이기도 한다.
노드는 분리 된 경로를 통해서 충직한 노드가 네트워크의 많은 적들이 존재할 때 서로 연결할 수 있도록 한다. 여기서 S/Kademlia 는 노드의 절반 이상, 대다수 비율로도 약 85% 성공률을 보여주고 있다.
버전관리 시스템[편집]버전관리 시스템(Version Control System)은 타임스템프의 시간 경과에 따른 파일들을 모니터링하고 여러 버전을 효율적으로 전달할 수 있는 기능을 제공한다. 잘 알려진 버전 관리 시스템인 Git 은 분산된 방식으로 파일 시스템 트리에 대한 변경 사항을 캡처하는 강력한 Merkle DAG 모델을 제공한다.[5]
불변한 객체는 파일(blob), 디렉토리(tree) 및 변경(commit)을 나타낸다.
객체는 내용의 암호화 해시에 의해 내용이 처리된다.
다른 객체에 대한 링크가 내장되어 Merkle DAG를 형성하는데 유효한 무결성 및 처리의 속성을 가진다.
버전 관리 메타 데이터(분기, 태그 등) 대부분은 참조일 뿐이므로 데이터 생성 및 업데이트 비용이 저렴하다.
버전 변경은 참조를 추가하거나 업데이트하면 된다.
다른 사용자에게 버전 변경 사항을 전달하는 것은, 객체를 전송하고 원격 참조를 업데이트하는 단순 작업이다.
자가인증 파일 시스템[편집]자가인증 파일 시스템(SFS: Self-Certified File systems)은 분산화 저장의 신뢰 체인과 평등과 공정성으로 공유된 글로벌 네임스페이스의 구현을 제안했다. 자가인증 파일 시스템은 다음 체계를 사용하여 원격 파일 시스템을 처리한다.
/sfs/<Location>:<HostID>(Location: 서버 네트워크 주소, HostID: Hash 값) HostID = hash(public_key Location)따라서 자가인증 파일 시스템의 이름은 해당 서버를 인증하게 된다. 사용자는 모든 트래픽을 보호하고 서버가 제공하는 공개키를 확인할 수 있다. 그리고 모든 자가인증 인스턴스는 name allocation 이 암호화되어 있다.
IPFS는 DHT, BitTorrent, Git 및 SFS를 포함하는, 이전 P2P 시스템의 성공적인 부분들을 포괄하는 분산저장 파일 시스템이다. IPFS는 검증된 기법을 단순화하고 진화하며 해당 부분을 합친 단일 시스템으로 연결하는 것이다. IPFS는 응용 프로그램 작성 및 배포를 위한 새로운 플랫폼과 대규모 데이터의 배포 및 버전 관리를 위한 새로운 시스템을 제공한다. IPFS는 웹 자체를 진화시킬 수도 있다. IPFS는 P2P 시스템으로, 시스템 내의 어떤 노드도 권한을 가지지 않는다. IPFS 노드는 로컬 저장소에 IPFS 개체를 저장하고 노드는 서로 연결되어 객체를 전송한다.[6]
각주[편집]이동↑ IPFS 백서 - Juan Benet, "IPFS - Content Addressed, Versioned, P2P File System (DRAFT 3)"
이동↑ Energist, 〈IPFS(Inter Planetary File System)〉, 《네이버 블로그》, 2018-02-20
이동↑ 〈카뎀리아〉, 《위키백과》
이동↑ stanfordonline, "Stanford Seminar - IPFS and the Permanent Web", Youtube, 2015-10-22
이동↑ IPFS 공식 홈페이지 - https://ipfs.io/
이동↑ ICO관리자, 〈(IPFS VS SWARM) 블록체인 스토리지 분석 (1) - IPFS VS SWARM〉, 《COINFORU》, 2018-05-30
참고자료[편집]
IPFS 공식 홈페이지 - https://ipfs.io/
IPFS 백서 - Juan Benet, "IPFS - Content Addressed, Versioned, P2P File System (DRAFT 3)"