mcpField
M
metaplex

metaplex

github.com/sendaifun開発131196 回インストール14 週間前に更新
リポジトリ

metaplex について

metaplex は、デジタルアセット、NFT、トークンを開発する Solana 開発者向けの Metaplex Protocol ガイドです。複数の規格とツールを扱い、圧縮 NFT やコレクションのミントからトークンローンチまでを支援します。

主な機能

  1. 01Core と Token Metadata の NFT 作成
  2. 02Bubblegum による圧縮 NFT の作成
  3. 03Candy Machine による NFT コレクションのミント管理
  4. 04Genesis によるトークンローンチの構築
  5. 05DAS API によるデジタルアセットの取得

活用シーン

  1. 01Solana アプリ向け NFT の作成と管理
  2. 02圧縮形式での大規模デジタルアセットのミント
  3. 03アクセス条件付き NFT コレクションローンチの設定
  4. 04トークンローンチの構築と規格横断のアセット照会

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/sendaifun/skills --skill metaplex

インストール後、Claude Code で/metaplexを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

docs/
troubleshooting.md
examples/bubblegum/
compressed-nfts.ts
examples/candy-machine/
launch-collection.ts
examples/core/
create-nft.ts
examples/genesis/
token-launch.ts
examples/token-metadata/
create-nft.ts
resources/
program-ids.md
protocol-fees.md
sdk-packages.md
templates/
metaplex-client.ts

詳細

Metaplex Protocol 開発ガイド

Solana 上で Metaplex Protocol を使用して NFT、デジタル資産、トークンローンチを構築するための包括的なガイドです。Metaplex Protocol は、Solana の NFT とトークンの 99%を支える業界標準です。

Metaplex とは?

Metaplex は Solana を代表するトークン化プロトコルで、デジタル資産の作成、販売、管理に必要なスマートコントラクトとツールを提供します。シンプルな NFT から数十億個の圧縮コレクション、公正なトークンローンチからハイブリッド型のトークン/NFT システムまで、Metaplex はそのためのインフラを提供します。

主な統計
  • 99% の Solana NFT が Metaplex の標準を使用
  • 100 億ドル以上 の取引額を実現
  • 78% の Solana NFT が Candy Machine を通じてミント(2022 年時点)
  • 最小限のコストで 数十億個 の圧縮 NFT を作成可能

概要

Metaplex はさまざまなユースケースに対応する複数の製品を提供します。

NFT 標準
製品説明ミントあたりのコスト
Core次世代の単一アカウント NFT 標準約 0.0029 SOL
Token MetadataPDA を使用する従来の NFT 標準約 0.022 SOL
Bubblegum v2圧縮 NFT(cNFT)約 0.00009 SOL
ローンチと配布
製品説明
Candy Machineガード付き NFT コレクションのミント
Core Candy MachineCore 資産向けの Candy Machine
Genesisトークン生成イベント(TGE)プラットフォーム
ユーティリティ
製品説明
MPL-Hybrid代替可能トークンと非代替性トークンを交換
Inscriptionsオンチェーンデータストレージ(最大 10MB)
DAS APIデジタル資産を取得するための統合 API
UmiSolana クライアント向け JavaScript フレームワーク

プログラム ID

主要プログラム(Mainnet および Devnet)
プログラムアドレス
MPL CoreCoREENxT6tW1HoK8ypY1SxRMZTcVPm7R94rH4PZNhX7d
Token MetadatametaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s
BubblegumBGUMAp9Gq7iTEuizy4pqaxsTyUCBK68MDfK752saRPUY
Candy Machine V3CndyV3LdqHUfDLmE5naZjVN8rBZz4tqhdefbAnjHG3JR
Candy GuardGuard1JwRhJkVH6XZhzoYxeBVQe872VH6QggF4BWmS9g
Core Candy MachineCMACYFENjoBMHzapRXyo1JZkVS6EtaDDzkjMrmQLvr4J
Core Candy GuardCMAGAKJ67e9hRZgfC5SFTbZH8MgEmtqazKXjmkaJjWTJ
MPL HybridMPL4o4wMzndgh8T1NVDxELQCj5UQfYTYEkabX3wNKtb
Inscription1NSCRfGeyo7wPUazGbaPBUsTM49e1k2aXewHGARfzSo
SPL プログラム(必須)
プログラムアドレス
SPL TokenTokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA
Token 2022TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb
Associated TokenATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL
Account CompressioncmtDvXumGCrqC1Age74AVPhSRVXJMd8PJS91L8KbNCK

