IPFS(InterPlanetary File System)이란?
IPFS는 P2P 파일 시스템으로 모든 컴퓨터를 연결하는 것을 넘어 행성을 연결하는 비전을 가진 차세대 파일 시스템입니다. IPFS는 기존 HTTPS Web 기반의 시스템 한계를 극복하기 위해 P2P 통신을 구현하고 빠른 속도와 안전한 네트워크를 실현하고 있습니다.
IPFS는 용량이 큰 파일들을 효율적으로 전달하는 BitSwap과 파일의 중복을 알아채고 효율적으로 저장소를 사용할 수 있는 Merkle DAG, contents-addressed)를 구현하고 있습니다. 만약 특정 노드들이 공격을 받거나 종료되더라도 안정적인 생태계 유지가 가능합니다.
IPFS에 기록된 파일들은 영원히 기록됩니다. 파일의 버전관리도 가능하고, 지키고 싶은 파일을 특정해서 지킬 수도 있습니다. (Pinning)
IPFS 사용처
NFT 마켓플레이스 중 가장 규모가 큰 Opensea에서는 NFT로 제작되는 파일들을 IPFS로 저장하고 있습니다. 또한 Filecoin을 사용해 분산 저장하고 있습니다.
Opensea에서 기존 데이터베이스를 사용하지 않고 IPFS나 Filecoin을 사용하는 이유는 특정 회사가 망하거나 사라지는 등 러그풀(Rug pull)이 발생할 때도 유연하게 대처할 수 있기 때문입니다. 탈중앙화된 데이터 저장소에 NFT 재료를 저장하고, 안전한 마켓플레이스를 운영할 수 있습니다.
IPFS 우분투 설치하기
1. 설치
1. 바이너리 파일을 다운 받습니다.
$ wget https://dist.ipfs.io/kubo/v0.14.0/kubo_v0.14.0_linux-amd64.tar.gz
2. 압출을 해제합니다.
$ tar -xvzf kubo_v0.14.0_linux-amd64.tar.gz
> x kubo/install.sh
> x kubo/ipfs
> x kubo/LICENSE
> x kubo/LICENSE-APACHE
> x kubo/LICENSE-MIT
> x kubo/README.md
3. kubo 디렉토리로 이동합니다. install.sh 파일을 실행합니다.
$ cd kubo
$ sudo bash install.sh
> Moved ./ipfs to /usr/local/bin
4. IPFS 버전을 확인합니다.
$ ipfs --version
> ipfs version 0.14.0
2. 실행
1. 먼저 저장소를 초기화 합니다.
- IPFS에서는 모든 설정을 저장소에 저장합니다. 따라서 IPFS를 사용하기 위해서는 ipfs init 명령어를 실행합니다.
$ ipfs init
generating ED25519 keypair...done
peer identity: 12D3KooWK4j5jDd6K495yyvtpG1m8H9uB7qCU4ExLYstfN4kkRM9
to get started, enter:
ipfs cat /ipfs/12D3KooWK4j5jDd6K495yyvtpG1m8H9uB7qCU4ExLYstfN4kkRM9/readme
2, IPFS에서 제안한 명령어를 실행합니다.
$ ipfs cat /ipfs/12D3KooWK4j5jDd6K495yyvtpG1m8H9uB7qCU4ExLYstfN4kkRM9/readme
3. 파일 등록
IPFS 네트워크에 파일을 등록합니다.
$ ipfs add planet.png
added QmUf6NzuD4tGUnW7NR77UecuJuUDUrUY7TJyLjeajwFazp plane.png
27.56 KiB / 27.56 KiB [===========================================================================================================] 100.00%
IPFS 네트워크에 접속하기 위해서는 엔드포인트가 있어야 합니다. IPFS에 접속하기 위한 엔드포인트는 데몬을 통해 얻을 수 있습니다.
$ ipfs daemon
Initializing daemon...
Kubo version: 0.14.0
Repo version: 12
System version: amd64/linux
Golang version: go1.18.3
2022/08/08 16:34:49 failed to sufficiently increase receive buffer size (was: 208 kiB, wanted: 2048 kiB, got: 416 kiB). See https://github.com/lucas-clemente/quic-go/wiki/UDP-Receive-Buffer-Size for details.
Swarm listening on /ip4/127.0.0.1/tcp/4001
Swarm listening on /ip4/127.0.0.1/udp/4001/quic
Swarm listening on /ip4/172.17.0.1/tcp/4001
Swarm listening on /ip4/172.17.0.1/udp/4001/quic
Swarm listening on /ip4/172.21.0.1/tcp/4001
Swarm listening on /ip4/172.21.0.1/udp/4001/quic
Swarm listening on /ip4/172.22.0.1/tcp/4001
Swarm listening on /ip4/172.22.0.1/udp/4001/quic
Swarm listening on /ip4/192.168.200.103/tcp/4001
Swarm listening on /ip4/192.168.200.103/udp/4001/quic
Swarm listening on /ip4/192.168.200.104/tcp/4001
Swarm listening on /ip4/192.168.200.104/udp/4001/quic
Swarm listening on /ip6/::1/tcp/4001
Swarm listening on /ip6/::1/udp/4001/quic
Swarm listening on /p2p-circuit
Swarm announcing /ip4/127.0.0.1/tcp/4001
Swarm announcing /ip4/127.0.0.1/udp/4001/quic
Swarm announcing /ip4/192.168.200.103/tcp/4001
Swarm announcing /ip4/192.168.200.103/udp/4001/quic
Swarm announcing /ip4/58.148.91.46/udp/4001/quic
Swarm announcing /ip6/::1/tcp/4001
Swarm announcing /ip6/::1/udp/4001/quic
API server listening on /ip4/127.0.0.1/tcp/5001
WebUI: http://127.0.0.1:5001/webui
Gateway (readonly) server listening on /ip4/127.0.0.1/tcp/8080
Daemon is ready
IPFS Web UI를 볼 수 있는 엔드포인트는 http://127.0.0.1:5001/webui 입니다.
해당 URL로 접속하면 PEER ID와 관련 정보들이 출력됩니다.
id를 조회하고 web에 표시되는 PEER ID를 비교해보면 같은 값을 출력하고 있습니다.
$ ipfs id
방금전 IPFS에 등록한 파일을 확인하기 위해서는 public gateway로 접속하면 확인가능합니다.
'Programming' 카테고리의 다른 글
IPFS Node.JS에서 사용하기(ipfs-http-client npm) (0) | 2022.08.09 |
---|---|
우분투 포트 죽이기 (열린 포트 확인하기) (0) | 2022.08.08 |
[Docker] Docker Compose 사용법 (도커 네트워크 구성) (0) | 2022.07.28 |
[Docker] OCI runtime exec failed: exec failed: unable to start container process: exec: "bash": executable file not found in $PATH: unknown 해결방법 (0) | 2022.07.28 |
[Docker] 도커(Docker) 이미지 만들기 2가지 방법 (0) | 2022.07.27 |
댓글