정의
"InterPlanetary File System"의 약자로서, 분산형 파일 시스템에 데이터를 저장하고 인터넷으로 공유하기 위한 프로토콜
탄생 배경
콘텐츠를 제공하는 WEB 서버에 장애가 생기거나 네트워크 문제 등으로 인해 서비스를 할 수 없는 상태가 되면 해당 콘텐츠의 제공이 중단됩니다. 이를 보완하기 위해 다양한 장애 대책이 H/W, S/W 적으로 적용되어 서비스되고 있습니다. 하지만, 2017년 터키 정부의 위키피디아 접속 차단과 같이 정부 차원의 강제적 차단은 콘텐츠 제공자의 노력과 상관없는 콘텐츠 제공 중단이라는 결과를 맞이하게 됩니다. 이러한 상황의 근본적 이유는 콘텐츠가 한 곳에 집중화되어 있기 때문에 벌어지는 문제입니다. 이러한 근본적인 문제를 분산 저장 시스템으로 해결할 수 있다고 주장하며, IPFS기술이 탄생했습니다.
특징
- 콘텐츠 위치로 접근 용이: 콘텐츠 주소 지정을 사용하여 각 파일에 고유한 암호화된 해시 값을 할당합니다. 해당 해시 정보는 IPFS에서 실행되는 블록체인을 통해 저장됩니다. 네트워크가 액세스해야 할 때 이 체인에서 해당 해시 정보만 조회하면 됩니다.
- 자원을 절약하기 위한 분산 스토리지: IPFS 프로토콜의 각 노드는 클라이언트이자 서버입니다. 데이터를 다운로드할 때 사용자는 가장 가까운 노드에서 동시에 다운로드할 수 있으므로 중앙 서버에 대한 많은 방문으로 인한 네트워크 혼잡을 피할 수 있습니다.
- 안전한 데이터를 보장하기 위한 탈중앙화: IPFS 프로토콜은 데이터 저장을 "조각화"하고 탈중앙 화합니다. 따라서 DDoS 공격과 같이 많은 수의 액세스 요청이 발생하면 모든 액세스가 다른 노드 또는 공격자 자체로 분산됩니다. 이러한 분산을 통해 IPFS는 기존 중앙 집중식 서버의 충돌을 피할 수 있습니다.
- 이력 데이터의 영구 보존: 노드 중 하나가 특정 데이터를 본 한 그 안의 데이터가 저장됩니다. 이 데이터는 전체 네트워크에서 공유되고 사용되기 때문에 노드 중 하나의 데이터 삭제로 인한 액세스 불가능 문제를 피할 수 있습니다.
동작 방식
- IPFS에 사진을 추가할 때 이미지를 컴퓨터가 이해할 수 있는 Raw 데이터로 변환합니다.
- 콘텐츠 주소 지정 이 가능하게 하려면 이 이미지 데이터를 콘텐츠를 고유하게 식별하는 레이블로 변환할 수 있는 방법을 찾아야 하는데, 여기서 해시 함수가 작동합니다. 해시 함수는 데이터를 입력으로 사용하고 출력과 관련하여 고유한출력(Digest)을 제공합니다. 이 이미지에서 픽셀이라도 변경하면 출력이 달라집니다. 이것은 변조 방지 속성을 보여 주므로 IPFS를 자체 인증 파일 시스템으로 만듭니다. 따라서 이 이미지를 다른 사람에게 전송하면 받은 사진이 변조되었는지 여부를 확인할 수 있습니다. 또한 입력(이 경우 고양이 사진)이 무엇인지 알 수 없고 출력( Digest )만 볼 수 있습니다. 따라서 이것은 또한 상당한 양의 보안을 보장합니다.
- 이제 원시 이미지 데이터를 SHA256 해시 함수에 전달하고 고유한 다이제스트를 얻습니다. 이제 이 Digest를 CID(Content Identifier)로 변환해야 합니다.
- 이 CID는 IPFS가 이미지를 다시 가져오려고 할 때 검색하는 것입니다. 이를 위해 IPFS는 Multihash라는 것을 사용합니다. Multihash는 동일한 데이터에 대해 서로 다른 버전의 CID를 가질 수 있는 기술입니다.
- IPFS는 모든 청크를 관리하고 기본 CID에 연결하기 위해 IPLD(IPLD는 Merkle DAG 또는 방향성 비순환 그래프 사용)를 사용합니다.
장점
- 탈중앙화 : 파일은 해시로 참조되는 노드 네트워크에 저장됩니다. 파일을 호스트 하는 노드에 대한 인센티브는 Filecoin을 통해 이루어집니다.
- 확장성 : 파일을 호스팅 하는 노드가 많을수록 네트워크의 사용자가 더 빠르고 더 많이 사용할 수 있습니다.
- 검열 저항 : 콘텐츠가 IPFS에 업로드되면 전체 네트워크에 배포되기 때문에 중앙 기관에서 이를 제거할 수 없습니다. 한 노드에서만 제거해도 파일이 완전히 삭제되지는 않습니다. 다른 노드에서 사용할 수 있는 복사본이 여전히 있음을 의미합니다.
- 영구 저장소 : IPFS의 주요 포인트는 데이터 저장입니다. 원본 데이터에 해당하는 개체와 새 버전에 액세스 할 수 있는 한 전체 파일 기록을 검색할 수 있습니다. 데이터 블록이 네트워크를 통해 로컬로 저장되고 무기한 캐시 될 수 있다는 점을 감안할 때 IPFS 개체는 수정 없이 영구적으로 저장될 수 있습니다.
- 내결함성 : 노드 하나에 장애가 발생해도 파일을 호스팅 하는 노드가 있는 한 파일을 계속 사용할 수 있습니다. 단일 실패 지점은 없습니다.
단점
- 사용자 친화적이지 않음 : IPFS 네트워크에서 파일이 인덱싱 되는 방식은 사용자 친화적이지 않습니다. 예를 들어 해시 ID로 파일에 액세스 하려면 해시값을 입력해야 하는데, 개발자는 링크를 사용하여 파일을 공유할 수 있지만 사용자는 IPFS를 사용하려면 어떻게 작동하는지 알아야 합니다.
- 데이터 불일치 : IPFS 프로토콜에 따르면 IPFS 네트워크에 추가한 파일은 많은 사람이 액세스 하지 않으면 사라집니다. 데이터를 영구적으로 사용하려면 네트워크에서 더 많이 사용되어야 합니다.
마무리
개인 프로젝트를 진행하느라 포스팅이 늦어졌네요. 이번에는 NFT를 사용하기 위해 알아야 할 개념인 IPFS에 대해서 공부한 내용을 정리해봤습니다. 공부를 해보니 이제는 프로토콜조차도 블록체인을 적용해서 변화시키려고 많은 시도를 하고 있는 걸 알게 되었습니다. 데이터, 프로토콜, 파일 다음에는 어떤 것에 블록체인 기술을 적용하려고 시도할지 궁금해지네요. 아직 부족하거나 틀린 부분이 있을 수도 있으니 주의하시면 좋을 거 같습니다.
이번 포스팅은 마무리하면서 다음 포스팅에서 뵙겠습니다.
'CS 지식 > 네트워크' 카테고리의 다른 글
Server-Sent Events(SSE)란? (0) | 2022.03.11 |
---|---|
WebRTC 란? (0) | 2021.10.01 |
RTMP(Real-Time Messaging Protocol) 란? (0) | 2021.09.14 |