This assignment involves creating a cNFT (compressed NFT) collection and airdropping it to other fellows. The application will use the Solana blockchain to mint and distribute the cNFTs.
- TypeScript: For writing the application code
- Solana Web3.js: For interacting with the Solana blockchain
- Express: For building the backend API
- dotenv: For managing environment variables
- @metaplex-foundation/umi: For handling NFT creation and transactions
- @metaplex-foundation/mpl-bubblegum: For managing Merkle Trees and compressed NFTs
- @metaplex-foundation/mpl-token-metadata: For handling token metadata
- @metaplex-foundation/umi-bundle-defaults: For default Umi bundle configurations
- @metaplex-foundation/umi-web3js-adapters: For adapting Umi to Web3.js
- @solana/actions: For Solana blockchain actions
- bs58: For Base58 encoding/decoding
The main components of the project include:
index.ts
: Entry point of the applicationutils.ts
: Utility functions for Solana and Umi integrationMerkle-Tree.ts
: Functions for creating and managing Merkle TreescNFT.ts
: Functions for minting individual cNFTscNFTCollection.ts
: Functions for minting and managing cNFT collections
- Clone the repository
- Install dependencies:
npm install
- Set up your environment variables in a
.env
file based on the.env.example
- Start the development server:
npm run dev
- Minting Handler: Mints cNFTs with specified metadata
- Airdrop Handler: Airdrops the minted cNFTs to specified addresses
- Merkle Tree Handler: Creates and manages Merkle Trees for compressed NFTs
The application uses Solana for minting and airdropping cNFTs. Key steps include:
- Setting up Solana configuration and environment variables
- Creating and managing Merkle Trees
- Minting cNFTs with metadata
- Airdropping cNFTs to other fellows