首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ERC721元数据

ERC721元数据
EN

Ethereum用户
提问于 2018-08-31 00:11:42
回答 1查看 1K关注 0票数 4

关于元数据URI扩展,我认为不应该要求每个令牌ID都有一个单独的元数据URI。我认为应该有一个可以从globalTokenURI返回的tokenURI()状态变量。如果知道每个令牌都有相同的令牌URI,那么如果令牌URI曾经被更新过,并且您有1000个令牌,则需要遍历每个令牌并更新令牌URI。如果它们都是一样的,那就没有意义了。我认为应该允许tokenURI()函数接受一个令牌ID,但是如果不需要参数,那么它应该返回一个全局URI。我提议:

代码语言:javascript
复制
function globalTokenURI() public view returns (string) {
  return _globalTokenURI;
}

function modifyGlobalTokenURI(string _tokenURI) public onlyManager {
  _globalTokenURI = _tokenURI;
}

有什么想法?

EN

回答 1

Ethereum用户

发布于 2018-09-18 21:42:18

使用字符串连接和基本URL。

以下是来自Su Squares的相关代码片段:

代码语言:javascript
复制
/// @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可以在批处理中快速更改。

票数 1
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/57796

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档