KIP17 스마트컨트랙트를 수정하고 deploy하려고 했는데 다음과 같은 에러가 떴다.
이유는 생각보다 간단했는데 KIP17Metadata에서 메타데이터의 각 요소를 호출하는 함수의 이름이 IKIP17Metadata에서 정의된 함수의 이름과 같지 않아서 발생한 오류였다.
KIP17Metadata와 IKIP17Metadata의 함수이름을 통일시켜줌으로써 해결했다.
예를 들어 IKIP17Metadata이 아래와 같다면
contract IKIP17Metadata is IKIP17 {
function name() external view returns (string memory);
function symbol() external view returns (string memory);
function ticketName(uint256 tokenId) external view returns (string memory);
}
KIP17Metadata는 아래와 같아야 한다.
contract KIP17Metadata is KIP13, KIP17, IKIP17Metadata {
mapping(uint256 => string) private _ticketNames;
function ticketName(uint256 tokenId) external view returns (string memory) {
require(
_exists(tokenId),
"KIP17Metadata: URI query for nonexistent token"
);
return _ticketNames[tokenId];
}
}
나같은 경우는 ticketName을 getTicketName으로 작성했어서 발생한 오류였고 이를 통일시켜주니 문제없이 작동하였다 ㅎㅎ