简介

MPL Core Asset

Last updated January 31, 2026

本页说明 Core Asset 是什么 以及它与传统 Solana NFT 的区别。了解账户结构、收藏关系和元数据存储。

核心概念

  • 单账户模型: Core Asset 在 Asset 账户本身中存储所有权
  • 无需代币账户: 与 SPL 代币不同,Core 不需要 Associated Token Accounts
  • 收藏成员资格: Asset 可以通过 updateAuthority 字段属于 Collection
  • 链下元数据: URI 指向 JSON 元数据(建议使用 Arweave/IPFS 等永久存储)

摘要

Core Asset 是代表 NFT 的单个 Solana 账户。与 Token Metadata(需要 3 个以上账户)不同,Core 将所有重要数据存储在一个账户中:所有者、名称、URI 和 update authority。这使得 Core Asset 成本降低约 80% 且更易于使用。

概述

Solana 的 Token 程序 等现有 Asset 程序不同,Metaplex Core 和 Core Asset(有时称为 Core NFT Asset)不依赖于多个账户,如 Associated Token Accounts。相反,Core Asset 将钱包和 Asset 本身的"mint"账户之间的关系存储在内部。

Core Asset 账户

Core Asset 账户代表数字资产的最小数据。此结构为链上所有权提供了一个无主见的区块链原语。

我的 Asset 在 Collection 中吗?

MPL Core Asset 可以属于 Collection。MPL Core Asset 数据中的 updateAuthority 字段有两个作用:报告 Asset 的 update authority,或提供其所属的 MPL Core Collection 的 publicKey。 访问 updateAuthority 字段时,无论是直接通过 Asset 还是通过 MPL Core Asset 的 collectionAddress 辅助函数,返回结果将是以下之一: Collection Asset 属于该地址的 Collection。

创建 Asset

{
__kind: 'Collection'
fields: [PublicKey]
}
import { fetchAssetV1 } from '@metaplex-foundation/mpl-core'
const asset = await fetchAssetV1(umi, assetAddress.publicKey)
const collectionId = collectionAddress(asset)
console.log({collectionId})
console.log({asset})
// 日志
collection: '2222222222222222222222222222222'
asset: {
key: AssetV1,
owner: "11111111111111111111111111111111",
updateAuthority: {
type: 'Collection',
address: '2222222222222222222222222222222'
},
name: "My Core Asset",
uri: "https://example.com/metadata.json",
...
}

Address Asset 设置了 update authority 但不属于任何 Collection。

创建 Asset

import { fetchAssetV1 } from '@metaplex-foundation/mpl-core'
const asset = await fetchAssetV1(umi, assetAddress.publicKey)
const collectionId = collectionAddress(asset)
console.log({collectionId})
console.log({asset})
// 日志
collectionId: undefined
asset: {
key: AssetV1,
owner: "11111111111111111111111111111111",
updateAuthority: {
type: 'Address',
address: '2222222222222222222222222222222'
}
name: "My Core Asset",
uri: "https://example.com/metadata.json",
...
}

None Asset 没有设置 update authority。

创建 Asset

import { fetchAssetV1 } from '@metaplex-foundation/mpl-core'
const asset = await fetchAssetV1(umi, assetAddress.publicKey)
const collectionId = collectionAddress(asset)
console.log({collectionId})
console.log({asset})
// 日志
collectionId: undefined
asset: {
key: AssetV1,
owner: "11111111111111111111111111111111",
updateAuthority: {
type: 'None',
},
name: "My Core Asset",
uri: "https://example.com/metadata.json",
}

链下元数据

Asset 账户的一个重要属性是指向链下 JSON 文件的 URI 属性。这用于安全地提供额外数据,同时不受链上数据存储费用的限制。该 JSON 文件 遵循特定标准,任何人都可以用来查找代币的有用信息。 链下元数据可以存储在任何可公开访问的位置。托管 JSON 文件的常见位置包括:

  • Arweave
  • NFT.Storage/IPFS
  • Amazon AWS S3/Google Cloud
FieldTypeDescription
namestringName of the asset.
descriptionstringDescription of the asset.
imagestringURI pointing to the asset's logo.
animation_urlstringURI pointing to the asset's animation.
external_urlstringURI pointing to an external URL defining the asset — e.g. the game's main site.
attributesarrayArray of attributes defining the characteristics of the asset.
  • trait_type (string): The type of attribute.
  • value (string): The value for that attribute.
propertiesobjectAdditional properties that define the asset.
  • files (array): Additional files to include with the asset.
    • uri (string): The file's URI.
    • type (string): The file's type. E.g. image/png, video/mp4, etc.
    • cdn (boolean, optional): Whether the file is served from a CDN.
  • category (string): A media category for the asset. E.g. video, image, etc.

请注意,此 JSON 文件可以使用 Arweave 等永久存储解决方案存储,以确保无法更新。此外,可以将 Update Authority 字段设置为 None 使其不可变,从而禁止更改 URIName 属性。使用这种组合,我们可以保证链下 JSON 文件的不可变性。

FAQ

Core 与 Token Metadata NFT 有什么区别?

Token Metadata 需要 3 个以上的账户(mint、metadata、token account)。Core 使用单个账户将所有者和元数据存储在一起。这使得 Core 成本降低约 80% 且创建速度更快。

链上和链下分别存储什么数据?

链上: 所有者、名称、URI、update authority、插件。链下(URI 位置): 描述、图像、属性、动画 URL 和其他扩展元数据。

可以将 Token Metadata NFT 转换为 Core 吗?

不能直接转换。Core 和 Token Metadata 是不同的标准。您需要销毁旧 NFT 并铸造新的 Core Asset。有一些迁移工具可以帮助完成此过程。

Core 与现有的 NFT 市场兼容吗?

大多数主要的 Solana 市场都支持 Core Asset。请查看 Ecosystem Support 获取兼容平台的当前列表。

如果链下元数据离线会怎样?

Asset 仍然以名称和 URI 存在于链上,但图像和链下属性将无法访问。链上属性(通过 Attributes 插件)仍可访问。使用永久存储(Arweave、带固定的 IPFS)来防止这种情况。

术语表

术语定义
Asset代表 NFT 的单个 Core 账户
Owner当前拥有 Asset 的钱包
Update Authority被授权修改 Asset 元数据的账户
URI指向链下 JSON 元数据的 URL
Collection将相关 Asset 分组的 Core 账户
Key标识账户类型的账户鉴别器
seq用于压缩索引的序列号
Previous
概述