クイックスタート

インストール
# Core NFTs (Recommended for new projects)
npm install @metaplex-foundation/mpl-core \
  @metaplex-foundation/umi \
  @metaplex-foundation/umi-bundle-defaults

# Token Metadata NFTs
npm install @metaplex-foundation/mpl-token-metadata \
  @metaplex-foundation/umi \
  @metaplex-foundation/umi-bundle-defaults

# Compressed NFTs (Bubblegum)
npm install @metaplex-foundation/mpl-bubblegum \
  @metaplex-foundation/umi \
  @metaplex-foundation/umi-bundle-defaults

# Candy Machine
npm install @metaplex-foundation/mpl-candy-machine \
  @metaplex-foundation/umi \
  @metaplex-foundation/umi-bundle-defaults

# Core Candy Machine
npm install @metaplex-foundation/mpl-core-candy-machine \
  @metaplex-foundation/umi \
  @metaplex-foundation/umi-bundle-defaults

# Genesis (Token Launches)
npm install @metaplex-foundation/mpl-genesis \
  @metaplex-foundation/umi \
  @metaplex-foundation/umi-bundle-defaults

# File uploads (Arweave via Irys)
npm install @metaplex-foundation/umi-uploader-irys
Umi のセットアップ

すべての Metaplex SDK は、モジュール式の Solana フレームワークである Umi を使用します。

import { createUmi } from '@metaplex-foundation/umi-bundle-defaults';
import { mplCore } from '@metaplex-foundation/mpl-core';
import {
  keypairIdentity,
  generateSigner
} from '@metaplex-foundation/umi';

// Create Umi instance
const umi = createUmi('https://api.mainnet-beta.solana.com')
  .use(mplCore());

// Option 1: Use generated keypair
const signer = generateSigner(umi);
umi.use(keypairIdentity(signer));

// Option 2: Use existing keypair
import { createSignerFromKeypair } from '@metaplex-foundation/umi';
const keypair = umi.eddsa.createKeypairFromSecretKey(secretKeyBytes);
const signer = createSignerFromKeypair(umi, keypair);
umi.use(keypairIdentity(signer));

// Option 3: Use wallet adapter (browser)
import { walletAdapterIdentity } from '@metaplex-foundation/umi-signer-wallet-adapters';
umi.use(walletAdapterIdentity(wallet));

MPL Core(推奨)

単一アカウント設計、低コスト、組み込みプラグインを備えた次世代 NFT 標準です。

Core を選ぶ理由
機能CoreToken Metadata
NFT あたりのアカウント数14 以上
ミントコスト約 0.0029 SOL約 0.022 SOL
コンピュートユニット約 17,000約 205,000
ロイヤリティの強制はいいいえ
プラグインシステムはいいいえ
Core NFT の作成
import { createUmi } from '@metaplex-foundation/umi-bundle-defaults';
import {
  mplCore,
  create,
  fetchAsset
} from '@metaplex-foundation/mpl-core';
import {
  generateSigner,
  keypairIdentity
} from '@metaplex-foundation/umi';
import { irysUploader } from '@metaplex-foundation/umi-uploader-irys';

// Setup
const umi = createUmi('https://api.mainnet-beta.solana.com')
  .use(mplCore())
  .use(irysUploader());

// Upload metadata
const metadata = {
  name: 'My Core NFT',
  description: 'A next-gen NFT on Solana',
  image: 'https://arweave.net/your-image',
  attributes: [
    { trait_type: 'Background', value: 'Blue' },
    { trait_type: 'Rarity', value: 'Legendary' }
  ]
};
const metadataUri = await umi.uploader.uploadJson(metadata);

