SoLibrary
  • Solana
  • The Meme Coin Problem and Solution
  • Developing on Solana
  • From Rust To Deployment
  • Solana Blockchain Explorer
  • Building a Solana dAPP
  • Deploying a Solana dApp
  • Deploying a Solana Memecoin using CLI
  • Solana Smart Contracts
  • Send Solana via javascript functions
  • Candy Machine
  • Pump fun APIs
  • Metaplex
  • Metaplex Program Library
  • Solana Program Library
  • UMI Framework
  • Umi and Web3js Differences
  • Fetching Accounts
  • UMI Helpers
  • HTTP Requests
  • Umi's Interfaces
  • Interface implementations
  • Kinobi
  • UMI Plugins
  • Registering Programs
  • Public keys and Signers
  • Connecting RPCS
  • Serializer
  • Storage
  • Transactions
  • Web 3.JS Adapters
  • Metaplex Umi Plugins
  • Core JS SDK v1.0
  • Local Validator
  • SolScriptions
  • FAQ
  • Initialize
  • Write Inscription Data
  • Fetch
  • Clear
  • Close
  • Authority
  • Sharding
  • Getting Started using JavaScript
  • Getting started using the Inscriptions CLI
  • Core Candy Machine
  • Getting Started using JavaScript
  • Candy Guard
  • Assets
  • Creating a Core Candy Machine
  • Inserting Items
  • Updating The Core Candy Machine
  • Guard Groups
  • Special Guard Instructions
  • Fetching a Core Candy Machine
  • Minting
  • Withdrawing a Core Candy Machine
  • Address Gate Guard
  • Allocation
  • Allowlist Guard
  • Asset Burn Guard
  • Asset Burn Multi
  • Asset Payment Guard
  • Asset Payment Multi
  • Asset Mint Limit
  • Bot Tax Guard
  • End Date Guard
  • Edition
  • Freeze Sol Payment guard
  • Freeze Token Payment Guard
  • Gatekeeper Guard
  • Mint Limit Guard
  • NFT Burn Guard
  • NFT Gate Guard
  • NFT Mint Limit Guard
  • NFT Payment Guard
  • Program Gate Guard
  • Redeemed Amount Guard
  • Sol Fixed Fee Guard
  • Sol Payment Guard
  • Start Date Guard
  • Third Party Signer Guard
  • Token Burn Guard
  • Token Gate Guard
  • Token Payment Guard
  • Token2022 Payment Guard
  • Generating Custom Guard Client for Core Candy Machine
Powered by GitBook
On this page
  • Guard Settings
  • Mint Settings
  • Route Instruction

NFT Payment Guard

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.

Transfers

1 NFT from

this collection

Core Candy Machine

Owner: Core Candy Machine Core Program

Candy Guard

Owner: Core Candy Guard Program

GuardsnftPayment- Required Collection- Destination Wallet...

Collection NFT

Mint Account

Owner: Token Metadata Program

Destination Wallet

Owner: System Program

Mint from

Core Candy Guard Program

Access Control

Mint from

Core Candy Machine Program

Mint Logic

Asset

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

JavaScript

create(umi, {
  // ...
  guards: {
    nftPayment: some({
      requiredCollection: requiredCollectionNft.publicKey,
      destination: umi.identity.publicKey,
    }),
  },
});

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.

Set up a Candy Machine using the NFT Payment Guard

JavaScript

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";

mintV1(umi, {
  // ...
  mintArgs: {
    nftPayment: some({
      destination,
      mint: nftToPayWith.publicKey,
      tokenStandard: TokenStandard.NonFungible,
    }),
  },
});

Route Instruction

The NFT Payment guard does not support the route instruction.

PreviousNFT Mint Limit GuardNextProgram Gate Guard

Last updated 10 months ago

API References: ,

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 for more details.

API References: ,

React Flow
create
NftPayment
Core Candy Guard’s program documentation
mintV1
NftPaymentMintArgs