本文介绍了 Solana 上为 SPL token 添加元数据的 Metaplex Token Metadata 标准。
我们已经部署并和 SPL 代币 进行了交互,但是它们都没有名称、符号或任何附加的元数据。相反,我们通过其 mint account 地址来识别每个代币。 与此相对,ERC20 代币包括用于读取代币名称和符号的函数(但值得注意的是,这些只是方便人类阅读的工具,没有任何东西可以阻止不同的代币具有相同的名称或符号)。 ERC721 和 ERC1155 还包括一个 tokenURI
函数,该函数返回一个指向链下元数据的 URI。
但是正如我们目前所见,SPL mint account 没有名称、符号或 URI 字段。
Solana 上有两种主要的解决方案:
Metaplex 代币元数据标准:这是在 Solana 上向代币添加元数据最广泛使用的方法。 当你看到带有图像的 NFT 或带有名称和符号的代币(例如著名的“dog wif hat”模因币)时,它们很可能正在使用此标准。 它通过链接到你的代币的单独元数据 account 来工作。 这与 ERC-721 的工作方式相反 —— 在 ERC-721 中,代币合约指向元数据,但在 Metaplex 中,元数据 account 指向代币 mint。
此图像显示了 SPL 代币 Mint、元数据 Account 和用于添加元数据的链下 JSON 之间的关系
SPL Token-2022: 这是一个与原始 SPL 代币程序不同的程序,它包括对代币元数据和其他高级功能的内置支持。 尽管更现代,但在撰写本文时,它尚未像 Metaplex 标准那样被广泛采用。
今天我们将重点关注 Metaplex 解决方案,并在另一篇文章中介绍 Token-2022。
我们将把对 Metaplex 解决方案的介绍分为两部分:在本文中,我们将介绍 Metaplex 并讨论它如何处理 SPL 代币的元数据。 在下一篇文章中,我们将使用 Anchor 实现 SPL 代币的 Metaplex 元数据。
Metaplex 是一组构建在 Solana 上的开放标准和工具。 这些标准由 Metaplex 基金会维护,并已成为在 Solana 上创建和管理数字资产的主要方式。
实际上:
这就是它的样子:https://explorer.solana.com/address/EKpQGSJtjMFqKZ9KQanSqYXRcF8fBopzLHYxdM65zcjm/metadata
Metaplex 提供了几个工具,但我们现在的重点是 代币元数据程序,它允许你将元数据附加到任何 SPL 代币。
Metaplex 代币元数据程序,地址为 metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s
,用于向 SPL 代币添加额外的元数据,例如名称、符号、图像和描述。 它创建并管理 元数据 account,这些 account 存储与特定 SPL mint 相关的结构化元数据。
就像 SPL 代币程序拥有所有 mint account 和 ATA 一样,Metaplex 代币元数据程序拥有其下的所有元数据 account。 这是一个可执行和可升级的程序。
从高层次上讲,该程序允许我们:
我们将在下面的“Metaplex 代币元数据程序指令”部分中更详细地介绍这些指令。
现在让我们看看这些元数据 account 是如何构建和创建的。
Metaplex 元数据 account 是一个程序派生地址 (PDA),通过 Metaplex 代币元数据程序创建,用于将额外数据附加到 SPL 代币。 PDA 使用三个种子派生:字符串 "metadata"
、token_metadata_program_id
和 mint_account_address
。
只有 mint 地址不同;"metadata"
字符串和程序 ID 是固定的。 这确保了只能为给定的 mint account 派生一个元数据 account。
虽然元数据 account 存储关于代币的基本链上信息,但它也可以保存指向链下资源的 URI。 例如,NFT 的元数据 account 可能会在链上存储代币名称和符号,而 URI 指向一个 JSON 文件,其中包含存储在 IPFS、Arweave 或 Web 服务器上的完整描述、图像和其他属性。
下图显示了 Metaplex 代币元数据程序和元数据 account 之间的关系。
下图显示了与我们讨论元数据 account 相关的字段,如果它们还没有完全理解,请不要担心,我们稍后会解释它们。
![一个表格,显示了元数据 acco...
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!