// Create NFT
const asset = generateSigner(umi);
await create(umi, {
  asset,
  name: 'My Core NFT',
  uri: metadataUri,
}).sendAndConfirm(umi);

console.log('Asset created:', asset.publicKey);

// Fetch the asset
const fetchedAsset = await fetchAsset(umi, asset.publicKey);
console.log('Asset data:', fetchedAsset);
プラグインを使った Core
import {
  create,
  ruleSet,
  plugin,
} from '@metaplex-foundation/mpl-core';

// Create with royalty enforcement
await create(umi, {
  asset,
  name: 'Royalty Enforced NFT',
  uri: metadataUri,
  plugins: [
    {
      type: 'Royalties',
      basisPoints: 500, // 5%
      creators: [
        { address: creatorAddress, percentage: 100 }
      ],
      ruleSet: ruleSet('None'), // or 'ProgramAllowList', 'ProgramDenyList'
    },
    {
      type: 'FreezeDelegate',
      frozen: false,
      authority: { type: 'Owner' },
    },
    {
      type: 'TransferDelegate',
      authority: { type: 'Owner' },
    },
  ],
}).sendAndConfirm(umi);
Core コレクション
import {
  createCollection,
  create,
  fetchCollection,
} from '@metaplex-foundation/mpl-core';

// Create collection
const collection = generateSigner(umi);
await createCollection(umi, {
  collection,
  name: 'My Collection',
  uri: collectionUri,
}).sendAndConfirm(umi);

// Create asset in collection
const asset = generateSigner(umi);
await create(umi, {
  asset,
  name: 'Collection Item #1',
  uri: assetUri,
  collection: collection.publicKey,
}).sendAndConfirm(umi);
転送とバーン
import { transfer, burn } from '@metaplex-foundation/mpl-core';

// Transfer
await transfer(umi, {
  asset: assetPublicKey,
  newOwner: recipientPublicKey,
}).sendAndConfirm(umi);

// Burn
await burn(umi, {
  asset: assetPublicKey,
}).sendAndConfirm(umi);

Token Metadata

Program Derived Address(PDA)を使用する、従来の Solana NFT 標準です。

Token Metadata を使った NFT の作成
import { createUmi } from '@metaplex-foundation/umi-bundle-defaults';
import {
  mplTokenMetadata,
  createNft,
  fetchDigitalAsset,
} from '@metaplex-foundation/mpl-token-metadata';
import { generateSigner, percentAmount } from '@metaplex-foundation/umi';

const umi = createUmi('https://api.mainnet-beta.solana.com')
  .use(mplTokenMetadata());

// Create NFT
const mint = generateSigner(umi);
await createNft(umi, {
  mint,
  name: 'My NFT',
  symbol: 'MNFT',
  uri: 'https://arweave.net/metadata.json',
  sellerFeeBasisPoints: percentAmount(5.5), // 5.5% royalty
  creators: [
    { address: umi.identity.publicKey, share: 100, verified: true }
  ],
}).sendAndConfirm(umi);

// Fetch NFT
const asset = await fetchDigitalAsset(umi, mint.publicKey);
console.log(asset);
プログラマブル NFT(pNFT)の作成
import {
  createProgrammableNft,
  TokenStandard,
} from '@metaplex-foundation/mpl-token-metadata';

// pNFTs have enforced royalties
const mint = generateSigner(umi);
await createProgrammableNft(umi, {
  mint,
  name: 'My pNFT',
  uri: metadataUri,
  sellerFeeBasisPoints: percentAmount(10), // 10% royalty
  ruleSet: ruleSetPublicKey, // Optional: custom rules
}).sendAndConfirm(umi);
メタデータ付き代替可能トークンの作成
import {
  createFungible,
  mintV1,
  TokenStandard,
} from '@metaplex-foundation/mpl-token-metadata';

// Create fungible token
const mint = generateSigner(umi);
await createFungible(umi, {
  mint,
  name: 'My Token',
  symbol: 'MTK',
  uri: 'https://arweave.net/token-metadata.json',
  sellerFeeBasisPoints: percentAmount(0),
  decimals: 9,
}).sendAndConfirm(umi);

// Mint tokens
await mintV1(umi, {
  mint: mint.publicKey,
  amount: 1_000_000_000n, // 1 token with 9 decimals
  tokenOwner: recipientPublicKey,
  tokenStandard: TokenStandard.Fungible,
}).sendAndConfirm(umi);
メタデータの更新
import { updateV1 } from '@metaplex-foundation/mpl-token-metadata';

await updateV1(umi, {
  mint: mintPublicKey,
  data: {
    name: 'Updated Name',
    symbol: 'UPDT',
    uri: 'https://arweave.net/new-metadata.json',
    sellerFeeBasisPoints: 500,
    creators: null, // Keep existing
  },
}).sendAndConfirm(umi);

Bubblegum(圧縮 NFT)

Merkle ツリー圧縮を使用して、最小限のコストで数十億個の NFT を作成します。

コスト比較
コレクションサイズBubblegum のコストToken Metadata のコスト
10,000~0.27 SOL~220 SOL
1,000,000~50 SOL~22,000 SOL
1,000,000,000~5,007 SOL~22,000,000 SOL
Merkle Tree の作成
import { createUmi } from '@metaplex-foundation/umi-bundle-defaults';
import {
  mplBubblegum,
  createTree,
} from '@metaplex-foundation/mpl-bubblegum';
import { generateSigner } from '@metaplex-foundation/umi';

const umi = createUmi('https://api.mainnet-beta.solana.com')
  .use(mplBubblegum());

// Create tree (max depth determines capacity)
// maxDepth 14 = 16,384 NFTs, maxDepth 20 = 1,048,576 NFTs
const merkleTree = generateSigner(umi);
await createTree(umi, {
  merkleTree,
  maxDepth: 14,
  maxBufferSize: 64,
}).sendAndConfirm(umi);

console.log('Tree created:', merkleTree.publicKey);
圧縮 NFT のミント
import { mintV1 } from '@metaplex-foundation/mpl-bubblegum';

await mintV1(umi, {
  leafOwner: recipientPublicKey,
  merkleTree: merkleTreePublicKey,
  metadata: {
    name: 'Compressed NFT #1',
    symbol: 'CNFT',
    uri: 'https://arweave.net/metadata.json',
    sellerFeeBasisPoints: 500,
    collection: { key: collectionMint, verified: false },
    creators: [
      { address: umi.identity.publicKey, share: 100, verified: true }
    ],
  },
}).sendAndConfirm(umi);
コレクションへのミント
import { mintToCollectionV1 } from '@metaplex-foundation/mpl-bubblegum';

await mintToCollectionV1(umi, {
  leafOwner: recipientPublicKey,
  merkleTree: merkleTreePublicKey,
  collectionMint: collectionMintPublicKey,
  metadata: {
    name: 'Collection cNFT #1',
    symbol: 'CCNFT',
    uri: metadataUri,
    sellerFeeBasisPoints: 500,
    creators: [
      { address: umi.identity.publicKey, share: 100, verified: true }
    ],
  },
}).sendAndConfirm(umi);
圧縮 NFT の転送
import { transfer } from '@metaplex-foundation/mpl-bubblegum';
import { getAssetWithProof } from '@metaplex-foundation/mpl-bubblegum';

// Get asset with proof from DAS API
const assetWithProof = await getAssetWithProof(umi, assetId);

await transfer(umi, {
  ...assetWithProof,
  leafOwner: currentOwner,
  newLeafOwner: newOwner,
}).sendAndConfirm(umi);
通常の NFT への展開
import { decompressV1 } from '@metaplex-foundation/mpl-bubblegum';

// Decompress creates on-chain Token Metadata NFT
await decompressV1(umi, {
  ...assetWithProof,
  mint: mintSigner,
}).sendAndConfirm(umi);

Candy Machine

公平なコレクションのローンチに適した、主要な NFT ミントシステムです。

Candy Machine の作成
import { createUmi } from '@metaplex-foundation/umi-bundle-defaults';
import {
  mplCandyMachine,
  create,
  addConfigLines,
} from '@metaplex-foundation/mpl-candy-machine';
import { generateSigner, some, sol, dateTime } from '@metaplex-foundation/umi';

const umi = createUmi('https://api.mainnet-beta.solana.com')
  .use(mplCandyMachine());

// Create candy machine
const candyMachine = generateSigner(umi);
const collection = generateSigner(umi);

await create(umi, {
  candyMachine,
  collection: collection.publicKey,
  collectionUpdateAuthority: umi.identity,
  itemsAvailable: 1000,
  sellerFeeBasisPoints: percentAmount(5),
  creators: [
    { address: umi.identity.publicKey, percentageShare: 100, verified: true }
  ],
  configLineSettings: some({
    prefixName: 'My NFT #',
    nameLength: 4,
    prefixUri: 'https://arweave.net/',
    uriLength: 43,
    isSequential: false,
  }),
  guards: {
    botTax: some({ lamports: sol(0.01), lastInstruction: true }),
    solPayment: some({ lamports: sol(0.5), destination: treasury }),
    startDate: some({ date: dateTime('2024-01-01T00:00:00Z') }),
    mintLimit: some({ id: 1, limit: 3 }),
  },
}).sendAndConfirm(umi);
Candy Machine へのアイテムの追加
await addConfigLines(umi, {
  candyMachine: candyMachine.publicKey,
  index: 0,
  configLines: [
    { name: '0001', uri: 'abc123...' },
    { name: '0002', uri: 'def456...' },
    { name: '0003', uri: 'ghi789...' },
  ],
}).sendAndConfirm(umi);
Candy Machine からのミント
import {
  mintV1,
  fetchCandyMachine,
  fetchCandyGuard,
} from '@metaplex-foundation/mpl-candy-machine';

const candyMachine = await fetchCandyMachine(umi, candyMachinePublicKey);
const candyGuard = await fetchCandyGuard(umi, candyMachine.mintAuthority);

const nftMint = generateSigner(umi);

await mintV1(umi, {
  candyMachine: candyMachine.publicKey,
  candyGuard: candyGuard.publicKey,
  nftMint,
  collectionMint: candyMachine.collectionMint,
  collectionUpdateAuthority: candyMachine.authority,
  mintArgs: {
    solPayment: some({ destination: treasury }),
    mintLimit: some({ id: 1 }),
  },
}).sendAndConfirm(umi);
利用可能な Guard(21 種類以上)
Guard説明
solPaymentミントに SOL を請求します
tokenPaymentSPL トークンを請求します
nftPaymentNFT による支払いを必須にします
startDateミント開始時刻を設定します
endDateミント終了時刻を設定します
mintLimitウォレットごとのミント数を制限します
allowListMerkle tree の許可リストです
tokenGateトークンの所有を必須にします
nftGateNFT の所有を必須にします
botTaxミント失敗時にペナルティを課します
gatekeeperCAPTCHA による検証です
freezeSolPayment条件が満たされるまで SOL を凍結します
freezeTokenPayment条件が満たされるまでトークンを凍結します
addressGate特定のアドレスに制限します
allocationグループごとのミント総数を制限します
redeemedAmountX 回のミント後に停止します
thirdPartySigner追加の署名を必須にします
token2022PaymentToken-2022 による支払いです
nftBurnミント時に NFT をバーンします
tokenBurnミント時にトークンをバーンします
programGate呼び出し元のプログラムを制限します

Genesis(トークンローンチ)

Solana 上で公平なトークン生成イベント(TGE)を実施できます。

