[케블리]#27. IPFS(InterPlanetary File System)이해하기 2부 / IPFS와 블록체인, 그리고 파일코인(Filecoin)

in kr •  8 months ago

#27. IPFS(InterPlanetary File System)이해하기 2부 / IPFS와 블록체인, 그리고 파일코인(Filecoin)

DQmbzMH2Y6H3o8JbrcDj3G41BjmoFE9J33mUsVTBp5ovVbe.png

지난 포스팅 #8. IPFS(InterPlanetary File System)이해하기 1부 / HTTP Web을 넘어서, IPFS Web으로에서는 IPFS가 탄생한 배경, IPFS의 특징, 그리고 IPFS가 어떤 기술들을 기반으로 하는지 알아보았습니다. 난해한 용어가 많이 등장하여 이해가 어려우셨을 것입니다. 이번 포스팅에서는 지난 내용을 간략히 복습한 뒤, IPFS와 블록체인이 어떤 연관성을 갖는지, 그리고 IPFS와 파일코인(Fiilecoin)은 어떤 관계인지 알아보겠습니다.


1 | IPFS의 탄생 배경과 특징(복습)


IPFS는 기존 HTTP 프로토콜의 문제점을 해결하고 보완한 새로운 프로토콜입니다.

HTTP 프로토콜 상에서 정보를 얻기 위해서는 해당 서버에게 직접 요청을 하고 서버가 보내 준 것을 받았습니다. 예를 들어, 페이스북에 접속하여 이현이를 클릭하면, 이현이의 담벼락을 볼 수 있습니다. 한번의 클릭이지만, 사실 내 컴퓨터가 페이스북 서버에 이현이의 담벼락 정보를 요청하였고, 서버가 해당 정보를 내 컴퓨터에 보내준 것입니다.

서버라고 표현했으나, 서버도 컴퓨터입니다. 24시간 동안 켜져있으면서 사용자의 요청을 받으면 저장되어 있는 정보를 보내주는 컴퓨터입니다. 페이스북과 같은 거대 기업들은 데이터센터(서버)에 엄청난 양의 데이터를 저장하고 있습니다. 만약 페이스북 데이터센터가 다운되거나 파괴되면, 우리는 페이스북 상의 모든 정보를 잃게 됩니다. 즉, HTTP 웹은 불안정(brittle)한 것입니다. 또한, 만약 서버와 연결되어 있는 라우터가 파괴된다면(overdependence on the internet backbone), 우리는 해당 정보를 얻을 수 없습니다.

또한 페이스북의 서버는 우리의 모든 정보를 독점적으로 보유하고 있습니다. 오늘날 정보는 굉장히 중요한 자산입니다. 또한 프라이버시는 자유의 핵심적인 요소입니다. 그러나 고도로 중앙화된(centralized) 서버 구조는 개인정보보호와 정보주권을 침해하고 있습니다. 페이스북이 지난 미국 대선 때 트럼프 진영에 개인 맞춤형 선거전략을 제공하고 대가를 받았다는 '데이터 스캔들’을 확인하면 더 크게 와닿을 것입니다.

또한 서버가 물리적으로 먼 거리에 위치할 경우, 정보를 요청하고 받아오는 과정이 매우 느리고(latency) 비효율적(inefficient)입니다. 서버가 외국에 있는 해외 사이트에 접속할 때 가끔 느려지는 경우가 많습니다. 서버를 찾아가는 과정, 그리고 서버가 정보를 보내서 도착하는 과정 자체가 오래 걸리는 것입니다. 또한 강남스타일 뮤직비디오 같이 전세계가 보는 영상컨텐츠를 전송하기 위해 엄청난 bandwidth가 소모되었을 것입니다.

Networks.png

IPFS는 우리가 누구나 조금씩 서버 역할을 하면, 다같이 더 빠르고 안전한 웹을 구현할 수 있다고 제안하는 프로토콜입니다.

