[미디어앤톡]초급자들을 위한 IPFS 가이드
학습 차원에서 틈틈히 해외 블록체인 전문가들이 블로그나 미디어 그리고 책에서 쓴 글을 정리하고 있습니다. 이번 포스팅도 그중 하나고요. 거칠고 오역된 부분이 있을 수 있습니다. 제대로 번역되지 않은 부분은 확인주시면 반영토록 하겠습니다. 이번글은 Addaquay가 초급자들을 겨냥해 해커눈에 쓴 IPFS 소개 가이드를 번역한 것입니다. 원문은 지난 3월 작성됐습니다.
이전 글에서 우리는 공유 경제와, 그것을 형성하는데 핵심이될 흥미로운 혁신의 미래에 대해 논의했다. 언급된 기술들 중 핵심은 IPFS(Interplanetary File System)였다.
IPFS는 P2P 파일 공유 시스템으로 정보가 전세계적으로 배포되는 방식을 근본적으로 바꾸는 것을 목표로 하고 있다. IPFS는 커뮤니티케이션 프로토콜과 분산화 시스템에 걸쳐 몇몇 혁신으로 구성된다. 이를 통해 기존에 없는 파일 시스템을 구현할 수 있다..
IPFS가 무엇을 이루려 하는지 넓고 깊게 이해하려면 그것을 가능케 하는 기술적인 돌파구를 아는 것이 중요하다.
커뮤니케이션 프로토콜과 분산된 시스템
두 사람이 정보를 교환하려면 그들은 언제 어떻게 정보가 전달되는지 정의하는 일반적인 룰세트들이 필요하다. 이같은 룰들은 통상 커뮤니케이션 프로토콜로 알려져 있다. 현지어를 모르는 외국에 가본 적이 있다면 아마 커뮤니케이션 프로토콜들의 실패와 결핍을 경험할 것이다. 1980년대 초반 컴퓨팅을 위한 첫 커뮤니케이션 프로토콜이 개발될때까지 서로 커뮤니케이션할 수 없고, 고립된 기기로 존재했던 컴퓨터와 같은 케이스다.
프로토콜은 프로그래밍 언어가 무엇을 계산하는지 커뮤니케이션하는 것이다. 컴퓨터에서 커뮤니케이션 프로코톨은 통상 몇몇 레이어들로 존재한다. 예를 들어, 인터넷 프로토콜 스위트는 4개 레이어로 구성된다. 각각은 특별한 기능을 담당한다. 커뮤니케이션 프로토콜 외에 이해해야 하는 중요한 관계는 컴퓨터들 사이에서 내부 연결에 대한 기본 구조다. 이것은 시스템 아키텍처로 알려져 있다. 몇개 시스템 아키텍처가 있는데, 우리와 관련 있는 두개 유형은 클라이언트 서버와 P2P 네트워크다.
인터넷은 클라이언트 서버 관계에 의해 지배되고 있다. 이것은 인터넷 프로토콜 스위트에 의존한다. 이들 중 HTTP(Hypertext Transfer Protocol)는 커뮤니케이션의 기본이다. 데이터는 중앙화된 서버에 저장되고, 위치 기반 주소에 의해 접근될 수 있다. 이것은 데이터를 배포하고 관리하고, 안전하게 하는 것을 쉽게 가능케 한다.
서버와 클라이언트 용량을 확대하기도 쉽다. 그러나 보안, 프라이버시, 효율성고 관련해 약점들도 많다. 서버의 통제는, 데이터의 통제로 바꿔말할 수 있다. 이것은 서버를 통제하는 어떤 이해관계자가 당신의 데이터에 접근해 그것을 변경하고 제거할 수 있다는 것을 의미한다. 이같을 행위를 하는 것은 서버상에서 합법적인 권위를 가진 주체일 수도 있고 악의적인 해커일 수도 있다.
위치 기반 주소에서 데이터는 콘텐츠가 아니라 그것이 어디에 있는지에 의해, 확인된다. 이같은 제약은 데이터 조각에 접근하려면 특정 주소에 항상 가야 한다는 것을 의미한다. 같은 데이터를 가까운 곳 어딘가에서 이용할 수 있음에도 말이다. 데이터가 변경되면, 말하 수 있는 방법은 없다. 클라이언트는 단지 그것이 무엇인지가 아니라 어디에 있는지만 필요로 하기 때문이다.
그럼에도 클라이언트 서버 모델과 HTTP는 인터넷을 매우 신뢰할 수 있는 대상으로 만들었다. HTTP웹은 텍스트나 이미지 같은 작은 파일을 옮기는데는 매우 효과적이다. 웹이 나오고 20년 동안 평균적인 웹페이지 크기는 2킬로바이트에서 2메가바이트로 증가했다.
HTTP는 웹사이트에 로딩하는데는 대단히 좋다. 그러나 HTTP는 오디오나 비디오 파일 처럼 대용량 데이터 전송을 위해 디자인되지는 않았다. 이같은 제약은 냅스터, 비트토렌트 같은 대안 파일 공유 시스템이 등장하고 주류로 성공하는 계기가 됐다.
2018년을 보자. 온디맨드 HD 비디오 스트리밍과 빅데이터가 일반화됐다. 우리는 계속 점점더 많은 데이터를 생산하고 소비하고 있다. 그것을 처리할 수 있는 보다 강력한 커퓨터를 개발하면서 말이다. 클라우드 컴퓨팅에서 중요한 진전은 이같은 변환을 현실화시키는데 기여했다. 그러나 이 모든 데이터를 배포하기 위한 근본적인 인프라는 대부분 변하지 않고 그대로 남아 있다.
인터플래네터리 파일 시스템
IPFS는 클라이어 서버 모델과 HTTP웹의 단점을 P2P 파일 시스템을 통해 해결하려고 시도하고 있다. IPFS 몇몇 새로운 혁신과 기존 기술이 합쳐져 있다. IPFS는 오픈소스 프로젝트로 네트워크 프로토콜을 주특기로 하는 R&D랩은 프로토콜랩스에 의해 개발됐다. 프로토콜랩스 와이컴비네이터 출신 스타트업으로 IPLD나 파일코인 같은 보완 시스템들도 개발했다. 이와 관련해서는 밑에서 다시 설명할 것이다.
전세계에 있는 수백명의 개발자가 IPFS 개발에 기여했다. 이를 지휘하는 것은 대단한 일이었다. IPFS를 구성하는 주요 요소들은 다음과 같다.
분산화된 해시 테이블
해시 테이블은 정보를 키와 값 쌍(key/value pairs)으로 저장하는 데이터 구조다. 분산화된 해시 테이블에서 데이터는 컴퓨터 네트워크를 걸쳐 확산된다. 노드들 사이에서 효과적인 접속과 잠금이 가능하도록 효과적으로 조율된다.
분산화된 해시 테이블의 주요 이점들은 탈중앙화, 장애 내성, 확장성이다. 노드들은 중앙화된 조율을 필요로 하지 않는다. 시스템은 노드들이 멈추거나 네트워크를 떠나게 되더라도 신뢰성 있게 기능한다. 분산화된 해시 테이블은 수백만 노드를 수용할 수 있을 정도로 확산될 수 있다.이들 기능을 기반으로 클라이언트 서버 구조보다 회복 탄력성이 있는 시스템을 구현하는 것이 가능해진다.
블록 익스체인지.
유명 파일 공유 시스템인 비트토렌트는 혁신적인 데이터 교환 프로토콜을 통해 수백만 노드들 사이에서 데이터 전송을 성공적으로 조율할 수 있다. 그러나 이것은 토렌트 에코시스템으로 한정된다. IPFS는비트스왑이라 불리는 비트토렌트의 일반화된 버전을 수행하고 모든 데이터 타입을 위한 마켓플레이스로서 운영된다. 이 마켓플레이스는 IPFS 기반 P2P 스토리지 마켓플레이스인 파일코인의 기본이다.
머클 DAG
머클 DAG는 머클트리와 DAG(Directed Acyclic Graph)의 조합이다. 머틀트리는 P2P 네트워크에 교환되는 데이터 블록이 손상 및 변경되지 않도록 보증한다. 검증은 암호학적인 해시 함수를 사용해 데이터 블록을 조직화함으로써 이뤄진다. 이것은 간단히 말해 입력한 뒤 고유한 알파벳과 문자를 조합한 일련의 해시를 계산하는 기능이다. 입력이 주어진 해시를 발생시키는 지 확인하기는 쉽지만 해시의 입력을 추측하기는 매우 어렵다.
개별적인 데이터 블록들은 리프 노드로 불리운다. 이것은 비(Non) 리프 노드 형태가 되도록 해싱된다.
이들 비리프 노드들은 모든 데이터 블록들이 하나의 루트 해시로 보여질때까지 합쳐지고 해시될 수 있다. 이를 개념화하기 위한 쉬운 방법이 있다.
DAG는 위상적인(topological) 정보를 모델링하는 방법이다. 사이클이 없다. DAG의 대표적인 사례가 족보다. 머클 DAG는 기본적으로 해시가 데이터 블록과 DAG에 있는 오브젝트를 참고하는데 사용되는 데이터 구조다. 이를 통해 몇몇 유용한 기능을 만들 수 있다. IPFS에서 모든 콘텐츠는 고유하게 확인될 수 있다. 각각의 데이터 블록은 고유한 해시를 갖고 있기 때문이다. 이에 더해 데이터는 손을 타기 어렵다. 아래 그림처럼 데이터를 변경하려면 해시를 바꿔야 한다. IPFS의 중앙 테스트넷은 머클 DAG에서 생성되는 모든 데이터를 모델링한다. 이같은 보안기능의 중요성은 클라이언트 서버 시스템과 비교해 부풀리기 어렵다.
버전 컨트롤 시스템
머클 DAG가 제공하는 또 다른 강력한 기능 중 하나는 분산화된 버전 컨트롤 시스템(VCS)를 개발할 수 있도록 해준다는 점이다. 가장 일반적인 사례가 개발자들이 쉽게 프로젝트에 동시에 협업할 수 있게 해주는 깃허브다.
깃허브에 있는 파일들은 머클 DAG를 사용해 저장되고 버전이 만들어진다. 이것은 사용자들이 독립적으로 복제하고 복수의 파일 버전을 편집할 수 있게 한다. 이후 이들 버전을 오리지널 파일과 합쳐서 편집할 수 있다.
IPFS는 데이터 프로젝트를 위해 유사한 모델을 사용한다. 관련 오브젝트가 오리지널 데이터와 관련이 있는한 어떤 새 버전에도 접근이 가능하다. 전체 파일 히스토리는 회수될 수 있다. 데이터 블록들이 네트워크들에 걸쳐 로컬에 저장되고 무제한으로 캐시될 수 있음을 감안하면 IPFS는 오브젝트가 영원히 저장될 수 있다는 것을 의미한다.
이와 관련해 IPFS는 인터넷 프로토콜에 접근하는 것에 의존하지 않는다. 데이터는 또 다른 네트워크에서 개발된 오버레이 네트워크에서 배포된다. 이같은 기능들은 주목할만 하다. 검열 저항 웹에서 이것들은 핵심적인 요소들이기 때문이다. 인터넷 검열 확산에 맞서기 위해 표현의 자유를 증진하는데 유용한 툴이 될 수 있다. 그러나 우리는 나쁜 의도로 악용될 가능성이 있다는 것도 알고 있다.
자가 증명 파일 시스템(Self-certifying File System)
IPFS의 마지막 핵심 구성요소는 자가 증명 파일 시스템(Self-certifying File System: SFS)이다. 이것은 분산 파일 시스템으로 데이터 보관을 위해 특별한 승인은 필요로 하지 않는다. 이것은 클라이언트에 제공되는 데이터가 파일명에 의해 인증되기 때문에 자가 증명 기반이다.
파일명은 서버에 의해 서명된 것이다. 결과는? 당신은 로컬 스토리지의 투명성과 함께 안전하게 원격지에 있는 콘텐츠에 접근할 수 있다. 이 개념으로 개발된 IPFS는 SFS의 일종인 IPNS( InterPlanetary Name Space)를 만들 수 있게 한다. 이것은 네트워크 사용자들에 의해 공개되는 오브젝트를 자가 증명하기 위해 퍼블릭 키 암호를 사용하는 SFS의 일종이다.
앞서 IPFS에 있는 모든 오브젝트들은 고유하게 확인될 수 있다고 설명했다. 이것들은 또 노드들로까지 확장할 수 있다. 네트워크에서 각각의 노드는 퍼블릭 키, 프라이빗키, 퍼블릭키의 해시인 노드 ID 세트틀 갖고 있다. 노드들은 자신들의 프라이빗키를 자신들이 퍼블리싱하는 어떤 데이터 오브젝트를 서명하기 위해 사용할 수 있다. 데이터 인증은 송신자의 퍼블릭키를 사용해 검증될 수 있다. 핵심적인 IPFS 구성요소들을 다시 정리하면 다음과 같다.
-분산화된 해시 테이블로 노드들은 중앙 조율없이 데이터를 저장하고 공유할 수 있다.
-IPNS는 교환되는 데이터들이 퍼블릭 키 암호기술을 사용해 항상 사전 인증되고 검증되게 한다.
-머클 DAG는 고유하게 확인되고 조작할 수 없게 하며, 영원이 저장되는 데이터를 가능케 한다.
-버전 컨트롤 시스템을 통해 편집된 데이터의 과거 버전에 접근할 수 있다.
그래서 이 모든게 왜 중요한가?
IPFS는 높은 스루풋, 낮은 레이턴시의 데이터 배포를 지원한다. 탈중앙회되고, 안전하다. 이것은 몇몇 흥미로운 활용 사례를 구현할 수 있게 해준다. 콘텐츠를 웹사이트에 전송하는데 사용할 수 있다. 전세계적으로 자동화된 버저닝과 백업을 지원하면서 파일을 저장할 수 있다. 이를 기반으로 안전한 파일 공유와 암호화된 커뮤니케이션을 촉진시킬 수 있다.
IPFS 기반으로 개발되는 몇몇 흥미로운 프로젝트가 있다.
-아카샤, 차세대 소셜 네트워크
-밸런스3, 3중 기입 회계 플랫폼
-블록프레이트, 글로벌 화물을 위한 오픈 네트워크
-디직스, 실제 금을 토큰화하는 플랫폼
-인푸라, 디앱을 위한 인프라 제공 업체
-라이브피어, 탈중앙화된 비디오 스트리밍 플랫폼
-오리진, 공유 경제를 위한 P2P 마켓플레이스
-유포트, 셀프 소버린 ID 시스템
이들 다양한 애플리케이션은 IPFS가 가진 다양한 역량을 보여준다. IPFS는 퍼블릭 블록체인과 다른 P2P 애플리케이션들을 위한 보완적인 파일 시스템으로도 사용될 수 있다.
이글을 쓰는 시점(2018년 3월)에서, 킬로바이트 데이터를 이더리움 스마트 컨트랙트에 저장하려면 몇달러의 비용이 소요된다. 새로운 디앱들이 나오고 있는 상황에서 이것은 커다란 제약이다. IPFS는 스마트 컨트랙트 및 블록체인 데이터와 상호 운용성 있다. 믿을만하고, 저비용 스토리지 용량을 이더리움 생태계에 제공할 수 있다. 이더리움 블록체인 데이터를 자연스럽게, IPFS에서 접근할 수 있게 하는 시도들로는 IPLD(InterPlanetary Linked Data)로 알려진 별도 프로토콜이 있다.
도전과제들
인상적인 IPFS 성능에도 불구하고 몇몇 이슈가 아직 완전히 해결되지 않았다. 첫번째는 IPNS에 콘텐츠 주소 지정이 현재 사용자 친화적이지 않다. 당신의 IPNS 링크는 다음과 같이 보인다.
ipfs.io/ipns/QmeQe5FTgMs8PNspzTQ3LRz1iMhdq9K34TQnsCP2jqt8wV/
이들 링크는 도메인 네임 시스엠을 사용해 간단한 이름으로 축소될 수 있다. 콘텐츠는 오리지널 IPNS 주소를 통해 접근 가능하지만 콘텐츠 유통을 위한 외부 실패지점과 마주하게 한다. 일부 사용자들은 IPNS가 도메인 이름을 확인할 때 느려질 수 있다고 지적한다. 몇초 정도 지연이 발생한다고 한다. 정확한 원인은 확실치 않다.
IPFS에는 노드들이 장기적으로 데이터 백업을 관리할 있게 하는 인센티브가 없다. 노드들은 공간을 줄이기 위해 분명하게 캐시된 데이터를 선택할 수 있다. 이것은 이론상 파일들을 결국, 데이터를 호스팅하는 노드들이 남아 있지 않으면 시간이 지나면서 사라질 수 있다는 것을 의미한다. 현재 적용 수준에서, 이것은, 중요한 이슈가 아니다. 그러나 장기적으로, 대용량 데이터를 백업하는 것은 강력한 경제적인 인센티브를 요구할 것이다.
스토리지 마켓
파일코인은 별도 프로토콜로 IPFS에서 파일 스토리지에 인센티브를 추가할 수 있게 해준다. 이를 통해 아마존 S3같은 엔터프라이즈 클라우드 스토리지와 경쟁하는 분산 스토리지 시장을 육성한다. 고정된 가격체계를 갖친 중앙화된 인프라 대신에 IPFS+파일코인은 수요와 공급 기반으로 가격을 결정할 자유가있는 로컬 프로바이더들의 글로벌 네트워크에서 스토리지를 제공한다.
비트코인 같이 작업증명(PoW) 합의 알고리즘 대신 파일코인은 보안과 신뢰성을 보장하기 위해 스토리지 증명(Proof-of-Storage) 합의 메커니즘을 사용한다. 누구나 자신의 컴퓨팅 기기에서 사용되지 않는 하드드라이브 공간을 제공하면서 네트워크에 참여할 수 있다. 데이터 스토리지 및 복구 서비스에 대해 파일 코인 토큰을 보상으로 받을 수 있다.
파일코인은 이더리움 기반으로 개발중이다. 따라서 스마트 컨트랙트 통합은 스토리지 마켓플레이스에서 에스크로, 보험 같은 진화된 기능을 제공할 수 있다. 이론적으로 이같은 경제 모델은 대규모 업체보다 가격이 저렴한 매우 경쟁적인 자유 시장을 만들 수 있다. 그러나 파일코인은 아직 공개되지 않았다. 이같튼 개념이 현실에서 어떻게 적용될지 지켜보는 것은 흥미로운 일이다.
시작하자
IPFS는 대단히 야심적인 노력이다. 이 시스템이 어떻게 기능하는지 정확한 메커니즘은 이번 가이드에서 설명한 것보다 매우 복잡하다. 구체적인 내용은 암호학자나 컴퓨터 과학자들이 즐릴수 있도록 남겨둘 것이다.
IPFS를 사용하기 위해 전문가가 될 필요는 없다. 어떤 이점이나 사용 케이스가 유용하고 호소력있게 보인다면, IPFS를 내려받아 시작해보라.
쓰지 않는 기가바이트나 테라바이트 스토리지가 있고, 놀고 있는 용량을 잘 사용하고 싶다면, 네트워크가 런칭될때 초기 파일코인 마이너로 신청할 수 있다. 초기 스토리지 사용자에 관심이 있어도 신청할 수 있다.
IPFS를 사용하는 것은 꽤 주목할만하다. 그리고 그것을 가능케 하는 기술적인 능력을 이해하는 것은 매우 흥미로운 일이다. 성공한다면 IPFS와 그것과 상호 보완적인 프로토콜들은 차세대 웹을 위해 회복 탄력성이 있는 인프라를 제공할 것이다. 이를 기반으로는 웹은 분산되고 안전하고 투명할 것이다.
[관련글]A Beginner’s Guide to IPFS https://hackernoon.com/a-beginners-guide-to-ipfs-20673fedd3f