IPFS (InterPlanetary File System)
IPFS
- 모든 컴퓨터를 연결하고자 하는 분산 P2P File System
특징
- 중앙화된 서버 없이 노드들의 P2P 통신으로 실현된 더 빠르고 안전한 열린 네트워크
- 몇몇 노드의 연결이 끊어지더라도 생태계가 안전하게 유지된다
- 고용량의 파일을 빠르고 효율적으로 전달할 수 있고 (Bitswap) 파일들의 중복을 알 수 있기 때문에, 저장소도 효율적으로 사용할 수 있다. (Merkle DAG, contents_addressed)
구성 기술
- DHT (Distributed Hash Tables)
- Routing 에 사용
- 부하가 집중되지 않고 분산되기 때문에, 극단적으로 큰 규모의 노드도 관리 가능하다.
- 와일드카드 등의 복잡한 검색이 불가능하다.
- 수십억개의 노드를 P2P 상에서 검색범위로 할 수 있다.
- content-addressed : 컨텐츠 자체가 주소 역할을 한다. (해시테이블 상에서 컨텐츠 이름을 찾으면 해당 컨텐츠를 보유하고 있는 노드를 알 수 있다.)
- Bit Swap Protocol
- File Exchange 에 사용 (BitTorrent)
- 하나의 파일을 여러 조각으로 나누어, 각 노드끼리 자신이 갖고 있는 조각의 정보를 알려주고 다른 노드들에게 자신이 필요한 조각을 요청함
- merkle DAG
- Version Control System 에 사용 (Git)
- Content addressing : 모든 컨텐츠는 그 자체가 링크이며, multihash checksum으로 무결성 확인이 가능
- Tamper resistance : 모든 컨텐츠는 자체적으로 checksum으로 무결성을 확인할 수 있고, 위변조시 merkle root의 해시값이 변경되기 때문에 IPFS 자체적으로 탐지 가능
- Deduplication : 같은 컨텐츠는 같은 해시값을 갖기 때문에, 컨텐츠가 중복되지 않는다.
- IPNS
- DNS와 비슷한 역할
IPFS와 블록체인
- IPFS를 통해 인터넷에 존재하는 모든 파일을 블록체인 상에 올릴 수 있다.
- IPFS에 해당 파일 업로드
- 해당 파일의 해시값이 산출 (IPFS 상에서 해당 파일의 영구적인 이름 - contents addressing)
- 해당 해시값을 블록체인에 저장 (SSI 기술을 사용하는 uport에서 해당 방식으로 이더리움 블록체인을 활용함)
IPFS와 Filecoin
- https://docs.filecoin.io/about-filecoin/ipfs-and-filecoin/
- IPFS 자체에서는 인센티브를 수여하는 빌트인 메커니즘이 존재하지 않기 때문에, Filecoin을 통해서 인센티브를 제공하고자 함
- Filecoin is built on IPFS to create a distributed storage marketplace for long-term storage. Nodes with a large storage capacity can rent their storage to users and get paid for it.
참고 문헌
IPFS docs
Filecoin docs