본문 바로가기
Programming

IPFS 우분투 20.04 LTS 설치 방법

by 개발자 염상진 2022. 8. 8.

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로 접속하면 확인가능합니다.

 

 

 

 

[Blockchain] 이더스캔 서비스 구축하기

이더스캔은 블록체인 네트워크의 Block, Transaction, Account 정보를 조회할 수 있습니다. web3를 사용하면 간단한 어플리케이션을 구축할 수 있습니다. 이더스캔 기능 Account 잔액을 조회할 수 있습니다

about-tech.tistory.com

 

 

[Blockchain] Web3란?

이더리움 블록체인 네트워크를 사용한 Dapp을 만든다는 것은 다른 말로 하면 솔리디티 언어로 스마트 컨트랙트를 개발하는 것과, 블록체인과 상호작용할 수 있는 클라이언트(노드)를 개발하는

about-tech.tistory.com

 

 

[Blockchain] Infura 사용하는 이유 방법

Infura 사용이유? 일반 사용자가 블록체인과 통신을 하기 위해서는 중간에서 브릿지 역할을 해주는 모듈이 필요합니다. 이더리움 블록체인의 경우 클라이언트와 노드를 연결해주는 Web3.js를 통해

about-tech.tistory.com

 

댓글