[ 一日30分 인생승리의 학습법] [블록체인 이론] IPFS 쉽게 이해하기

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

-      Git은 Merkle 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 예시

 

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

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

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

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

 

[그림 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 DAG는 IPFS에 다음과 같은 속성을 제공해줍니다.

 

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

 

 

이미지

 

[출처] https://potensj.tistory.com/41

 

 

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
1178 [ 一日30分 인생승리의 학습법] A Tutorial and Elementary Trajectory Model for the Differential Steering System of Robot Wheel Actuators : 로봇 휠 액츄에이터의 차동 조향 시스템에 대한 튜토리얼 및 기본 궤적 모델 file 졸리운_곰 2023.11.29 103
1177 [ 一日30分 인생승리의 학습법] Streamline Your MLOps Journey with CodeProject.AI Server : CodeProject.AI 서버로 MLOps 여정을 간소화하세요 file 졸리운_곰 2023.11.25 95
1176 [ 一日30分 인생승리의 학습법] Comparing Self-Hosted AI Servers: A Guide for Developers / : 자체 호스팅 AI 서버 비교: 개발자를 위한 가이드 file 졸리운_곰 2023.11.25 102
1175 [ 一日30分 인생승리의 학습법] Self-Hosted Artificial Intelligence: Keeping Control of Your Data : 자체 호스팅 인공 지능: 데이터 제어 유지 file 졸리운_곰 2023.11.25 94
1174 [ 一日30分 인생승리의 학습법] AI_머신러닝 기초 정리 file 졸리운_곰 2023.11.24 114
1173 [ 一日30分 인생승리의 학습법] 머신러닝 내용 요약 및 정리 졸리운_곰 2023.11.24 102
1172 [ 一日30分 인생승리의 학습법] 당신이 알아두어야 할 10가지 머신러닝 알고리즘 file 졸리운_곰 2023.11.24 100
1171 [ 一日30分 인생승리의 학습법] GN⁺: WASM by Example - 예제로 배우는 WASM (wasmbyexample.dev) 졸리운_곰 2023.11.17 93
1170 [ 一日30分 인생승리의 학습법] GHIDRA 소개 및 사용 file 졸리운_곰 2023.11.17 105
» [ 一日30分 인생승리의 학습법] [블록체인 이론] IPFS 쉽게 이해하기 file 졸리운_곰 2023.11.04 96
1168 [ 一日30分 인생승리의 학습법] 자바스크립트 - IPFS 접근 file 졸리운_곰 2023.11.04 133
1167 [ 一日30分 인생승리의 학습법] IPFS 사용하기 file 졸리운_곰 2023.11.04 93
1166 [ 一日30分 인생승리의 학습법] The Best 10 Open Source Projects for Developers to Contribute : 개발자가 기여할 수 있는 최고의 10개 오픈 소스 프로젝트 file 졸리운_곰 2023.10.29 3047
1165 [ 一日30分 인생승리의 학습법] WebAssembly 사용 현황 / 2023년 졸리운_곰 2023.10.27 105
1164 [ 一日30分 인생승리의 학습법] 웹 3(Web3) 란 무엇일까? : 분산 인터넷의 미래 file 졸리운_곰 2023.10.24 103
1163 [ 一日30分 인생승리의 학습법] keycloak 설치 및 사용 file 졸리운_곰 2023.10.12 128
1162 [ 一日30分 인생승리의 학습법] KEYCLOAK 서버 설치 및 계정 생성 file 졸리운_곰 2023.10.12 96
1161 [ 一日30分 인생승리의 학습법][Web3] React와 web3의 만남 - Web3-react로 NFT 민팅하기 (3) file 졸리운_곰 2023.10.05 102
1160 [ 一日30分 인생승리의 학습법][Web3] React와 web3의 만남 - Web3-react로 NFT 민팅하기 (2) file 졸리운_곰 2023.10.05 123
1159 [ 一日30分 인생승리의 학습법][Web3] React와 web3의 만남 - Web3-react로 NFT 민팅하기 (1) file 졸리운_곰 2023.10.05 92
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED