機能
Assetの作成
Last updated January 31, 2026
このガイドでは、Metaplex Core SDKを使用してSolanaでCore Asset(NFT)を作成する方法を説明します。オフチェーンメタデータをアップロードし、オンチェーンAssetアカウントを作成し、オプションでCollectionに追加したりプラグインを添付したりします。
構築するもの
以下を含むCore Asset:
- Arweaveに保存されたオフチェーンメタデータ(名前、画像、属性)
- 所有権とメタデータURIを持つオンチェーンAssetアカウント
- オプション:Collectionメンバーシップ
- オプション:プラグイン(ロイヤリティ、フリーズ、属性)
概要
メタデータJSONを分散ストレージにアップロードし、URIでcreate()を呼び出してCore Assetを作成します。Assetはスタンドアロンでミントするか、Collectionにミントでき、作成時にプラグインを含めることができます。
- メタデータJSONをArweave/IPFSにアップロードし、URIを取得
- name、URI、オプションのプラグインで
create()を呼び出す - コレクションの場合:
collectionパラメータを渡す - アセットあたり約0.0029 SOLのコスト
対象外
Token Metadata NFT(mpl-token-metadataを使用)、圧縮NFT(Bubblegumを使用)、ファンジブルトークン(SPL Tokenを使用)、NFT移行。
クイックスタート
ジャンプ先: メタデータをアップロード · Assetを作成 · Collectionと共に · プラグインと共に
- インストール:
npm install @metaplex-foundation/mpl-core @metaplex-foundation/umi - メタデータJSONをアップロードしてURIを取得
create(umi, { asset, name, uri })を呼び出す- core.metaplex.comで確認
前提条件
- 署名者とRPC接続で構成されたUmi
- トランザクション手数料用のSOL(アセットあたり約0.003 SOL)
- アップロード準備ができたメタデータJSON(名前、画像、属性)
作成プロセス
- オフチェーンデータをアップロード。 名前、説明、画像URL、属性を含むJSONファイルを保存します。ファイルは公開URI経由でアクセス可能である必要があります。
- オンチェーンAssetアカウントを作成。 メタデータURIで
create命令を呼び出してAssetをミントします。
オフチェーンデータのアップロード
任意のストレージサービス(Arweave、IPFS、AWS)を使用してメタデータJSONをアップロードします。Umiは一般的なサービス用のアップローダープラグインを提供します。利用可能なすべてのメタデータフィールドについてはJSON Schemaを参照してください。
import { irysUploader } from '@metaplex-foundation/umi-uploader-irys'
// アップローダーを構成(Irys、AWSなど)
umi.use(irysUploader())
// 最初に画像をアップロード
const [imageUri] = await umi.uploader.upload([imageFile])
// メタデータJSONをアップロード
const uri = await umi.uploader.uploadJson({
name: 'My NFT',
description: 'This is my NFT',
image: imageUri,
attributes: [
{ trait_type: 'Background', value: 'Blue' },
],
})
URIを取得したら、Assetを作成できます。
Assetを作成
create命令を使用して新しいCore Assetをミントします。
1import { createUmi } from '@metaplex-foundation/umi-bundle-defaults'
2import { create } from '@metaplex-foundation/mpl-core'
3import { mplCore } from '@metaplex-foundation/mpl-core'
4
5// Initialize UMI
6const umi = createUmi('https://api.devnet.solana.com')
7 .use(mplCore())
8
9// Create a new NFT asset
10const asset = await create(umi, {
11 name: 'My NFT',
12 uri: 'https://example.com/metadata.json'
13}).sendAndConfirm(umi)
14
15console.log('Asset created:', asset.publicKey)
CollectionにAssetを作成
Collectionの一部としてAssetを作成するには、collectionパラメータを渡します。Collectionは既に存在している必要があります。
1import { createUmi } from '@metaplex-foundation/umi-bundle-defaults'
2import { create, fetchCollection } from '@metaplex-foundation/mpl-core'
3import { mplCore } from '@metaplex-foundation/mpl-core'
4import { generateSigner, publicKey } from '@metaplex-foundation/umi'
5
6// Initialize UMI
7const umi = createUmi('https://api.devnet.solana.com')
8 .use(mplCore())
9
10const collectionAddress = publicKey('YOUR_COLLECTION_ADDRESS')
11
12// Fetch the existing collection
13const collection = await fetchCollection(umi, collectionAddress)
14
15// Generate a new keypair for the asset
16const assetSigner = generateSigner(umi)
17
18// Create asset in the collection
19await create(umi, {
20 asset: assetSigner,
21 collection,
22 name: 'Collection Item #1',
23 uri: 'https://example.com/item1.json',
24}).sendAndConfirm(umi)
25
26console.log('Asset created in collection:', assetSigner.publicKey)
Collectionの作成についてはCollectionを参照してください。
プラグイン付きでAssetを作成
plugins配列で渡すことで、作成時にプラグインを追加します。この例ではRoyaltiesプラグインを追加します:
1import { createUmi } from '@metaplex-foundation/umi-bundle-defaults'
2import { create, ruleSet } from '@metaplex-foundation/mpl-core'
3import { mplCore } from '@metaplex-foundation/mpl-core'
4import { generateSigner, publicKey } from '@metaplex-foundation/umi'
5
6// Initialize UMI
7const umi = createUmi('https://api.devnet.solana.com')
8 .use(mplCore())
9
10const creator = publicKey('YOUR_CREATOR_ADDRESS')
11
12// Generate a new keypair for the asset
13const assetSigner = generateSigner(umi)
14
15// Create asset with Royalties plugin
16await create(umi, {
17 asset: assetSigner,
18 name: 'NFT with Royalties',
19 uri: 'https://example.com/metadata.json',
20 plugins: [
21 {
22 type: 'Royalties',
23 basisPoints: 500, // 5%
24 creators: [
25 { address: creator, percentage: 100 },
26 ],
27 ruleSet: ruleSet('None'),
28 },
29 ],
30}).sendAndConfirm(umi)
31
32console.log('Asset created with plugins:', assetSigner.publicKey)
一般的なプラグイン
よく使用されるプラグインをいくつか紹介します。完全なリストについてはプラグイン概要を参照してください。
- Royalties - クリエイターロイヤリティの強制
- Freeze Delegate - フリーズ/解除を許可
- Burn Delegate - バーンを許可
- Transfer Delegate - 転送を許可
- Update Delegate - メタデータ更新を許可
- Attributes - オンチェーンキー/バリューデータ 完全なリストについてはプラグイン概要を参照してください。
よくあるエラー
Asset account already exists
アセットキーペアが既に使用されています。新しい署名者を生成してください:
const assetSigner = generateSigner(umi) // 一意である必要があります
Collection not found
コレクションアドレスが存在しないか、有効なCore Collectionではありません。アドレスを確認し、最初にCollectionを作成したことを確認してください。
Insufficient funds
支払者ウォレットにはレント用に約0.003 SOLが必要です。以下で資金を追加:
solana airdrop 1 <WALLET_ADDRESS> --url devnet
注意事項
assetパラメータは新しいキーペアである必要があります - 既存のアカウントを再利用できません- 別の所有者にミントする場合は、
ownerパラメータを渡します - 作成時に追加されたプラグインは、後から追加するよりも安価です(1トランザクション対2トランザクション)
- すぐにフェッチするスクリプトでアセットを作成する場合は
commitment: 'finalized'を使用
クイックリファレンス
プログラムID
| ネットワーク | アドレス |
|---|---|
| Mainnet | CoREENxT6tW1HoK8ypY1SxRMZTcVPm7R94rH4PZNhX7d |
| Devnet | CoREENxT6tW1HoK8ypY1SxRMZTcVPm7R94rH4PZNhX7d |
最小コード
import { generateSigner } from '@metaplex-foundation/umi'
import { create } from '@metaplex-foundation/mpl-core'
const asset = generateSigner(umi)
await create(umi, { asset, name: 'My NFT', uri: 'https://...' }).sendAndConfirm(umi)
コスト内訳
| 項目 | コスト |
|---|---|
| Assetアカウントレント | 約0.0029 SOL |
| トランザクション手数料 | 約0.000005 SOL |
| 合計 | 約0.003 SOL |
FAQ
Core AssetとToken Metadata NFTの違いは何ですか?
Core Assetは単一アカウントを使用し、コストが約80%削減されます。Token Metadataは3つ以上のアカウント(mint、metadata、token)を使用します。新規プロジェクトにはCoreが推奨されます。
1つのトランザクションで複数のアセットを作成できますか?
いいえ。各create命令は1つのアセットを作成します。大量ミントにはCore Candy Machineまたはバッチトランザクションを使用してください。
最初にCollectionを作成する必要がありますか?
いいえ。AssetはCollectionなしで存在できます。ただし、Collectionはコレクションレベルのロイヤリティと操作を可能にします。
別のウォレットにミントするにはどうすればよいですか?
ownerパラメータを渡します:
await create(umi, { asset, name, uri, owner: recipientAddress })
どのメタデータ形式を使用すべきですか?
name、description、image、およびオプションのattributes配列を含む標準NFTメタデータ形式を使用します。JSON Schemaを参照してください。
用語集
| 用語 | 定義 |
|---|---|
| Asset | NFTを表すCoreオンチェーンアカウント |
| URI | オフチェーンメタデータJSONを指すURL |
| 署名者 | トランザクションに署名するキーペア(アセットは作成時に署名者である必要があります) |
| Collection | 関連するAssetをグループ化するCoreアカウント |
| Plugin | Assetに動作を追加するモジュラー拡張機能 |
| レント | Solana上でアカウントを維持するために必要なSOL |
