关于元数据URI扩展,我认为不应该要求每个令牌ID都有一个单独的元数据URI。我认为应该有一个可以从globalTokenURI返回的tokenURI()状态变量。如果知道每个令牌都有相同的令牌URI,那么如果令牌URI曾经被更新过,并且您有1000个令牌,则需要遍历每个令牌并更新令牌URI。如果它们都是一样的,那就没有意义了。我认为应该允许tokenURI()函数接受一个令牌ID,但是如果不需要参数,那么它应该返回一个全局URI。我提议:
function globalTokenURI() public view returns (string) {
return _globalTokenURI;
}
function modifyGlobalTokenURI(string _tokenURI) public onlyManager {
_globalTokenURI = _tokenURI;
}有什么想法?
发布于 2018-09-18 21:42:18
使用字符串连接和基本URL。
以下是来自Su Squares的相关代码片段:
/// @notice A distinct Uniform Resource Identifier (URI) for a given asset.
/// @dev Throws if `_tokenId` is not a valid NFT. URIs are defined in RFC
/// 3986. The URI may point to a JSON file that conforms to the "ERC721
/// Metadata JSON Schema".
function tokenURI(uint256 _tokenId)
external
view
mustBeValidToken(_tokenId)
returns (string _tokenURI)
{
_tokenURI = "https://tenthousandsu.com/erc721/00000.json";
bytes memory _tokenURIBytes = bytes(_tokenURI);
_tokenURIBytes[33] = byte(48+(_tokenId / 10000) % 10);
_tokenURIBytes[34] = byte(48+(_tokenId / 1000) % 10);
_tokenURIBytes[35] = byte(48+(_tokenId / 100) % 10);
_tokenURIBytes[36] = byte(48+(_tokenId / 10) % 10);
_tokenURIBytes[37] = byte(48+(_tokenId / 1) % 10);
}https://github.com/fulldecent/su-squares-bounty/blob/master/contracts/SuNFT.sol#L225-L239
在我的例子中,我使用的是带有硬编码字符串的_tokenURI。老实说,也许那不是最好的选择。但是,我们欢迎您使用这种方法来生成URI,URI可以在批处理中快速更改。
https://ethereum.stackexchange.com/questions/57796
复制相似问题