功能
反序列化
Last updated January 31, 2026
Core上的数字资产由一个链上账户组成,其中包含基础资产数据和插件。 这意味着如果我们想读取该数据,我们需要学习如何反序列化它。 在Javascript中,我们可以使用单个函数反序列化基础资产数据和插件。在Rust中,我们应该分别反序列化基础资产和仅需要的插件,以避免不必要的计算使用并防止堆栈溢出。
反序列化Asset
反序列化Asset账户将返回以下信息:
- Owner:资产的所有者
- Update Authority:资产的authority,或者如果它是收藏品的一部分则为收藏品地址
- Name:资产名称
- Uri:资产链下元数据的uri
反序列化Asset
const accountData = await umi.rpc.getAccount(
publicKey('11111111111111111111111111111111')
)
if (!accountData.exists) throw 'Account does not exist'
const assetV1 = deserializeAssetV1(accountData)
console.log({ assetData })
反序列化Collection
反序列化Collection账户将返回以下信息:
- Update Authority:收藏品及其中所有资产的authority
- Name:收藏品名称
- Uri:收藏品链下元数据的uri
- Num Minted:收藏品中铸造的资产数量
- Current size:当前收藏品中的资产数量
反序列化Collection
const accountData = await umi.rpc.getAccount(
publicKey('11111111111111111111111111111111')
)
if (!accountData.exists) throw 'Account does not exist'
const collectionV1 = deserializeCollectionV1(accountData)
console.log({ assetData })
反序列化插件
如前所述,
- 使用Javascript,我们可以将整个资产反序列化为单个变量,在本节中,我们将了解如何访问与插件相关的特定数据。
- 使用Rust时,我们需要反序列化特定的插件数据,以避免由于账户大小而导致的堆栈违规。
反序列化插件
const assetV1 = await fetchAsset(
umi,
publicKey('11111111111111111111111111111111')
)
// 仅保存Attributes插件反序列化数据的示例
let attributes_plugin = assetV1.attributes
// 仅保存Royalties插件反序列化数据的示例
let royalties_plugin = assetV1.royalties
