NFT가 뭐고 왜 해야 하고 그딴 시덥잖은 이야긴 다른 글을 참조하시고 바로 실전으로 들어간다. 묻지도 따지지도 말고 일단 IPFS에 파일 올리는것부터 해야 하는데 IPFS를 이용하는 이유는 NFT는 그림, 음원, 비디오 그딴건데 파일을 안 올리면 어쩌겠는가? 그런데 이걸 한 개인의 서버에 올리면? 서버 다운되거나 해킹되면? 그러니 분산 파일 시스템인 IPFS에 올리는거
NFT(Non-Fungible Token)는 고유한 디지털 자산을 나타내는 토큰으로, 블록체인 기술을 기반으로 합니다. IPFS(InterPlanetary File System)는 분산 파일 시스템으로, 파일을 분산된 네트워크에 저장하고 검색할 수 있게 해줍니다. NFT를 만들 때 IPFS를 이용하는 이유는 여러 가지가 있습니다:
분산 저장: IPFS는 파일을 여러 노드에 분산하여 저장하므로 중앙 서버에 의존하지 않습니다. 이는 단일 지점의 장애나 특정 서버의 다운으로 인한 데이터 손실을 방지할 수 있습니다.
내구성과 신뢰성: IPFS는 데이터를 여러 노드에 복제하여 내구성과 신뢰성을 높입니다. 파일이 한 노드에서 손상되거나 사용 불가능해지더라도 여러 다른 노드에서 해당 파일을 찾아 사용할 수 있습니다.
비용 효율성: IPFS를 사용하면 파일을 저장하고 검색하는 데 필요한 비용을 최적화할 수 있습니다. 중앙화된 서버를 운영하고 유지하는 데 필요한 비용을 줄일 수 있습니다.
방대한 용량과 확장성: IPFS는 대용량 파일을 효과적으로 처리할 수 있으며, 필요에 따라 확장될 수 있습니다. 블록체인이나 중앙 서버에서 처리하기 어려운 큰 용량의 미디어 파일을 다룰 수 있습니다.
안전성과 보안: IPFS는 데이터를 암호화하고 해시값을 통해 무결성을 검증하여 안전성과 보안을 강화합니다. 블록체인과 결합하여 높은 수준의 보안을 제공합니다.
이러한 이유로, NFT를 만들 때 IPFS를 이용하여 디지털 자산을 저장하고 관리하는 것이 일반적으로 권장됩니다. 이를 통해 더 분산화되고 안전한 환경에서 NFT를 다룰 수 있습니다.
console.log("File add success! result :", result[0].hash);
}
});
이제 node로 만든 app.js를 아래처럼 실행하면 성공 메세지와 함께 암호문자열을 확인 가능할것이다. 참고로 업로드할 파일인 test.txt파일은 D:\Project\NFT에 test.txt 파일을 미리 만들어 두자
result 자체를 찍어보면 다음과 같이 나온다. { path: '******NVAiMNRcGu6x1AwQ4c5SBnJMH', hash: '******NVAiMNRcGu6x1AwQ4c5SBnJMH', size: 6 } path는 경로 cid는 컨텐츠 식별자 size는 파일 용량이다. path와 cid가 동일함을 알 수 있다.
만약 아래처럼 오류가 난다면 IPFS 프로그램이 중지되었기 때문이다. IPFS를 실행해둔 상태에서 하길 바란다. (만약 난 좀 있어보이고 싶다란 사람이라면 cmd창에서 ipfs daemon이라 실행하면 동일한 효과를 볼 수 있다.)
한가지 주의해야 할 점은 이후 node.js로 IPFS로 파일을 업로드 시켜볼 예정인데 이 파일 메뉴에 내가 올린 파일이 바로 나오지 않는다란 점이다.
아까 node.js로 업로드 후 성공 메세지로 받았던 문자열을 Browse에 입력하고 검색하면 확인이 가능하다. File add success! result : Q *************....H