機能
圧縮NFTのミント
Last updated October 1, 2026
Summary
Minting compressed NFTs adds new cNFTs to a Bubblegum Tree using the mintV2 instruction. This page covers minting with and without MPL-Core collections, and retrieving the asset ID from mint transactions.
- Mint cNFTs to a Bubblegum Tree using the mintV2 instruction
- Mint directly into an MPL-Core collection with the BubblegumV2 plugin
- Retrieve the asset ID and leaf schema from the mint transaction
- Configure metadata including name, URI, creators, and royalties
- MPL-CoreコレクションのRoyaltiesプラグインからセラーフィーベーシスポイントを継承する
前のページでは、圧縮NFTをミントするためにBubblegumツリーが必要であることを確認し、その作成方法を見ました。今度は、与えられたBubblegumツリーから圧縮NFTをミントする方法を見てみましょう。
Bubblegumプログラムは、異なるリーフスキーマバージョン用の複数のミント命令を提供します。Bubblegum V2は、与えられたコレクションに、またはコレクションなしで圧縮NFTをミントするために使用されるmintV2という新しいミント命令を導入しています。
コレクションなしでのミント
Bubblegumプログラムは、Bubblegumツリーから圧縮NFTをミントすることを可能にするmintV2命令を提供します。Bubblegumツリーが公開されている場合、誰でもこの命令を使用できます。そうでなければ、ツリー作成者またはツリーデリゲートのみが使用できます。
mintV2命令の主要なパラメータは以下の通りです:
- マークルツリー: 圧縮NFTがミントされるマークルツリーのアドレス。
- ツリー作成者またはデリゲート: Bubblegumツリーからのミントを許可された権限 — これはツリーの作成者またはデリゲートのいずれかです。この権限はトランザクションに署名する必要があります。公開ツリーの場合、このパラメータは任意の権限にできますが、それでも署名者である必要があります。
- リーフ所有者: ミントされる圧縮NFTの所有者。デフォルトではトランザクションの支払者です。
- リーフデリゲート: ミント済みcNFTの管理を許可されたデリゲート権限(存在する場合)。そうでなければ、リーフ所有者に設定されます。
- コレクション権限: 与えられたコレクションの管理を許可された権限。
- Coreコレクション: 圧縮NFTが追加されるMPL-CoreコレクションNFT。
- メタデータ: ミントされる圧縮NFTのメタデータ。NFTの名前、URI、コレクション、作成者などの情報が含まれます。Bubblegum V2では、メタデータは
usesやコレクションのverifiedフラグなど、不要なフィールドを除外したMetadataArgsV2を使用しています。
コレクションなしで圧縮NFTをミント
import { none } from '@metaplex-foundation/umi';
import { mintV2 } from '@metaplex-foundation/mpl-bubblegum';
await mintV2(umi, {
leafOwner: umi.identity.publicKey,
merkleTree: merkleTree.publicKey,
metadata: {
name: 'My NFT',
uri: 'https://example.com/my-nft.json',
sellerFeeBasisPoints: 550, // 5.5%
collection: none(),
creators: [],
},
}).sendAndConfirm(umi);
コレクションへのミント
圧縮NFTがミントされた 後に コレクションを設定して確認することも可能ですが、Bubblegum V2は圧縮NFTを指定されたコレクションに直接ミントできるようにします。Bubblegum V2は圧縮NFTをグループ化するためにMPL-Coreコレクションを使用します。同じ mintV2 命令がこのために使用されます。上記のパラメータに加えて、Coreコレクションを渡し、コレクション権限またはデリゲートとして署名する必要があります:
- Coreコレクション:
coreCollectionパラメータに渡されるMPL-CoreコレクションNFTのミントアドレス。 - コレクション権限: 指定されたコレクションNFTを管理できる権限。これはコレクションNFTの更新権限または委任されたコレクション権限のいずれかになります。この権限は、Bubblegumツリーが公開されているかどうかに関係なく、トランザクションに署名する必要があります。
メタデータパラメータにはコレクションの公開鍵を含める必要があります。
コレクションに圧縮NFTをミント
import { some } from '@metaplex-foundation/umi';
import { mintV2 } from '@metaplex-foundation/mpl-bubblegum';
await mintV2(umi, {
collectionAuthority: umi.identity,
leafOwner: umi.identity.publicKey,
merkleTree: merkleTree.publicKey,
coreCollection: collectionSigner.publicKey,
metadata: {
name: 'My NFT',
uri: 'https://example.com/my-nft.json',
sellerFeeBasisPoints: 550, // 5.5%
collection: some(collectionSigner.publicKey),
creators: [],
},
}).sendAndConfirm(umi);
コレクションからロイヤリティを継承する
MPL-Coreコレクションにミントする場合、コレクションのロイヤリティ率をすべてのcNFTにコピーする代わりに、リーフにセンチネルのセラーフィーベーシスポイント値(65535、SELLER_FEE_BASIS_POINTS_INHERIT / 0xffff としてエクスポート)を保存できます。DASは表示用に royalty.basis_points / creators にコレクションから解決された料率を置き、royalty.basis_points_raw / creators_raw にリーフセンチネルを置き(royalty.inherited: true)、オンチェーンのリーフはハッシュ化のためにセンチネルを保持します。
DASレスポンスを読むクライアント(ウォレット、マーケットプレイス、インデクサー、アプリ)は継承ロイヤリティの読み取りに従ってください。
マーケットプレイス / インデクサー互換性
ウォレットやマーケットプレイスの DAS プロバイダーが継承 SFBP 解決をサポートするまで、creators: [] と basis_points: 65535 が返されます。その場合、アプリはクリエイターなしの 655.35%のロイヤリティ(約650%)を表示し、ロイヤリティ支払いをスキップする可能性があります。オンチェーンのアセットは正しいです。継承ロイヤリティ未対応のDASプロバイダーからのレスポンスを参照してください。より強い保証のため、コレクション Royalties プラグインの許可/拒否リストを使い、ロイヤリティ準拠の会場経由で販売してください。
JavaScript SDKの mintV2 ヘルパーは、coreCollection が指定され metadata.sellerFeeBasisPoints が省略された場合、この動作をデフォルトとします。
要件:
- MPL-Coreコレクションには
BubblegumV2とRoyaltiesの両方のプラグインが必要です。 - 継承されたセラーフィーを使用する場合、
metadata.creatorsは空の配列である必要があります。クリエイター分配はリーフレベルのクリエイターではなく、コレクションのRoyaltiesプラグインから取得されます。 - 継承されたセラーフィーはコレクション内のcNFTでのみ有効です。コレクションなしのミントでは
0から10000の明示的な値を使用する必要があります。
1import { createTreeV2, mintV2, mplBubblegum } from '@metaplex-foundation/mpl-bubblegum'
2import { createCollection, mplCore, ruleSet } from '@metaplex-foundation/mpl-core'
3import { generateSigner, some } from '@metaplex-foundation/umi'
4import { createUmi } from '@metaplex-foundation/umi-bundle-defaults'
5
6const umi = createUmi('https://api.devnet.solana.com')
7 .use(mplBubblegum())
8 .use(mplCore())
9
10const merkleTree = generateSigner(umi)
11const collectionSigner = generateSigner(umi)
12
13await createTreeV2(umi, {
14 merkleTree,
15 maxDepth: 5,
16 maxBufferSize: 8,
17}).sendAndConfirm(umi)
18
19// The collection must include BubblegumV2 and Royalties plugins.
20await createCollection(umi, {
21 collection: collectionSigner,
22 name: 'My Collection',
23 uri: 'https://example.com/collection.json',
24 plugins: [
25 { type: 'BubblegumV2' },
26 {
27 type: 'Royalties',
28 basisPoints: 500, // 5%
29 creators: [{ address: umi.identity.publicKey, percentage: 100 }],
30 ruleSet: ruleSet('None'),
31 },
32 ],
33}).sendAndConfirm(umi)
34
35// sellerFeeBasisPoints is omitted — the SDK sends the inherit sentinel (65535).
36await mintV2(umi, {
37 collectionAuthority: umi.identity,
38 leafOwner: umi.identity.publicKey,
39 merkleTree: merkleTree.publicKey,
40 coreCollection: collectionSigner.publicKey,
41 metadata: {
42 name: 'My NFT',
43 uri: 'https://example.com/my-nft.json',
44 collection: some(collectionSigner.publicKey),
45 creators: [], // must be empty when inheriting royalties
46 },
47}).sendAndConfirm(umi)
48
49// cNFT minted with SELLER_FEE_BASIS_POINTS_INHERIT (65535) on the leaf
単一のミントでコレクションのデフォルトを上書きするために、明示的な sellerFeeBasisPoints を渡すこともできます。
ミントトランザクションからアセットIDとリーフスキーマを取得する
parseLeafFromMintV2Transactionヘルパーを使用して、mintV2トランザクションからリーフを取得し、アセットIDを特定できます。この関数はトランザクションを解析するため、parseLeafFromMintV2Transactionを呼び出す前にトランザクションが完了していることを確認してください。
トランザクションの完了
parseLeafFromMintV2Transactionを呼び出す前に、トランザクションが完了していることを確認してください。
ミントトランザクションからリーフスキーマを取得する
import {
mintV2,
parseLeafFromMintV2Transaction,
} from '@metaplex-foundation/mpl-bubblegum';
const { signature } = await mintV2(umi, {
// ... 上記の詳細を参照
}).sendAndConfirm(umi);
const leaf = await parseLeafFromMintV2Transaction(umi, signature);
const assetId = leaf.id;
Notes
- The Bubblegum Tree must be created before minting. See Creating Trees.
- For collection mints, the MPL-Core collection must have the
BubblegumV2plugin enabled. - コレクションからロイヤリティを継承するには、コレクションに
Royaltiesプラグインも必要で、リーフのcreators配列は空である必要があります。 - The collection authority must sign the transaction when minting to a collection, regardless of whether the tree is public or private.
- Use
parseLeafFromMintV2Transactiononly after the transaction is finalized, not just confirmed.
FAQ
コレクションに圧縮NFTをミントするにはどうすればよいですか?
MPL-Coreコレクションアドレスに設定されたcoreCollectionパラメータを使用してmintV2命令を使用します。コレクションにはBubblegumV2プラグインが有効になっている必要があります。
ミント後にアセットIDを取得するにはどうすればよいですか?
トランザクションが完了した後、parseLeafFromMintV2Transactionヘルパーを使用します。アセットIDを含むリーフスキーマを返します。
誰でも私のツリーからミントできますか?
ツリーが公開に設定されている場合のみです。プライベートツリーの場合、ツリー作成者またはツリーデリゲートのみがミントできます。
ミントに必要なメタデータフィールドは何ですか?
MetadataArgsV2 構造体には以下が必要です:name(文字列)、uri(JSONメタデータを指す文字列)、sellerFeeBasisPoints(0-10000、またはコレクションにミントしてRoyaltiesプラグインから継承する場合は省略)、collection(公開鍵またはnone)、creators(クリエイターオブジェクトの配列。ロイヤリティを継承する場合は空である必要があります)。
cNFTはMPL-Coreコレクションからロイヤリティを継承できますか?
はい。coreCollection でミントする場合、metadata.sellerFeeBasisPoints を省略し、metadata.creators を空にしてください。SDKはリーフに SELLER_FEE_BASIS_POINTS_INHERIT(65535)を保存します。コレクションには Royalties プラグインが必要です。コレクションからロイヤリティを継承するを参照してください。
Glossary
| Term | Definition |
|---|---|
| mintV2 | The Bubblegum V2 instruction for minting compressed NFTs, replacing the V1 mint instructions |
| MetadataArgsV2 | The metadata structure passed to mintV2, containing name, URI, royalties, collection, and creators |
| SELLER_FEE_BASIS_POINTS_INHERIT | Sentinel value 65535 (0xffff) stored on-chain to indicate royalties are inherited from the MPL-Core collection |
| Collection Authority | The signer authorized to manage the MPL-Core collection — required when minting to a collection |
| BubblegumV2 Plugin | An MPL-Core collection plugin that enables Bubblegum V2 features (freeze, soulbound, royalties) |
| Asset ID | A PDA derived from the merkle tree address and leaf index, uniquely identifying a compressed NFT |
| Leaf Schema | The data structure stored as a leaf in the merkle tree, containing the cNFT's hashed metadata and ownership info |