만약 제가 강남스타일 영상을 보고 싶다면, 유튜브 서버에 단독으로 요청하는 것이 아니라, 주변 노드(주변 컴퓨터)에게 다음과 같이 물어봅니다: 강남스타일 뮤직비디오 갖고 있는 사람?

이와 더불어 중요한 IPFS의 특징은 contents-addressing입니다. 기존 HTTP 웹 상에서 우리는 ‘파일이 있는 것으로 알려진 주소(IP주소)’를 찾아가 정보를 요청했습니다. 그러나 해당 서버 주소에게 문의하였는데 , 해당 파일이 존재하지 않은 경우도 많았습니다. 404 Error(페이지가 존재하지 않음)이 대표적인 사례입니다.

비유하면, 친구를 만나러 친구 집에 갔는데 친구가 없는 경우입니다. 친구를 만나려면 그 친구가 어딨는지 물어보고 찾아가야지, 친구의 집에 가봤자 없을 수도 있다는 것입니다. IPFS 상에서는 ‘컨텐츠 자체’로 물어보고 그것을 저장하고 있는 노드를 찾아갑니다. 기존의 서버를 찾아가 파일이 있는지 물어보는 방식과, 파일이 있는 노드를 물어보고 찾아가는 것은 다릅니다.

만약 주변 노드가 파일을 갖고 있으면, 바로 요청한 노드에게 보내줄 수도 있고, 만약 없으면 해당 파일을 갖고 있는 다른 노드를 소개해줍니다. BitTorrent처럼 여러 노드가 해당 파일 나누어서 보내주면, 요청자는 파일을 더 빨리 받을 수 있게 됩니다.

bittorrent.JPG

여러 노드가 파일을 갖고 있을 수록, 해당 파일을 더 빠르게 받을 수 있습니다. 이 중에 몇몇 노드가 다운되거나 파괴되더라도, 여전히 다른 노드에게서 받을 수 있으므로 안전합니다.

또한 기존 HTTP 웹 상에서는 서버가 멀리 위치하면, 파일 받는 속도도 느려졌는데(전송 속도는 빛의 속도를 넘어설 수 없으므로), 주변 노드, 예를 들어 바로 옆집의 컴퓨터에 해당 파일이 저장되어 있으면, 바로 옆집 컴퓨터로부터 받아올 수 있습니다.

파일이라고 하였으나, 인터넷 상에서 모든 정보는 각각 파일 형태로 저장되어 있습니다. 따라서 파일 시스템이지만, 사실 정보공유 시스템이라고 바꾸어 표현할 수 있습니다. 그리고 그 공유방식이, 단일서버와 수많은 클라이언트의 관계가 아니라 이제는 모든 네트워크 참여자들의 P2P 방식으로 이루어지는 것입니다.

이상으로 개략적인 내용을 복습해보았습니다. 그렇다면 IPFS는 블록체인과 어떤 연관성이 있을까요?

2 | IPFS와 블록체인


IPFS는 탈중앙화 웹입니다. 하나의 서버가 다운되거나 파괴되더라도 우리는 파일을 잃지 않습니다. 블록체인을 통해 탈중앙화된 토큰 이코노미를 구상할 때, IPFS는 파일 저장 및 보관의 측면에서도 탈중앙화를 실현하는 수단이 됩니다.

IPFS를 통해 우리는 인터넷 상에 존재하는 모든 파일(또는 정보, 컨텐츠)을 블록체인 상에 올릴 수 있습니다.

그러나 이는 직접 해당 파일을 블록체인에 올린다는 것을 의미하지 않습니다. 만약 우리가 2GB 용량의 파일을 이더리움 블록체인에 올린다면, 엄청난 양의 GAS를 소모하게 될 것입니다.

이제 IPFS 네트워크에 해당 파일을 업로드(즉, Merkle DAG에 해당 파일을 추가)하면, 파일 고유의 해시값이 산출됩니다. IPFS 상에서 이 해시값은 해당 파일의 영구적인 이름입니다.

