apt, snap가 아닌 Kubo로 IPFS 설치 방법

Kubo(IPFS)의 설치 방법은 Snap을 사용하지 않고 Kubo를 설치하고 설정하는 방법을 따라 문제를 해결하겠습니다.

1. Kubo 다운로드 및 설치

  1. Kubo 다운로드최신 Kubo 버전을 공식 배포 페이지에서 다운로드합니다.bash코드 복사wget https://dist.ipfs.tech/kubo/v0.18.0/kubo_v0.18.0_linux-amd64.tar.gz
  2. 압축 해제bash코드 복사tar -xvzf kubo_v0.18.0_linux-amd64.tar.gz cd kubo
  3. 설치bash코드 복사sudo bash install.sh
  4. 환경 변수 설정Kubo가 올바르게 설치되었는지 확인하기 위해 환경 변수를 설정합니다.bash코드 복사export PATH=$PATH:/usr/local/bin

2. IPFS(Kubo) 초기화 및 데몬 실행

  1. IPFS 초기화bash코드 복사ipfs init 만약 ipfs 명령어가 인식되지 않는다면, 설치된 경로가 올바른지 확인하고 환경 변수를 다시 설정해보세요.bash코드 복사which ipfs 명령어가 출력되지 않는다면, IPFS 바이너리가 설치된 경로를 확인하고 $PATH에 추가합니다.
  2. 데몬 실행bash코드 복사ipfs daemon

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

  1. 메타데이터 파일 생성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" } ] }
  2. 메타데이터 파일 IPFS에 업로드bash코드 복사ipfs add metadata.json 출력 결과에서 Qm... 형식의 해시를 얻을 수 있습니다. 이 해시를 사용하여 파일을 참조합니다.plaintext코드 복사added Qmabcdef123456 metadata.json
  3. 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를 설정하는 과정이 완료되었습니다.

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 !!