Socket
Socket
Sign inDemoInstall

@boxfish-studio/candymachine-client-sdk

Package Overview
Dependencies
256
Maintainers
1
Versions
7
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    @boxfish-studio/candymachine-client-sdk

Metaplex Candy Machine Client SDK


Version published
Weekly downloads
9
Maintainers
1
Created
Weekly downloads
 

Readme

Source

Candymachine Client SDK

A full-featured Solana Metaplex Candy Machine V2 client-side library in Typescript

Disclaimer: The SDK is currently a pre-alpha version

About

The Candymachine Client SDK offers all functionalities of the former Metaplex Candy Machine CLI but on a standalone pure Typescript client-side library that can run on any browser.

IMPORTANT: This SDK is only compatible with the Candy Machine V2. The Candy Machine V1 or V3 are not compatible.

Features

  • Create a Candy Machine V2 with multiple and configurable settings:
    • Captcha enabled/disabled.
    • Mutability on the NFTs.
    • Price, number of NFTs.
    • Authority.
    • NFTs hosted on Arweave.
    • Time and date to start the minting.
  • Update any Candy Machine V2 in which you are the authority and have the cache file.
  • Explore any Candy Machine V2, view the minted NFTs, remaining NFTs to mint...
  • Mint a NFT from the Candy Machine V2.
  • Available on Solana's Mainnet and Devnet networks.
  • Fully compatible with React and NextJS.

Built with

  • Typescript
  • Metaplex
  • Anchor from Serum
  • Solana web3.js

Installation

$ npm i @boxfish-studio/candymachine-client-sdk
$ yarn add @boxfish-studio/candymachine-client-sdk
$ pnpm add @boxfish-studio/candymachine-client-sdk

How to use

Upload your first Candy Machine v2

  1. Import uploadV2, loadCandyProgramV2, StorageType, verifyAssets functions and enums:
import { uploadV2, loadCandyProgramV2, StorageType, verifyAssets } from '@boxfish-studio/candymachine-client-sdk'

async function createCandyMachineV2() {
        let candyMachine: string = ''
        const config: ICandyMachineConfig = {
            price: 1,
            number: 200,
            gatekeeper: null,
            solTreasuryAccount: ******************, // where the NFTs initial sale SOL will go to
            splTokenAccount: null,
            splToken: null,
            goLiveDate: "21 Jul 2023 16:00:00 GMT",
            endSettings: null,
            whitelistMintSettings: null,
            hiddenSettings: null,
            storage: StorageType.Arweave,
            ipfsInfuraProjectId: null,
            ipfsInfuraSecret: null,
            nftStorageKey: null,
            awsS3Bucket: null,
            noRetainAuthority: false,
            noMutable: false,
            arweaveJwk: null,
            batchSize: null,
            pinataGateway: null,
            pinataJwt: null,
            uuid: null,
        }
        // files being all the assets uploaded to the page: [0.json, 0.png, 1.json, 1.png....]
        const { supportedFiles, elemCount } = verifyAssets(files, config.storage, config.number)

        const provider = new AnchorProvider(connection, anchorWallet, {
            preflightCommitment: 'recent',
        })

        const anchorProgram = await loadCandyProgramV2(provider)

        const {
            storage,
            nftStorageKey,
            ipfsInfuraProjectId,
            number,
            ipfsInfuraSecret,
            pinataJwt,
            pinataGateway,
            arweaveJwk,
            awsS3Bucket,
            retainAuthority,
            mutable,
            batchSize,
            price,
            splToken,
            treasuryWallet,
            gatekeeper,
            endSettings,
            hiddenSettings,
            whitelistMintSettings,
            goLiveDate,
            uuid,
        } = await getCandyMachineV2Config(publicKey, config, anchorProgram)

        try {
            const _candyMachine = await uploadV2({
                files: supportedFiles,
                cacheName: 'example',
                env: "devnet",
                totalNFTs: elemCount,
                gatekeeper,
                storage,
                retainAuthority,
                mutable,
                batchSize,
                price,
                treasuryWallet,
                anchorProgram,
                walletKeyPair: anchorWallet, // from react solana wallet package
                endSettings,
                hiddenSettings,
                whitelistMintSettings,
                goLiveDate,
                rateLimit: null,
            })

            if (typeof _candyMachine === 'string') candyMachine = _candyMachine
            console.log("Candy machine v2 successfully created!")
        } catch (err) {
            console.error("Error during candy machine v2 upload.")
        }

    }

Acknowledgements

This SDK has been built thanks to Metaplex's Candy Machine CLI.

License

Apache 2.0 © Boxfish Studio

Keywords

FAQs

Last updated on 25 Jan 2023

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc