체인의정석

Solidity 에서 token URI 와 toString 라이브러리 본문

블록체인/NFT & BRIDGE

Solidity 에서 token URI 와 toString 라이브러리

체인의정석 2022. 2. 9. 16:22
728x90
반응형

nft에 있는 token URI는 앞부분은 다음과 같이 오픈제플린 표준에 있는 인터페이스방식대로 가져오면 된다.

  // override external view
	function tokenURI(uint256 tokenId) external view returns (string memory) {
		require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token");
		string memory baseURI = getBaseURI();
		return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : "";
	}

  function getBaseURI() public view returns (string memory) {
		return _baseURI;
	}

지금 사용중인 0.5.0 부분은 특이하게도 모든 조회 함수가 external로 함수 자체가 정의되어 있어 이 부분만 external로 하엿다. 어차피 내부적으로 조회해올 일이 없어서 괜찮다.

 

문제는 toString()이 솔리디티에서 적용되는 기능이 아니라는 점인데 0.5.0 버전의 솔리디티에는 toString() 함수가 존재하지 않는다.

따라서 가장 근접한 버전을 찾아보았다. 0.6.0 버전이 가장 근접하므로, 

pragma solidity >= 0.5.0 <0.6.0;

이 부분을 바꾸어주어 진행하였다.

import './utils/Strings.sol';
using Strings for uint256;

물론 라이브러리니 임포트해오고 using 구문 사용도 추가를 해야 한다.

728x90
반응형
Comments