Candy Machine is deprecated and is no longer actively maintained. Use Core Candy Machine instead.
Available Guards
NFT Payment Guard
Overview
The NFT Payment guard allows minting by charging the payer an NFT from a specified NFT collection. The NFT will be transferred to a predefined destination.
If the payer does not own an NFT from the required collection, minting will fail.
Guard Settings
The NFT Payment guard contains the following settings:
- Required Collection: The mint address of the required NFT Collection. The NFT we use to pay with must be part of this collection.
- Destination: The address of the wallet that will receive all NFTs.
Set up a Candy Machine using the NFT Payment Guard
create(umi, {
// ...
guards: {
nftPayment: some({
requiredCollection: requiredCollectionNft.publicKey,
destination: umi.identity.publicKey,
}),
},
});
API References: create, NftPayment
Mint Settings
The NFT Payment guard contains the following Mint Settings:
- Destination: The address of the wallet that will receive all NFTs.
- Mint: The mint address of the NFT to pay with. This must be part of the required collection and must belong to the minter.
- Token Standard: The token standard of the NFT used to pay.
- Token Account (optional): You may optionally provide the token account linking the NFT with its owner explicitly. By default, the associated token account of the payer will be used.
- Rule Set (optional): The Rule Set of the NFT used to pay, if we are paying using a Programmable NFT with a Rule Set.
Note that, if you’re planning on constructing instructions without the help of our SDKs, you will need to provide these Mint Settings and more as a combination of instruction arguments and remaining accounts. See the Candy Guard’s program documentation for more details.
Set up a Candy Machine using the NFT Payment Guard
You may pass the Mint Settings of the NFT Payment guard using the mintArgs argument like so.
import { TokenStandard } from "@metaplex-foundation/mpl-token-metadata";
mintV2(umi, {
// ...
mintArgs: {
nftPayment: some({
destination,
mint: nftToPayWith.publicKey,
tokenStandard: TokenStandard.NonFungible,
}),
},
});
API References: mintV2, NftPaymentMintArgs
Route Instruction
The NFT Payment guard does not support the route instruction.
