인프런 커뮤니티 질문&답변

이경수님의 프로필 이미지

작성한 질문수

[D.P.2(DappProject2)] 디앱 프로젝트2(Klaytn 네트워크를 활용한 NFT 생성 및 판매)

메타데이터가 포함된 NFT와 첫번째 NFT 비교

metadata를 읽어오지 못해요 ㅠ

24.06.25 16:00 작성

·

105

0

refersh metadata를 몇번이고 해보고 캐시 지우고 해봐도 이미지와 name, description이 업데이트 되지 않습니다. ㅠ
mint 해서 tokenURI실행하면 아래와 같이 나옵니다.

해당 url로 접근하면 json이 잘 나오고 imgaeurl접속해도 이미지가 잘 나오는데 opensea testnet에는 아무 정보도 업데이트 되지 않아요 ㅠ

아래는 ㄴ소스 코드입니다.

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

import "@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol";
import "@openzeppelin/contracts/utils/Strings.sol";

contract MintGemToken is ERC721Enumerable{
    //메타 data json폴더 경로
    string public metadataURI;

    constructor(string memory _name, string memory _symbol, string memory _metadataURI) ERC721(_name,_symbol){
        metadataURI = _metadataURI;
    }

    struct GemTokenData{
        uint gemTokenRank;
        uint gemTokenType;
    }
    // 토큰 id => 랭크,타입
    mapping(uint => GemTokenData) public gemTokenData;

    //* ERC721에 구현되어있는 메서드를 override
    //tokenURI -> metadata가 저장되어있는 json의 주소를 던져줌.
    function tokenURI(uint _tokenId)override public view returns(string memory){
        string memory gemTokenRank = Strings.toString(gemTokenData[_tokenId].gemTokenRank);
        string memory gemTokenType = Strings.toString(gemTokenData[_tokenId].gemTokenType);

        //argument들을 하나로 합쳐줘서 문자열 리턴 -> metadata json uri
        return string(abi.encodePacked(metadataURI,'/',gemTokenRank,'/',gemTokenType,".json"));
    }


    function mintGemToken() public {
        uint tokenId = totalSupply()+1;
        
        // 발행자에게 tokenId의 토큰 발행 -> 일단 현재는 하드코딩
        gemTokenData[tokenId] = GemTokenData(1,1);

        _mint(msg.sender,tokenId);
    }
}

답변 1

0

h662님의 프로필 이미지
h662
지식공유자

2024. 06. 25. 16:09

Remix에서는 메타데이터를 확인할 수 있는데

Opensea에서 아예 데이터를 못가져오는 상황인것 같습니다.

클레이튼 네트워크를 사용하셨을까요???

혹시 클레이튼 네트워크를 사용하셨다라고하면 세폴리아(이더리움 테스트넷)에서도 한번 테스트 해보시겠어요??image다음과 같이 접속하시면 되고 동일하게 faucet을 받아서 진행하시면 됩니다.
혹시 안되는 부분 있다면 질문 남겨주세요 :)