我怀疑是否可能有不同的薄荷函数指向不同的tokenURI。
假设我有两个薄荷函数和两个名为tokenURI1和TokenURI2的变量,如下所示:
String tokenURI1 = ipfs://test1;
String TokenURI2 = ipfs://test2;
function mint1(uint256 _mintAmount) public payable {
_safeMint(_msgSender(),_mintAmount);
}
function mint2(uint256 _mintAmount) public payable {
_safeMint(_msgSender(),_mintAmount);
}如果有人在mint1函数中使用该令牌将tokenURI1的url保存在memory中,而在mint2函数中有人将tokenURI2的url保存在memory中,则有可能是造币吗?
这样做的想法是在一个具有不同映像的智能契约中创建多个薄荷函数,但保持在同一个collection.it中是可以做到的吗?怎么做?
发布于 2022-09-10 18:46:07
这应该是可能的。例如,OpenZeppelin实现允许重写tokenURI(tokenId)函数,并根据tokenId返回相应的URI。
enum TokenType { Type1, Type2 }
mapping (uint256 => TokenType) tokenType;
function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {
if (tokenType[tokenId] == TokenType.Type1) {
return string(abi.encodePacked(tokenURI1, tokenId.toString()));
} else {
return string(abi.encodePacked(tokenURI2, tokenId.toString()));
}
}https://ethereum.stackexchange.com/questions/135371
复制相似问题