ローンチの種類
種類説明価格発見
Presale固定価格でのトークン販売事前決定
Launch Pool預け入れ額によって価格が決まります終了時
Uniform Price Auction入札方式清算価格
Presale の作成
import { createUmi } from '@metaplex-foundation/umi-bundle-defaults';
import {
  mplGenesis,
  createGenesis,
  addBucket,
  finalize,
} from '@metaplex-foundation/mpl-genesis';

const umi = createUmi('https://api.mainnet-beta.solana.com')
  .use(mplGenesis());

// Create genesis account
const genesis = generateSigner(umi);
await createGenesis(umi, {
  genesis,
  name: 'My Token',
  symbol: 'MTK',
  uri: 'https://arweave.net/token-metadata.json',
  decimals: 9,
  totalSupply: 1_000_000_000n * 10n ** 9n, // 1 billion tokens
}).sendAndConfirm(umi);

// Add presale bucket
await addBucket(umi, {
  genesis: genesis.publicKey,
  bucket: {
    type: 'Presale',
    price: sol(0.001), // 0.001 SOL per token
    maxTokens: 100_000_000n * 10n ** 9n, // 100M tokens
    startTime: dateTime('2024-06-01T00:00:00Z'),
    endTime: dateTime('2024-06-07T00:00:00Z'),
  },
}).sendAndConfirm(umi);

// Finalize (locks configuration)
await finalize(umi, {
  genesis: genesis.publicKey,
}).sendAndConfirm(umi);
ローンチへの参加
import { deposit, claim } from '@metaplex-foundation/mpl-genesis';

// Deposit SOL
await deposit(umi, {
  genesis: genesisPublicKey,
  amount: sol(10), // 10 SOL
}).sendAndConfirm(umi);

// After launch ends, claim tokens
await claim(umi, {
  genesis: genesisPublicKey,
}).sendAndConfirm(umi);

MPL-Hybrid(MPL-404)

代替可能トークンと NFT の間でスワップします。

import { createUmi } from '@metaplex-foundation/umi-bundle-defaults';
import {
  mplHybrid,
  createEscrow,
  swapNftToToken,
  swapTokenToNft,
} from '@metaplex-foundation/mpl-hybrid';

const umi = createUmi('https://api.mainnet-beta.solana.com')
  .use(mplHybrid());

// Create escrow for swapping
await createEscrow(umi, {
  escrow: escrowSigner,
  collection: collectionPublicKey,
  token: tokenMint,
  feeWallet: feeWallet,
  name: 'My Hybrid Collection',
  uri: 'https://arweave.net/escrow-metadata.json',
  max: 10000n,
  min: 0n,
  amount: 1000n, // Tokens per NFT
  feeAmount: sol(0.005),
  path: 0,
}).sendAndConfirm(umi);

// Swap NFT for tokens
await swapNftToToken(umi, {
  escrow: escrowPublicKey,
  asset: nftPublicKey,
}).sendAndConfirm(umi);

// Swap tokens for NFT
await swapTokenToNft(umi, {
  escrow: escrowPublicKey,
}).sendAndConfirm(umi);

Inscriptions

データをオンチェーンに直接保存します(最大 10 MB)。

import { createUmi } from '@metaplex-foundation/umi-bundle-defaults';
import {
  mplInscription,
  initializeFromMint,
  writeData,
  fetchInscription,
} from '@metaplex-foundation/mpl-inscription';

const umi = createUmi('https://api.mainnet-beta.solana.com')
  .use(mplInscription());

// Initialize inscription for existing NFT
const inscriptionAccount = findInscriptionPda(umi, { mint: nftMint });
await initializeFromMint(umi, {
  mintAccount: nftMint,
}).sendAndConfirm(umi);

// Write JSON metadata
await writeData(umi, {
  inscriptionAccount: inscriptionAccount[0],
  value: Buffer.from(JSON.stringify({
    name: 'On-chain NFT',
    description: 'Fully on-chain!',
  })),
  offset: 0,
}).sendAndConfirm(umi);

