{"content":{"title":"深入探讨 Solana NFT 元数据","body":"## 概述\r\n\r\n即使在 2022 年的熊市中，Solana NFTs 也没有显示出减缓的迹象。如果你正在构建 Solana NFTs，了解你的 NFTs 的元数据将使你更容易部署和更新 NFTs，与用户进行沟通，并开发创新的 NFT 应用程序。无论你是一个收藏家，解读你的 NFTs 的元数据将帮助你理解 NFT 以及如何在 Solana 区块浏览器上找到重要信息。\r\n\r\n在本指南中，你将学习：\r\n\r\n- 什么是 Metaplex NFT 代币标准\r\n- 如何使用 Solana Explorer 跟踪和查找有关你的 NFT（或多个 NFT）的信息\r\n- 什么是认证集合和 Candy Machines，它们如何影响 NFT 的元数据\r\n\r\n#### 你将需要的准备\r\n\r\n- 对 Solana NFTs 的基本经验\r\n\r\n## Metaplex NFT 代币标准\r\n\r\n元数据是在区块链协议中分配给可替代代币（fungible token）或不可替代代币（non-fungible token）的一种基本工具。这包括与 NFT 相关联的数据，例如图像或特征、可替代代币的缩写（如 $USDC 或 $mSOL），或者创作者的版权金额和钱包。\r\n\r\n由于 Solana 的 SPL 代币程序仅包含最少的元数据（如代币数量），[Metaplex](https://www.metaplex.com/) 创建了一个广泛采用的协议，用于将附加元数据附加到代币。Metaplex 协议创建了一个程序派生地址（Program Derived Address, PDA）（有关 PDA 的更多信息，请查看我们的 [Solana 基础参考指南](https://learnblockchain.cn/article/11166#:~:text=Program%20Derived%20Address%20Accounts)）与铸造账户（_铸造账户负责存储代币的全局信息，而代币账户存储钱包与铸造账户之间的关系._ 来源 [docs.metaplex.com](https://docs.metaplex.com/programs/token-metadata/overview)）。换句话说，每个代币（可替代或不可替代）都有一个铸造账户；代币的授权可以通过 PDA 使用 Metaplex 元数据程序附加附加元数据：\r\n\r\n![](https://img.learnblockchain.cn/2025/02/25/0-72f686024c79278c64195d0cf4f21166.png)\r\n\r\n_来源：_[\\*docs.metaplex.com\\\\*](https://docs.metaplex.com/programs/token-metadata/overview)\r\n\r\n> 注意：如果你有构建 Solana 程序的经验，PDA 是由以下字段生成的：代币铸造的公钥、代币元数据程序的公钥和术语“metadata”。\r\n\r\nMetaplex 元数据程序为 NFT、可替代代币和可替代资产/半可替代代币（Semi-fungible Tokens, SFTs）定义了标准。本指南将侧重于 NFT - 有关其他标准的更多信息，请访问 [Metaplex 代币标准](https://docs.metaplex.com/programs/token-metadata/token-standard)。\r\n\r\n元数据包括两个主要部分：存储在 PDA 上链的数据和存储在链外（通常在某些永久去中心化存储中，例如 Arweave、IPFS 或 Shadow Drive）的数据，通过唯一的 _URI_ 在 PDA 中链接。将某些数据托管在链外的主要目的是限制元数据 PDA 的租赁成本，并允许元数据程序随着行业需求的变化而更灵活地发展（更多信息可在 [Metaplex FAQs](https://docs.metaplex.com/programs/token-metadata/faq#why-does-the-metadata-account-have-both-on-chain-and-off-chain-data) 获取）。\r\n\r\n## 链上元数据\r\n\r\n以下字段是在给定 NFT 的链上元数据 PDA 中存储的数据：\r\n\r\n- **Key** - 识别元数据账户类型的账户鉴别符\r\n- **Update Authority** - 被允许更新此账户的公钥\r\n- **Mint** - 其源自的铸造账户的公钥\r\n- **Name** - 代币的链上名称（如“Quick Pixel #1”）\r\n- **Symbol** - 代币的链上符号（如“FFF”）\r\n- **Uri** - 指向外部元数据的 URI。该 URI 指向一个链外 JSON 文件，其中包含按照某种标准的附加数据\r\n- **Seller Fee Basis Points** - 创作者分享的版权金额，以基点表示——即，550 意味着 5.5% 的版权费用。注意：尽管大多数 NFT 市场会使用该字段，但它并未受到代币元数据程序本身的实施\r\n- **Primary Sale Happened** - 一个布尔值，指示该代币是否已经售出至少一次。一旦切换为 True，永远不能再变为 False。该字段可能会影响版权分配方式\r\n- **Is Mutable** - 一个布尔值，指示元数据账户是否可以更新。一旦切换为 False，永远不能再变为 True\r\n- **Creators** - （可选）创作者及其版权份额的数组。该数组限制为 5 个创作者。每个创作者对象包含以下字段：Address（创作者公钥的字符串）、Verified（布尔值 - 如果创作者已签署 NFT，则为 true）、Share（一数值 \\[0-100\\]，表示版权的比例份额 %。所有创作者份额的总和应为 100）\r\n- 其他可选字段包括：Creators、Edition Nonce、Token Standard、Collection、Uses、Collection Details\r\n\r\n来源：[Metaplex 代币元数据账户](https://docs.metaplex.com/programs/token-metadata/accounts#metadata)\r\n\r\n## 链外元数据\r\n\r\n以下字段是存储在链接到 PDA 的 _JSON_ 中的数据，通过 _URI_ 字段连接：\r\n\r\n- **name** - NFT 名称\r\n- **symbol** - NFT 的符号\r\n- **description** - NFT 的描述\r\n- **image** - 指向资产主要图像的 URI（通常与 NFT 关联）\r\n- **animation\\_url** - 指向资产动画的 URI（如果存在的话）\r\n- **external\\_url** - 指向定义资产的外部 URL 的 URI——例如，创作者的网站。\r\n- **attributes** - 定义资产特征的属性数组。\r\n- **properties** - 与 NFT 相关的任何文件及其主要文件类型“category”。\r\n- **category**（已弃用） - 你可能在旧 NFTs 中看到这个字段，但这个信息现在已移至链上元数据。\r\n\r\n这是很多内容 - 下面是一个快速的视觉效果，显示了链上和链外信息的关系：\r\n\r\n![](https://img.learnblockchain.cn/2025/02/25/1-0ca723e7cfea81879efe71c99b5cd11b.png)\r\n\r\n_来源：_[\\*docs.metaplex.com\\\\*](https://docs.metaplex.com/programs/token-metadata/overview)\r\n\r\n让我们用一个示例来理解一下。\r\n\r\n## 使用 Solana Explorer 浏览元数据\r\n\r\n让我们通过 Solana Explorer 查看链上的一个 NFT，并浏览其元数据的元素。我找到了一只我想了解更多的 Okay Bear。它的铸造地址是 _H6wPjAGAU1mH83sQ8pJC98kYkGCju5Z5ZpJ4sWcLfn2a_。请访问 [explorer.solana.com](https://explorer.solana.com/) 并在搜索栏中输入该铸造地址。它应该会将你重定向到 NFT 的铸造页面，[在这里](https://explorer.solana.com/address/H6wPjAGAU1mH83sQ8pJC98kYkGCju5Z5ZpJ4sWcLfn2a/metadata)。\r\n\r\n你应该看到一张带有一些基本信息的 NFT 图像：\r\n\r\n![](https://img.learnblockchain.cn/2025/02/25/2-2ce3f9ccb8a5e4000d471d2e5148f29f.png)\r\n\r\n如果你向下滚动，应该会看到一个“Metadata”选项卡（注意：这只会出现在由浏览器发现的具有相关元数据的铸造页面中）。点击它。你应该看到我们 NFT 的链上元数据以 _JSON_ 格式列出：\r\n\r\n![](https://img.learnblockchain.cn/2025/02/25/3-b4ad3a4ea363772322f1757813d1884d.png)\r\n\r\n这看起来应该与我们上述列出的 “链上元数据” 项目类似。Solana Explorer 在“Attributes”选项卡中抽象了一些我们的链外数据（例如特征），但是我们的其他链外元数据在哪儿呢？如果返回元数据标签，找到“uri”字段。如果你还记得的话，这是我们链接外部 _JSON_ 的位置。复制该 [链接](https://bafybeigtouebpxhlaps7f3mlvo7lwortfc7umg7dp2q6uut3muiwarslee.ipfs.nftstorage.link/2446.json) 并在新标签页中打开。\r\n\r\n你应该在浏览器中看到一个 _JSON_ 文件：\r\n\r\n![](https://img.learnblockchain.cn/2025/02/25/4-60ce3ad04291656160f2855c333093ea.png)\r\n\r\n花一点时间浏览数据。你应该能看到我们定义的所有字段。随意找到“image” URI 并在新标签页中打开。那个 [IPFS URI](https://bafybeibn3yeghfcbc7qwpjblsx32uv6so2f4ivvccuobvo5sv66kavrfny.ipfs.nftstorage.link/2446.png?ext=png) 将引导你到原始图像！\r\n\r\n就这样！在我们在 Solana Explorer 上查看的链上数据和通过 “URI” 字段找到的链外数据之间，我们拥有有关该 NFT 的所有数据。\r\n\r\n在结束之前，让我们更仔细地看一下 Metaplex 认证集合和 Candy Machines，并深入了解它们如何影响 NFT 的元数据。\r\n\r\n## 跟踪集合和创作者\r\n\r\n#### Metaplex 认证集合\r\n\r\n在 2022 年，Metaplex 推出了认证集合，以便启用链上验证和 NFT 的分组。认证集合使用户更容易查询某个 NFT 属于哪个集合，找到集合中的所有 NFT，并标准化有关集合的详细信息。交易所和钱包经常使用集合数据来整合 NFT 的文件夹视图。\r\n\r\n通过为链上元数据字段“collection”分配“集合 NFT”的铸造地址的值来创建认证集合。集合 NFT 存在用于存储有关该集合的信息，并成为所有集合元素之间的共同链。此外，除了在 NFT 的元数据的“collection”字段中捕获集合 NFT 的公钥，你还会看到一个布尔字段“verified”。为了标记“verified”字段为 _true_，集合 NFT 的授权者必须签署 NFT，以证明它被允许成为该集合的一部分（来源：[docs.metaplex.com/../certified-collections](https://docs.metaplex.com/programs/token-metadata/certified-collections)）。\r\n\r\n![](https://img.learnblockchain.cn/2025/02/25/5-464fb61f2d4c63e4321f45c823d0ae77.png)\r\n\r\n_来源/更多信息：_[\\*docs.metaplex.com/../certified-collections\\\\*](https://docs.metaplex.com/programs/token-metadata/certified-collections)\r\n\r\n如果我们返回到我们的 Okay Bear 元数据并展开 **collection** 字段，我们可以看到 NFT 已被验证为其一部分 _3saAedkM9o5g1u5DCqsuMZuC4GRqPB4TuMkvSsSVvGQ3_ 集合：\r\n\r\n```\r\n\"collection\":{\r\n    \"verified\":1,\r\n    \"key\":\"3saAedkM9o5g1u5DCqsuMZuC4GRqPB4TuMkvSsSVvGQ3\"\r\n}\r\n```\r\n\r\n简化调试的日志\r\n\r\n你现在可以访问 RPC 端点的日志，帮助你更有效地解决问题。如果你在 RPC 调用中遇到问题，只需查看 QuickNode 仪表板中的日志，以快速识别和解决问题。有关日志历史限制的更多信息，请查看 [我们的定价页面](https://www.quicknode.com/pricing#features)。\r\n\r\n在铸造 NFT 时，可以使用 [Candy Machine](https://www.quicknode.com/guides/solana-development/how-to-deploy-an-nft-collection-on-solana-using-sugar-candy-machine)、[JS SDK](https://www.quicknode.com/guides/solana-development/how-to-mint-an-nft-on-solana-using-typescript) 或通过 Metaplex 的认证集合 [网页工具](https://collections.metaplex.com/) 创建集合。\r\n\r\n如果你仔细查看我们 NFT 的链上元数据，你可能会注意到元数据中有一点奇怪的情况。我们有一个经过验证的创作者，其收入份额为 0%。他们为什么这样做？其实这是相当普遍的——我们将在下一部分讨论。\r\n\r\n#### Candy Machine 铸造\r\n\r\n除了自动认证集合，Candy Machine 还包括另一个便于跟踪与共同铸造相关的 NFT 的功能。在铸造时，它们在创作者列表的第一位置添加并验证一个新的创作者的地址（通常称为“创作者零”，因为它位于 0 索引位置）。新的创作者在历史上是 Candy Machine 的地址，但较新版本使用了 Candy Machine 铸造的凭证 PDA。由于该地址并不是创作者，因此版权费自动设置为 0。由于该地址仅与特定集合/Candy Machine 的铸造相关，并且 Candy Machine 验证（签署）NFT，因此市场和钱包通常使用此作为查找或跟踪 NFT 集合的替代方法。\r\n\r\n> 注意：几个版本的 Candy Machines 使用此方法，几个其他铸造工具也是如此。以下是一些程序 ID：\r\n\r\n- CandyMachine v1: cndyAnrLdpjq1Ssp1z8xxDsB8dxe7u4HL5Nxi2K5WXZ\r\n- CandyMachine v2: cndy3Z4yapfJBmL3ShUp5exZKqR3z33thTzeNMm2gRZ\r\n- CandyMachine v3: CndyV3LdqHUfDLmE5naZjVN8rBZz4tqhdefbAnjHG3JR\r\n- MagicEden Forked CM: CMZYPASGWeTz7RNGHaRJfCq2XQ5pYK6nDvVQxzkH51zb\r\n- LaunchMyNft: ArAA6CZC123yMJLUe4uisBEgvfuw2WEvex9iFmFCYiXv\r\n\r\n_来源：_ [_OpenSea 帮助中心_](https://support.opensea.io/hc/en-us/articles/5661749143571-How-do-I-get-my-Solana-collection-on-OpenSea-)\r\n\r\n让我们再看看我们的熊：\r\n\r\n```\r\n\"creators\":[\r\n    0:{\r\n        \"address\":\"3xVDoLaecZwXXtN59o6T3Gfxwjcgf8Hc9RfoqBn995P9\",\r\n        \"verified\":1,\r\n        \"share\":0\r\n    },\r\n    1:{...},\r\n    ...\r\n]\r\n```\r\n\r\n如你所见，_3xVDoLaecZwXXtN59o6T3Gfxwjcgf8Hc9RfoqBn995P9_ 是第一个创作者。它被标记为经过验证且版权份额为 0%。这通常表明我们的 NFT 是通过 Candy Machine 铸造的。如果我们在 Solana Explorer 中搜索该地址，其实可以看到该地址是 Magic Eden 使用的 Candy Machine 的分支（指定程序 ID: _CMZYPASGWeTz7RNGHaRJfCq2XQ5pYK6nDvVQxzkH51zb_）：\r\n\r\n![](https://img.learnblockchain.cn/2025/02/25/6-4757b1cd296d7ccd0916870d684158f9.png)\r\n\r\n相当不错，对吧？\r\n\r\n## 在 Solana 上构建\r\n\r\n要在 Solana 上构建，你需要一个API端点来与网络连接。你可以使用公共节点或部署和管理自己的基础设施；不过，如果你想要 8 倍更快的响应时间，你可以将繁重的工作交给我们。看看为什么超过 50% 的 Solana 项目选择 QuickNode，并在 [这里](https://www.quicknode.com/signup?utm_source=internal&utm_campaign=guides&utm_content=solana-nft-metadata-deep-dive) 注册一个免费账户。\r\n\r\n只需复制你的 HTTP 提供者链接，你就可以开始构建了！\r\n\r\n![](https://img.learnblockchain.cn/2025/02/25/solana-mainnet-6bbd732b3c3cba30c41fbf9357c517bc.png)\r\n\r\n## 总结\r\n\r\n当你探索 Solana 上的 NFT 时，我们希望你能利用这些技巧来构建更高效、安全的应用程序。如果你有任何问题，请加入我们的 [Discord](https://discord.gg/quicknode)，或通过 [Twitter](https://twitter.com/QuickNode) 与我们联系。\r\n\r\n准备深入探索 Solana NFTs 吗？查看以下指南以继续你的旅程：\r\n\r\n- [如何使用 Typescript 在 Solana 上铸造 NFT](https://www.quicknode.com/guides/solana-development/how-to-mint-an-nft-on-solana-using-typescript)\r\n- [如何使用 Sugar（Candy Machine）在 Solana 上部署 NFT 集合](https://www.quicknode.com/guides/solana-development/how-to-deploy-an-nft-collection-on-solana-using-sugar-candy-machine)\r\n- [如何使用 TypeScript 更新 Solana NFT 元数据](https://www.quicknode.com/guides/solana-development/how-to-update-solana-nft-metadata-using-typescript)\r\n\r\n \r\n\r\n>- 原文链接： [quicknode.com/guides/sol...](https://www.quicknode.com/guides/solana-development/nfts/solana-nft-metadata-deep-dive)\r\n>- 登链社区 AI 助手，为大家转译优秀英文文章，如有翻译不通的地方，还请包涵～"},"author":{"user":"https://learnblockchain.cn/people/25306","address":null},"history":null,"timestamp":1740448141,"version":1}