プラグイン

Attributeプラグイン

Last updated January 31, 2026

Attributesプラグインは、Core AssetsまたはCollections内に直接オンチェーンでキー値ペアを保存します。ゲームステータス、特性、オンチェーンプログラムが読み取る必要のあるデータに最適です。

学べること

  • AssetsとCollectionsにオンチェーン属性を追加
  • キー値ペアの保存と更新
  • オンチェーンプログラムから属性を読み取り
  • ユースケース:ゲームステータス、特性、アクセスレベル

概要

Attributesプラグインは、オンチェーンでキー値文字列ペアを保存するAuthority Managedプラグインです。オフチェーンメタデータとは異なり、これらの属性はSolanaプログラムで読み取り可能で、DASでインデックスされます。

  • 任意の文字列キー値ペアをオンチェーンに保存
  • CPIを介してオンチェーンプログラムで読み取り可能
  • 高速クエリのためにDASで自動インデックス
  • update authorityによって変更可能

対象外

オフチェーンメタデータ属性(URIのJSONに保存)、複雑なデータ型(文字列のみサポート)、不変属性(すべての属性は変更可能)。

クイックスタート

ジャンプ先: Assetに追加 · 属性を更新

  1. Attributesプラグインを追加:addPlugin(umi, { asset, plugin: { type: 'Attributes', attributeList: [...] } })
  2. 各属性は{ key: string, value: string }ペア
  3. updatePlugin()でいつでも更新可能
  4. DASまたはオンチェーンフェッチでクエリ

オンチェーン vs オフチェーン属性

機能オンチェーン(このプラグイン)オフチェーン(JSONメタデータ)
保存場所SolanaアカウントArweave/IPFS
プログラムで読み取り可能✅ はい(CPI)❌ いいえ
DASでインデックス✅ はい✅ はい
変更可能✅ はいストレージによる
コストレント(回収可能)アップロードコスト(一回限り)
最適な用途動的データ、ゲームステータス静的特性、画像
オンチェーン属性を使用するのは、プログラムがデータを読み取る必要がある場合や頻繁に変更される場合です。
オフチェーンメタデータを使用するのは、静的な特性や画像参照の場合です。

一般的なユースケース

  • ゲームキャラクターステータス: 体力、XP、レベル、クラス - ゲームプレイ中に変更されるデータ
  • アクセス制御: ティア、役割、権限 - プログラムが承認のためにチェックするデータ
  • 動的特性: アクションに基づいて特性が変化する進化するNFT
  • ステーキング状態: ステーキングステータス、獲得報酬、ステーキング時間を追跡
  • 実績追跡: バッジ、マイルストーン、完了ステータス
  • レンタル/貸出: レンタル期間、借り手情報、返却日を追跡

対応

MPL Core Asset
MPL Core Collection

引数

引数
attributeListArray<{key: string, value: string}>

AttributeList

属性リストはArray[]で構成され、次にキー値ペア{key: "value"}文字列値ペアのオブジェクトで構成されます。

AttributeList

const attributeList = [
{ key: 'key0', value: 'value0' },
{ key: 'key1', value: 'value1' },
]

AssetへのAttributesプラグインの追加

MPL Core AssetへのAttributeプラグインの追加

import { publicKey } from '@metaplex-foundation/umi'
import { addPlugin } from '@metaplex-foundation/mpl-core'
const asset = publicKey('11111111111111111111111111111111')
await addPlugin(umi, {
asset: asset.publicKey,
plugin: {
type: 'Attributes',
attributeList: [
{ key: 'key0', value: 'value0' },
{ key: 'key1', value: 'value1' },
],
},
}).sendAndConfirm(umi)

AssetのAttributesプラグインの更新

AssetのAttributesプラグインの更新

import { publicKey } from '@metaplex-foundation/umi'
import { updatePlugin } from '@metaplex-foundation/mpl-core'
const assetAddress = publicKey('11111111111111111111111111111111')
await updatePlugin(umi, {
asset: assetAddress,
plugin: {
type: 'Attributes',
attributeList: [
{ key: 'key0', value: 'value0' },
{ key: 'key1', value: 'value1' },
],
},
}).sendAndConfirm(umi)

一般的なエラー

Authority mismatch

プラグインauthority(通常はupdate authority)のみが属性を追加または更新できます。正しいキーペアで署名していることを確認してください。

String too long

属性のキーと値はサイズが制限されています。簡潔に保ちます。

注意事項

  • Authority Managed: update authorityはオーナーの署名なしで追加/更新可能
  • すべての値は文字列 - 必要に応じて数値/ブール値を変換
  • 更新は属性リスト全体を置き換える(部分更新なし)
  • 属性はアカウントサイズとレントコストを増加
  • DASは高速クエリのために属性をインデックス

クイックリファレンス

最小コード

minimal-attributes.ts
import { addPlugin } from '@metaplex-foundation/mpl-core'
await addPlugin(umi, {
asset: assetAddress,
plugin: {
type: 'Attributes',
attributeList: [
{ key: 'level', value: '5' },
{ key: 'class', value: 'warrior' },
],
},
}).sendAndConfirm(umi)

一般的な属性パターン

ユースケース例のキー
ゲームキャラクターlevel, health, xp, class
アクセス制御tier, access_level, role
特性background, eyes, rarity
状態staked, listed, locked

FAQ

オンチェーン属性とオフチェーンメタデータ属性の違いは何ですか?

オンチェーン属性(このプラグイン)はSolanaに保存され、プログラムで読み取り可能です。オフチェーン属性(URIのJSON)はArweave/IPFSに保存され、クライアントでのみ読み取り可能です。

オンチェーンプログラムはこれらの属性を読み取れますか?

はい。CPIを使用してAssetアカウントを取得し、Attributesプラグインデータをデシリアライズします。

属性はDASでインデックスされますか?

はい。DASは属性のキー値ペアを自動的にインデックスして高速クエリを可能にします。

数値やブール値を保存できますか?

値は文字列のみです。必要に応じて変換:{ key: 'level', value: '5' }{ key: 'active', value: 'true' }

単一の属性を更新するにはどうすればよいですか?

個々の属性を更新することはできません。現在のリストを取得し、変更して、完全な新しいリストで更新します。

属性のサイズ制限は何ですか?

ハードリミットはありませんが、属性リストが大きくなるとレントコストが増加します。データを簡潔に保ちます。

オーナーは属性を更新できますか?

いいえ。Attributesプラグインはauthority管理なので、update authorityのみが変更できます(オーナーではない)。

関連プラグイン

用語集

用語定義
Attributesプラグインオンチェーンのキー値ペアを保存するauthority管理プラグイン
attributeList{ key, value }オブジェクトの配列
Authority Managedupdate authorityによって制御されるプラグインタイプ
オンチェーンデータSolanaアカウントに直接保存されるデータ(プログラムで読み取り可能)
DAS属性をインデックスするDigital Asset Standard API