예를 들어, 강남스타일_뮤직비디오.avi를 추가하면 QmSfj93EJDBwc9VdvG9CcFZMXYcSRERSrHbP5aAhagP6xd(예시)과 같은 해시값이 산출됩니다. 파일명을 무엇으로 저장하든 강남스타일 뮤직비디오는 위 해시값을 갖게 됩니다. Contents-addressing가 의미하는 바가 바로 이것입니다.

제가 만약 강남스타일 뮤직비디오를 다운 받고 싶다면, 주변 노드들에게 다음과 같이 물어봅니다 : QmSfj93EJDBwc9VdvG9CcFZMXYcSRERSrHbP5aAhagP6xd 갖고 있는 사람?

결국 QmSfj93EJDBwc9VdvG9CcFZMXYcSRERSrHbP5aAhagP6xd 해시값은 해당 파일에 대한 영구적인 ‘링크’라고 생각하면 됩니다. 영구적인 링크이므로 변조의 위험이 없습니다.


IPFS를 이용하여 다음과 같은 간단한 시나리오를 구상해볼 수 있습니다.

시나리오 1 | 해당 파일(정보, 컨텐츠)에 대한 저작권을 등록하고 싶습니다. 내가 만들었음을 증명하기 위해 블록체인에 기록하고자 합니다. 앞서 말했듯이 해당 파일 자체를 블록체인에 기록할 수 없습니다. 대신 우리는 해당 파일의 해시값을 등록하면 됩니다.

시나리오 2 | 송금을 하면 어떤 파일을 지급하는 스마트컨트랙트를 만들었습니다. 파일 용량이 너무 커서 스마트컨트랙트 자체에 파일을 넣어 둘 수는 없습니다. IPFS 상에서 해당 파일을 암호화하여 키를 갖고 있는 사람만 열람할 수 있도록 합니다. 스마트컨트랙트에서는 해당 파일의 해시값과 복호화 키를 담아 놓습니다. 송금한 사람은 해시값과 복호화 키를 가지고 IPFS 상에서 파일을 수령할 수 있습니다.

“IPFS and the Blockchain are a perfect match! You can address large amounts of data with IPFS, and place the immutable, permanent IPFS links into a blockchain transaction. This timestamps and secures your content, without having to put the data on the chain itself.”

source : https://www.deepdotweb.com/2017/05/09/the-ipfs-and-the-blockchain/

3 | IPFS와 파일코인(Filecoin)


파일코인은 IPFS의 인센티브 레이어입니다. IPFS 웹이 원활하게 운영되기 위해서는 노드들이 파일을 저장하고, 해당 파일을 원하는 노드에게 파일을 제공해주어야 합니다. 그러나 모든 노드들이 파일을 받기만 하려 한다면, IPFS 웹은 실현될 수 없을 것입니다. 또한 여러 노드가 파일을 저장해야 더욱 안전하고, 다른 노드들이 쉽고 빠르게 공유받을 수 있습니다. 만약 어떤 바이럴 파일을 배포하고 싶을 때, 여러 노드들이 이 파일을 저장하기를 원할 것입니다. 그러나 다른 노드들이 저장하는 것을 우린 강요할 수 없습니다.

따라서 IPFS 개발진은, 파일코인이라는 토큰을 기반으로 시장을 형성하여, IPFS 웹 발전에 기여할수록 보상 받는 구조를 만들었습니다. 파일코인에는 두가지 시장이 존재합니다: 저장소 시장(Storage Market)과 검색 시장(Retrieval Market). 그리고 각 시장에는 저장소 마이너와 검색 마이너라고 불리는 일꾼들이 있습니다.

e750ff92dab2e66ea6968ca71d3ab589.png

저장소 시장에서 클라이언트는 저장소 마이너에게 토큰을 지불하고 파일을 저장할 수 있습니다. 검색 시장에서 클라이언트는 검색 마이너에게 토큰을 지불하고 파일을 전달받을 수 있습니다. 두 시장 모두, 클라이언트와 마이너는 자신의 주문을 설정하거나 가격을 제시할 수 있으며, 상대방의 제안을 승낙할 수 있습니다.

