IPFS 사용 이유
NFT를 민팅 할 때, 블록체인상에 NFT 이미지를 등록하지 않습니다. 블록체인에 등록하게 되면 너무 큰 용량으로 인해 감당할 수 없는 가스비가 나올 것입니다.
이러한 이유로 다른 곳에 저장해야 하는데, 기존의 중앙집중식 서버에 저장하면 데이터의 위변조 가능성이 존재해서 nft의 가치가 훼손될 가능성이 있습니다.
이러한 issue로 대부분의 nft 이미지와 metadata는 IPFS(분산형 파일 저장 시스템)에 저장되며, 이로인해 nft의 불변성을 보장할 수 있게됩니다.
IPFS에 파일을 올리면 해당 파일의 대한 컨텐츠 주소로 CID(해시값)가 발급되며, 이를 블록체인에 등록하게 됩니다.
IPFS 이슈
이미지를 가져오는 과정에서 네트워크 지연이 일어날 수 있습니다.
- 사용자가 IPFS에서 파일을 요청할 때 네트워크에서 IPFS 클라이언트는 파일에 대한 요청을 네트워크로 보냅니다.
- 그런 다음 요청은 노드가 함께 작업하여 요청된 블록을 검색하고 파일을 재조립하는 분산 네트워크를 통해 라우팅됩니다.
- 요청된 블록의 사본을 가지고 있는 노드는 요청에 응답하여 블록 사본을 클라이언트에 보냅니다.
- 그런 다음 IPFS 클라이언트는 블록을 조립하여 원본 파일을 재구성합니다.
이러한 프로세스는 네트워크 대기 시간을 발생시킵니다.
그래서인지. opensea, blur, superrare 등 대부분의 nft marketplace에서 썸네일등에 표시되는 nft이미지를 ipfs에 있는 파일을 불러오지 않습니다.
원본에 대해 최적화한 이미지를 플랫폼의 이미지 서버 혹은 cdn에서 요청받는 것을 확인 할 수 있습니다.
이 외에도 여러가지 인프라와, 네트워크 구성으로 더욱 빠르게 렌더링을 시켜 사용자의 편리성과 nft 가치 보존의 절충점을 찾은것 같습니다.
아래는 네트워크 지연 등으로 인한 이미지 렌더링 속도 저하를 해결 할 수 있는 몇가지 방법입니다.
- IPFS 게이트웨이 사용: IPFS 게이트웨이는 사용자의 브라우저와 IPFS 네트워크 사이에 캐싱 계층을 제공하여 네트워크 성능을 개선하는 데 도움이 될 수 있습니다. 사용자는 게이트웨이를 사용하여 자주 액세스하는 콘텐츠에 더 빠르게 액세스하고 IPFS 네트워크의 부하를 줄일 수 있습니다.
- IPFS 노드 설정 최적화: IPFS 노드의 구성 설정을 조정하여 사용자는 네트워크 성능을 향상시킬 수 있습니다. 예를 들어 동시 연결 수 증가, 캐싱 기간 증가 및 블록 캐시 크기 조정은 모두 성능 향상에 도움이 될 수 있습니다.
- IPFS 클러스터링 사용: IPFS 클러스터링을 사용하면 사용자가 여러 IPFS 노드에 콘텐츠를 배포하여 네트워크의 가용성과 성능을 향상시킬 수 있습니다. 클러스터링은 일부 노드가 오프라인 상태가 되거나 정체되는 경우에도 콘텐츠를 항상 사용할 수 있도록 하는 데 도움이 될 수 있습니다.
- IPFS 고정 서비스 사용: 고정 서비스를 통해 사용자는 IPFS 노드에 콘텐츠 사본을 영구적으로 저장하고 유지할 수 있습니다. 고정 서비스를 사용하면 자주 액세스하는 콘텐츠를 항상 사용할 수 있고 더 빠르게 액세스할 수 있습니다. 이러한 IPFS Pinning을 제공하는 서비스로는 PINATA, INFURA등이 있습니다.
- IPFS 공용 게이트웨이 사용: IPFS 공용 게이트웨이는 사용자가 자체 IPFS 노드를 실행할 필요 없이 IPFS 네트워크의 콘텐츠에 액세스할 수 있는 방법을 제공합니다. 공용 게이트웨이를 사용하면 여러 노드에 부하를 분산하고 네트워크 성능을 향상하는 데 도움이 될 수 있습니다.
전반적으로 IPFS 네트워크의 성능을 개선하려면 게이트웨이 사용, 노드 설정 최적화, 클러스터링, 고정 서비스 및 공용 게이트웨이 사용을 포함한 기술 조합이 필요합니다.
IPFS 노드 구성 최적화
IPFS(InterPlanetary File System) 노드 구성을 최적화하면 네트워크 성능을 개선하는 데 도움이 될 수 있습니다. 다음은 IPFS 노드 구성을 최적화하는 몇 가지 방법입니다.
- 동시 연결 수 증가: IPFS 노드가 처리할 수 있는 동시 연결 수를 늘리면 더 많은 요청을 동시에 처리할 수 있으므로 성능이 향상될 수 있습니다. 동시 연결 수의 기본값은 20이지만 성능 향상을 위해 이 값을 늘릴 수 있습니다.
- 캐시 기간 늘리기: IPFS 노드는 콘텐츠를 캐시하여 네트워크에 대한 요청 수를 줄입니다. 캐시 기간을 늘리면 콘텐츠를 더 오래 저장할 수 있으므로 네트워크에서 콘텐츠를 검색할 필요성이 줄어듭니다. 기본 캐시 기간은 10분이지만 사용 사례에 따라 늘릴 수 있습니다.
- 블록 캐시 크기 늘리기: 블록 캐시는 최근에 액세스한 블록을 메모리에 저장하여 디스크 읽기 수를 줄입니다. 블록 캐시 크기를 늘리면 더 많은 블록을 메모리에 저장할 수 있으므로 성능이 향상될 수 있습니다. 기본 블록 캐시 크기는 10MB이지만 사용 가능한 메모리에 따라 늘릴 수 있습니다.
- 연결 시간 제한 늘리기: 연결 시간 제한을 늘리면 IPFS 노드가 연결 시간이 초과되기 전에 더 오래 대기합니다. 네트워크가 느리거나 혼잡한 경우 유용할 수 있습니다. 기본 연결 제한 시간은 20초이지만 사용 사례에 따라 늘릴 수 있습니다.
- Swarm 설정 최적화: Swarm은 서로 통신하는 IPFS 노드의 네트워크입니다. 피어당 연결 수, 연결당 최대 대역폭 및 최대 동시 다이얼링 시도 횟수와 같은 Swarm 설정을 최적화하여 네트워크 성능을 향상시킬 수 있습니다.
전반적으로 IPFS 노드 구성을 최적화하려면 동시 연결 수 증가, 캐시 기간 및 블록 캐시 크기 증가, 연결 시간 초과 증가, 스웜 설정 최적화 등의 기술 조합이 필요합니다.
'IPFS' 카테고리의 다른 글
IPFS기반 NFT거래소 구축 (0) | 2023.07.11 |
---|---|
IPFS 폴더 업로드 (1) | 2023.03.29 |
ElasticSearch를 이용한 IPFS 검색 속도 개선 (0) | 2023.03.27 |
IPFS 파일 추가 (add, pinning) (0) | 2023.03.27 |
ipfs 파일접근 : public gateway vs local node access (0) | 2023.03.27 |