// Write image in chunks
const imageBytes = fs.readFileSync('./image.png');
const chunkSize = 800;
for (let i = 0; i < imageBytes.length; i += chunkSize) {
  const chunk = imageBytes.slice(i, i + chunkSize);
  await writeData(umi, {
    inscriptionAccount: associatedInscriptionAccount,
    value: Buffer.from(chunk),
    offset: i,
  }).sendAndConfirm(umi);
}

// Access via Inscription Gateway
const gatewayUrl = `https://igw.metaplex.com/mainnet/${inscriptionAccount[0]}`;

DAS API

Metaplex のすべての規格にわたってデジタルアセットを取得するための統合 API です。

DAS API の使用
import { createUmi } from '@metaplex-foundation/umi-bundle-defaults';
import { dasApi } from '@metaplex-foundation/digital-asset-standard-api';

const umi = createUmi('https://api.mainnet-beta.solana.com')
  .use(dasApi());

// Get single asset
const asset = await umi.rpc.getAsset(assetId);

// Get assets by owner
const assets = await umi.rpc.getAssetsByOwner({
  owner: ownerPublicKey,
  limit: 100,
});

// Get assets by collection
const collectionAssets = await umi.rpc.getAssetsByGroup({
  groupKey: 'collection',
  groupValue: collectionPublicKey,
  limit: 1000,
});

// Search assets
const searchResults = await umi.rpc.searchAssets({
  owner: ownerPublicKey,
  burnt: false,
  compressed: true,
});

// Get asset proof (for compressed NFTs)
const proof = await umi.rpc.getAssetProof(assetId);
DAS 互換の RPC プロバイダー
  • Helius
  • Triton
  • Shyft
  • QuickNode
  • Alchemy(DAS 対応)

プロトコル手数料

プログラム操作手数料
Core作成0.0015 SOL
Core実行0.00004872 SOL
Token Metadata作成0.01 SOL
Bubblegum v2作成0.00009 SOL
Bubblegum v2転送0.000006 SOL
Bubblegum v1作成無料
GenesisLaunch Pool預け入れ/引き出しに 2%、卒業時に 5%
GenesisPresale預け入れに 2%、卒業時に 5%
MPL-Hybridスワップ0.005 SOL

ベストプラクティス

適切な規格の選択
ユースケース推奨
新しい NFT コレクションCore
大規模コレクション(10K 以上)Bubblegum
ロイヤリティ付き PFPCore または pNFT
ゲームアイテムCore(プラグイン)
既存のエコシステムToken Metadata
トークンローンチGenesis
トークンと NFT のハイブリッドMPL-Hybrid
セキュリティ
  1. 秘密鍵は絶対に共有しないでください - ブラウザーではウォレットアダプターを使用します
  2. トランザクションを確認してください - 署名する前に必ず内容を確認します
  3. devnet でテストしてください - mainnet の前に devnet を使用します
  4. スマートコントラクトを監査してください - カスタム Guard を構築する場合
パフォーマンス
  1. 操作をバッチ処理します - トランザクションビルダーを使用します
  2. DAS の応答をキャッシュします - API 呼び出しを減らします
  3. 圧縮を使用します - 大規模コレクションには Bubblegum を使用します
  4. 優先手数料 - 混雑時に追加します

リソース

Documentation
GitHub Repositories
API References
Community

Skill Structure

metaplex/
├── SKILL.md                           # This file
├── resources/
│   ├── program-ids.md                 # All program addresses
│   ├── sdk-packages.md                # NPM packages reference
│   └── protocol-fees.md               # Fee schedule
├── examples/
│   ├── core/
│   │   └── create-nft.ts              # Core NFT examples
│   ├── token-metadata/
│   │   └── create-nft.ts              # Token Metadata examples
│   ├── bubblegum/
│   │   └── compressed-nfts.ts         # cNFT examples
│   ├── candy-machine/
│   │   └── launch-collection.ts       # Candy Machine examples
│   └── genesis/
│       └── token-launch.ts            # Genesis TGE examples
├── templates/
│   └── metaplex-client.ts             # Ready-to-use client
└── docs/
    └── troubleshooting.md             # Common issues

コメント