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

Gatekeeper Guard

The Gatekeeper guard checks whether the minting wallet has a valid Gateway Token from a specified Gatekeeper Network.

PreviousFreeze Token Payment GuardNextMint Limit Guard

Last updated 10 months ago

In most cases, this token will be obtained after completing a Captcha challenge but any Gatekeeper Network may be used.

There isn’t much to set up on the Core Candy Machine side but, depending on the selected Gatekeeper Network, you may need to ask the minting wallet to perform so pre-validation checks to grant them the required Gateway Token.

Here are some additional recommended materials you may find helpful when setting up a Gatekeep Network.

Core Candy MachineOwner: Core Candy Machine Core ProgramCandy GuardOwner: Candy Guard ProgramGuardsGatekeeper- Gatekeeper Network- Expire on use...

Request Gateway Token

from the Gatekeeper

Network e.g. Captcha

Gateway Token

Mint from

Candy Guard Program

Access Control

Mint from

Core Candy Machine Program

Mint Logic

Asset

if a valid token for the given

Network and payer does not exist

Minting will fail

Guard Settings

The Gatekeeper guard contains the following settings:

  • Gatekeeper Network: The public key of the Gatekeeper Network that will be used to check the validity of the minting wallet. For instance, you may use the "Civic Captcha Pass" Network — which ensures the minting wallet has passed a captcha — by using the following address: ignREusXmGrscGNUesoU9mxfds9AiYTezUKex2PsZV6.

  • Expire On Use: Whether we should mark the Gateway Token of the minting wallet as expired after the NFT has been minting.

    • When set to true, they will need to go through the Gatekeeper Network again to mint another NFT.

    • When set to false, they will be able to mint another NFT until the Gateway Token expires naturally.

Set up a Core Candy Machine using the Gatekeeper guard

JavaScript

create(umi, {
  // ...
  guards: {
    gatekeeper: some({
      network: publicKey("ignREusXmGrscGNUesoU9mxfds9AiYTezUKex2PsZV6"),
      expireOnUse: true,
    }),
  },
});

Mint Settings

The Gatekeeper guard accepts the following mint settings:

  • Gatekeeper Network: The public key of the Gatekeeper Network that will be used to check the validity of the minting wallet.

  • Expire On Use: Whether we should mark the Gateway Token of the minting wallet as expired after the NFT has been minting.

  • Token Account (optional): As a little disclaimer, you should very rarely need to provide this setting but it’s here if you need to. This refers to the Gateway Token PDA derived from the payer and the Gatekeeper Network which is used to verify the payer's eligibility to mint. This PDA address can be inferred by our SDKs which is why you do not need to provide it. However, some Gatekeeper Networks may issue multiple Gateway Tokens to the same wallet. To differentiate their PDA addresses, it uses a Seeds array which defaults to [0, 0, 0, 0, 0, 0, 0, 0].

Mint with the Gatekeeper Guard

JavaScript

You may pass the Mint Settings of the Gatekeeper guard using the mintArgs argument like so.

mintV1(umi, {
  // ...
  mintArgs: {
    gatekeeper: some({
      network: publicKey("ignREusXmGrscGNUesoU9mxfds9AiYTezUKex2PsZV6"),
      expireOnUse: true,
    }),
  },
});

Route Instruction

The Gatekeeper guard does not support the route instruction.

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.

The CIVIC Documentation
Gateway JS Library
Gateway React Components
React Flow
create
Gatekeeper
Candy Guard’s program documentation