이전 포스팅#3. Filecoin (파일코인) - P2P 드랍박스 시대 도래할까?에서 소개한 Proof-of-Spacetime은 저장소 마이너가 일을 제대로 수행했음을 증명하는 것을 의미합니다. 즉, 어떤 파일이 일정 기간 동안 저장되고 있음을 증명하는 것입니다. 저장소 마이너는 지속적으로 증명을 생성해내고, 불시에 파일코인 블록체인이 증명을 요구할 경우(challenge), 증명을 제출해야합니다. 파일코인 블록체인 마이너는 해당 증명을 검증하고, 블록에 기록합니다.

파일코인 블록체인은 소모적인 Proof-of-Work를 유용한 작업으로 대체하기 위해, ‘네트워크 상에서 현재 사용되는 저장소의 양’이 ‘새로운 블록을 생성하는 마이너로 선정될 확률’에 비례하도록 설계하였습니다. 즉 Proof-of-Stake의 형식으로 이해할 수 있습니다. 그러나 PoS를 넘어, 파일코인 개발팀은 Expected Consensus(EC)라는 새로운 매커니즘을 고안중입니다. 기본적인 아이디어는, 매 블록 생성 주기(라운드)마다 하나(또는 그 이상의 ‘적은’ 인원)의 마이너를 선출하는 것인데, 이 때 마이너로 선출될 확률을 자신이 제공중인 저장소 양에 비례하도록 하는 것입니다. 이처럼 파일코인 팀은 컨센서스 과정을 굉장히 효율적인 동시에 IPFS 웹 발전과 같은 방향성을 갖도록 설계하고 있습니다. (파일코인 백서의 6.2.3 부분 참고)

또한 파일코인은 Bridge를 통해 다른 블록체인과 연결하고자 합니다. 개발이 진행중이지만, 이를 통해 다른 블록체인 기반 플랫폼에 Filecoin 저장소를 제공하고, 다른 플랫폼의 기능을 Filecoin에 가져오기 위해 체인 간의 상호작용을 지원하도록 계획 중입니다. (파일코인 백서의 7.2 부분 참고)


4 | 2부를 마치며


이번 포스팅에서는 IPFS와 블록체인, 그리고 파일코인(Filecoin)에 다루어보았습니다. 앞으로 IPFS와 이더리움 기반의 분산 저장 플랫폼 SWARM과 비교, IPFS 실습 등과 같은 주제들로 찾아뵙겠습니다. 혹시 IPFS와 Filecoin 관련 구체적인 내용이 궁금하시면 댓글 남겨주세요. 백서 기반으로 이해한 범위 내에서 답변드리겠습니다. 이번에는 IPFS와 Filecoin을 개발중인 Protocol Labs의 로고로 마칩니다. 감사합니다.

protocol_labs.jpg

DQmTqVeN6jdv17iejUpgYu4yWgoJvkCNdZGhWxpSQWqe42a.png

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

재미있고 쉽게 IPSF와 파일코인을 이해할 수 있었습니다. 좋은 글 감사합니다~

Congratulations @kblock! You have completed some achievement on Steemit and have been rewarded with new badge(s) :

Award for the total payout received

Click on any badge to view your own Board of Honor on SteemitBoard.

To support your work, I also upvoted your post!
For more information about SteemitBoard, click here

If you no longer want to receive notifications, reply to this comment with the word STOP

Upvote this notification to help all Steemit users. Learn why here!

Do not miss the last announcement from @steemitboard!

IPFS에 대한 자세한 설명 감사합니다

IPFS에 대해 예전부터 궁금해 했고 파일코인과 관계가 뭔지.. 어떤식으로 IPFS기술에 선제적으로 투자할 수 있을지 궁금해 했는데 이제 조금 정리가 되네요.

만약 웹의 프로토콜이 HTTP 에서 IPFS로 바뀐다고 예측한다면 파일코인 외에 어떤것에 투자하면 좋을까요?