NFT 민팅 발행시 metadata IPFS에 저장 방법

전자책 NFT의 tokenURI는 전자책의 메타데이터가 저장된 위치를 가리킵니다. 일반적으로 이러한 메타데이터는 IPFS(InterPlanetary File System)와 같은 분산 파일 시스템에 업로드하여 보관합니다.

여기서는 IPFS를 사용하여 전자책 메타데이터를 업로드하고, 그 URI를 설정하는 방법을 설명하겠습니다.

1. IPFS 설치 및 설정

IPFS 설치IPFS를 설치합니다. IPFS 공식 사이트에서 설치 방법을 참고하세요.

    # MacOS
    brew install ipfs
    
    # Ubuntu
    sudo apt install ipfs
    
    # Windows
    choco install ipfs

    IPFS 데몬 실행

    ipfs init

    ipfs 가 설치가 안되는 경우가 있는데 그 때는 snap으로 설치합니다.

    ipfs daemon

    2. 메타데이터 파일 생성 및 업로드

    메타데이터 파일 생성metadata.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 Qm... metadata.json

    IPFS URI 구성IPFS의 URI는 다음과 같이 구성됩니다.plaintext코드 복사https://ipfs.io/ipfs/Qm... 예를 들어, 해시가 Qmabcdef123456이면 URI는 https://ipfs.io/ipfs/Qmabcdef123456가 됩니다.

    3. 테스트 파일 업데이트

    이제 test/ebook_nft.js 파일에서 tokenURI를 위에서 얻은 IPFS URI로 설정합니다.

    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에 업로드된 메타데이터 파일을 가리키므로 테스트가 더 정확하게 동작합니다.

    4. 테스트 실행

    truffle test

    답글 남기기

    이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

    error: Content is protected !!