機能

デシリアライゼーション

Last updated January 31, 2026

Core上のデジタルアセットは、ベースアセットデータとプラグインの両方を含む1つのオンチェーンアカウントで構成されています。 つまり、そのデータを読み取るには、デシリアライズの方法を学ぶ必要があります。 JavaScriptでは、単一の関数を使用してベースアセットデータとプラグインの両方をデシリアライズできます。Rustでは、不要な計算使用を避け、スタックオーバーフローを防ぐために、ベースアセットと必要なプラグインのみを別々にデシリアライズする必要があります。

Assetのデシリアライズ

Assetアカウントをデシリアライズすると、以下の情報が返されます:

  • Owner: アセットの所有者
  • Update 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: コレクションとその中のすべてのアセットに対する権限
  • 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