Kubo(IPFS)의 설치 방법은 Snap을 사용하지 않고 Kubo를 설치하고 설정하는 방법을 따라 문제를 해결하겠습니다.
1. Kubo 다운로드 및 설치
- Kubo 다운로드최신 Kubo 버전을 공식 배포 페이지에서 다운로드합니다.bash코드 복사
wget https://dist.ipfs.tech/kubo/v0.18.0/kubo_v0.18.0_linux-amd64.tar.gz
- 압축 해제bash코드 복사
tar -xvzf kubo_v0.18.0_linux-amd64.tar.gz cd kubo
- 설치bash코드 복사
sudo bash install.sh
- 환경 변수 설정Kubo가 올바르게 설치되었는지 확인하기 위해 환경 변수를 설정합니다.bash코드 복사
export PATH=$PATH:/usr/local/bin
2. IPFS(Kubo) 초기화 및 데몬 실행
- IPFS 초기화bash코드 복사
ipfs init
만약ipfs
명령어가 인식되지 않는다면, 설치된 경로가 올바른지 확인하고 환경 변수를 다시 설정해보세요.bash코드 복사which ipfs
명령어가 출력되지 않는다면, IPFS 바이너리가 설치된 경로를 확인하고$PATH
에 추가합니다. - 데몬 실행bash코드 복사
ipfs daemon
3. 메타데이터 파일 생성 및 업로드
- 메타데이터 파일 생성
metadata.json
파일을 생성하고 아래와 같이 전자책의 메타데이터를 작성합니다.json코드 복사{ "name": "Example Ebook", "description": "An example ebook for NFT", "image": "https://example.com/cover.jpg", "attributes": [ { "trait_type": "Author", "value": "John Doe" }, { "trait_type": "Genre", "value": "Fiction" } ] }
- 메타데이터 파일 IPFS에 업로드bash코드 복사
ipfs add metadata.json
출력 결과에서Qm...
형식의 해시를 얻을 수 있습니다. 이 해시를 사용하여 파일을 참조합니다.plaintext코드 복사added Qmabcdef123456 metadata.json
- IPFS URI 구성IPFS의 URI는 다음과 같이 구성됩니다.plaintext코드 복사
https://ipfs.io/ipfs/Qmabcdef123456
4. 테스트 파일 업데이트
이제 test/ebook_nft.js
파일에서 tokenURI
를 위에서 얻은 IPFS URI로 설정합니다.
javascript코드 복사const EbookNFT = artifacts.require("EbookNFT");
contract("EbookNFT", (accounts) => {
it("should mint a new NFT", async () => {
const ebookNFT = await EbookNFT.deployed();
const tokenURI = "https://ipfs.io/ipfs/Qmabcdef123456";
await ebookNFT.mint(accounts[0], tokenURI);
const owner = await ebookNFT.ownerOf(0);
assert.equal(owner, accounts[0], "Owner of tokenId 0 should be accounts[0]");
const retrievedTokenURI = await ebookNFT.tokenURI(0);
assert.equal(retrievedTokenURI, tokenURI, "Token URI of tokenId 0 should match");
});
});
이제 tokenURI
가 실제 IPFS에 업로드된 메타데이터 파일을 가리키므로 테스트가 더 정확하게 동작합니다.
5. 테스트 실행
bash코드 복사truffle test
이제 IPFS를 통해 메타데이터 파일을 업로드하고 해당 URI를 설정하는 과정이 완료되었습니다.