관리 메뉴

개발이야기

[블록체인 이론] IPFS 쉽게 이해하기 본문

블록체인 /블록체인 이론

[블록체인 이론] IPFS 쉽게 이해하기

안성주지몬 2018. 12. 11. 10:18

IPFS



블록체인의 블록의 크기는 1MB(비트코인 기준)에도 미치지 못합니다. 겨우 거래정보나 텍스트만 담을 수 있는 정도이죠. 이를 해결하기 위한 방법으로 사진, 동영상 파일을 IPFS에 뿌리고 그 파일 값을 해시화 한 해시값을 블록체인의 블록에 올리는 방법이 고안되며 IPFS가 인기를 끌고 있습니다. 또한 IPFS는 P2P 분산 파일 시스템으로 기존 중앙화된 서버를 이용하여 여러 문제점이 있었던 기존의 웹을 대체할 수 있을 것이라는 기대도 모으고 있습니다. 


이번 글은 IPFS가 어떤 기술로 구성되어 있고 어떻게 동작하는지에 대한 글입니다. 제가 IPFS를 공부하기 위해 IPFS가 어떻게 동작되는지 찾아보다가 정보가 많이 부족하다고 느끼고 이렇게 직접 글을 쓰게 되었습니다. 

이번 글은 IPFS - Content Addressed, Versioned, P2P File System (Draft 3) 글을 토대로 작성하였습니다. 


IPFS (InterPlanetary File System) 개념 


- 전 세계 컴퓨터의 파일 표준 및 시스템을 연결시키려는 분산형 P2P 파일 표준.


- 웹을 보다 빠르고 안전하고 개방적으로 만들 수 있는 P2P 분산 파일 시스템


- 근본적인 목표는 HTTP를 대체하는 것입니다. 



IPFS 구성 기술 설명 


1.     Distributed Hash Tables (DHT), 분산 해시 테이블

-      해시 테이블을 분산하여 관리하는 기술

-      부하가 집중되지 않고 분산됨

-      극단적으로 큰 규모의 노드들도 관리 가능

-      DHT를 사용함으로써 수십억개의 노드를 p2p상에서 검색범위로 할 수 있게 됨

-      DHT를 사용한 대표적인 시스템 : 비트토렌트


2.     BitTorrent

-      대용량 파일 전송

-      트래커 : 배포와 피어의 정보를 가지고 이들 간의 통신을 중계하는 서버.

트래커는 데이터 전송에 직접적인 관여는 하지 않으며 단지 연결을 중계함.

-      해시파일 : 비트토렌트 프로그램이 출력하는 파일. 이 파일을 상대방에게 보내면 지정된 파일을 유연하게 보낼 수 있다. N개의 데이터의 분할점 무결성값을 토대로 데이터의 존재여부를 인식한다. 보통 무결성 검사는 파일하나의 MD5, SHA 들을 올려서 검증하는데 토렌트는 N개 파트마다 따로 검증한다. 파일내부 데이터구조는 JSON같이 트리 형태로 되어있다.



3.     Version Control Systems – Git

-      GitMerkle DAG를 제공

l  Merkle Tree

: Merkle Trees allow us to map a large volume of data and easily identify where changes in the data occur.

           <Ex>

[그림 1] Merkle Tree 예시


-      블록체인에서 머클트리는 트랜잭션을 효율적으로 관리하기 위해서 사용됩니다.

머클트리는 이진트리로서 거래를 두 개씩 묶는 형식입니다.

<머클트리- 거래 적용 예시>


[그림 2] Merkle Tree 거래 적용 예시


트리 형식으로 표현하기 때문에 몇 개의 트랜잭션 데이터가 있든 하나의 루트로 표현이 가능합니다. 이를 머클루트라고 하고 이 머클루트는 블록의 헤더 정보에 담겨져 있습니다. 머클트리의 트랜잭션들은 해시값으로 되어있기 때문에 트랜잭션의 위변조를 쉽게 알 수 있습니다. 또한 트리로 되어 있기 때문에 특정 트래잭션을 빠른시간내에 찾을 수 있다는 장점이 있습니다.


l  Merkle DAG(Directed Acyclic Graph)

: similar but more general construction than a Merkel Tree.

Does not need to be balanced, and non-leaf nodes contain data.


<Merkle DAG 정의>

-      Hash : throughout this document, the word hash refers specifically to cryptographic hash functions, such as sha3.

-      Merkel-link : a link (graph edge) between two objects, which is (a) represented by the hash of the target object, and (b) embedded in the source object. merkle-links construct graphs (dags) whose links are content-addressed, and authenticated.

-      Merkledag : the merkledag is a directed acyclic graph whose links are merkle-links (hashes of the content). It is a hash tree, and (under a very loose definition) a merkle tree. Alternative names: the merkle-web, the merkle-forest, the merkle-chain.

4.     IPLD – InterPlanetary Linked Data

[그림 3] - IPLD


IPFS에서 두 노드 사이의 링크는 암호화 해시 형식으로 되어 있습니다. 이를 Merkle DAG로 구현을 하였습니다. Merkle DAGIPFS에 다음과 같은 속성을 제공해줍니다.


1)    콘텐츠 주소 지정 (Content Addressing) : 모든 콘텐츠는 링크를 포함하여 암호화 해시로 고유하게 식별됩니다.

2)    변조 방지(Tamper proof) : 모든 내용이 체크섬으로 확인됩니다. 데이터가 변조되거나 손상되면 해시가 변경되므로 IPFS가 이를 감지합니다.

3)    중복 X  (No duplication) : All objects that hold the exact same content are equal (i.e. their hash value is equal), and only stored once.

 

Conclusion

Just by giving away the merkle root to someone, you can handover huge volume of data to that person. Because, a merkle root essentially holds signature of all blocks underneath it.




참고자료

[1] https://ipfs.io/ipfs/QmR7GSQM93Cx5eAg6a6yRzNde1FQv7uL6X1o4k7zrJa3LX/ipfs.draft3.pdf

[2] https://docs.ipfs.io/

[3] https://flyingzumwalt.gitbooks.io/decentralized-web-primer/content/ipfs-dag/

[4] Merkle Tree : https://media.consensys.net/ever-wonder-how-merkle-trees-work-c2f8b7100ed3

[5] Merkle DAG : https://github.com/ipfs/specs/tree/master/merkledag

[6] Merkle DAG : https://discuss.ipfs.io/t/what-is-a-merkle-dag/386/3

[6] Github Merkle DAG : https://www.youtube.com/watch?v=ronoCeMzfJ4


이미지


Comments