일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- Vue.js
- 티스토리챌린지
- vue기초
- nest.js설명
- ethers v6
- 스마트컨트렉트테스트
- 스마트컨트렉트프록시
- ethers
- 컨트렉트 배포 자동화
- multicall
- 스마트컨트렉트 함수이름 중복 호출
- 프록시배포구조
- 체인의정석
- 러스트기초
- ethers websocket
- 컨트렉트 동일한 함수이름 호출
- 오블완
- SBT표준
- 러스트 기초 학습
- ethers type
- chainlink 설명
- ambiguous function description
- git rebase
- 머신러닝기초
- 스마트컨트렉트 예약어 함수이름 중복
- 러스트 기초
- ethers typescript
- Vue
- rust 기초
- 스마트 컨트렉트 함수이름 중복
Archives
- Today
- Total
체인의정석
Solidity 에서 token URI 와 toString 라이브러리 본문
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
반응형
'블록체인 > NFT & BRIDGE' 카테고리의 다른 글
스마트컨트렉트 디버깅 하기) erc721 burn에 대한 테스트 오류 해결 (0) | 2022.02.14 |
---|---|
ERC721의 safeTransferFrom (0) | 2022.02.14 |
ERC721 Receiver에 대한 설명 (0) | 2022.02.08 |
ERC721) token URI에 대한 코드 분석 (0) | 2022.02.08 |
Waffle 사용기 - ERC721 테스트 코드 작성하기 (0) | 2022.01.28 |
Comments