[英]Reading JSON metadata of NFT from it's contract
有没有合法的方法可以从其合约中获取有关 NFT 元数据的详细信息? 假设我有 ID 为 1 的 NFT,它的元数据存储在 IPFS 上并且它的稀有度属性为 10。是否可以从合同内部获取该数据? 或者唯一的方法是在合同中引入稀有属性,然后用第 3 方实用程序填充它?
如果有专门为从 ipfs 获取数据而构建的 oracle 服务,您可以在技术上从合同中获取数据。 但是,这是一项过于昂贵且不必要的服务,因此没有 oracle 服务。
相反,我们从前端的 Ipfs 链下获取数据。 我们将tokenUri
存储在合约中。 在前端,我们获取tokenUri
并使用此 tokenUri 从 Ipfs 中获取数据。
const tokenURI = await contract.tokenURI(tokenId);
const metaRes = await fetch(tokenURI);
大多数带有元数据的 NFT 是ERC721Metadata 接口的实现,它具有以下方法:
/// @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 returns (string);
此方法tokenURI
返回给定tokenId
的元数据 URI。
元数据属性通常遵循opensea 元数据标准
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.