对不起,如果这是hella n00b,但是我想知道当重写tokenURI时,您可以返回一个包含所有元数据的字符串,这些元数据都是在链上动态计算的,这样就不需要托管tokenURI文件了。
例如:
function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {
require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token");
string memory newstring = string(abi.encodePacked("{ \"name\" :" , getname(tokenId), "}"));
return newstring;
}像Opensea这样的市场只需要一个链接到元数据的URL吗?他们为什么不直接从函数的输出中提取全部数据呢?
这将消除手动(或自动)更新诸如NFT统计等内容的需要,并且所有内容都将保持在链上。我很抱歉,也许n00b的问题,但我找不到任何其他的帖子,尝试过这一点。
任何有关这个问题的意见都将不胜感激。
发布于 2021-09-18 07:51:49
是的,使用数据网址是可能的。OpenSea要求tokenURI方法返回包含属性(例如image )的JSON的URI (这些属性本身也可以将数据URL作为值)。
下面是关于如何在链上存储NFT元数据的一个很好的教程:https://andyhartnett.medium.com/solidity-tutorial-how-to-store-nft-metadata-and-svgs-on-the-blockchain-6df44314406b
https://ethereum.stackexchange.com/questions/109421
复制相似问题