Filebase
HomepageFilebase DashboardDiscordBlog
  • 👋Welcome to Filebase!
  • Getting Started
    • FAQ
    • Service Limits
    • Getting Started Guides
      • Pin Your First File To IPFS
      • Developer Quick Start Guide
  • IPFS Concepts
    • What is IPFS?
    • What is an IPFS CID?
    • What is IPFS Pinning?
    • What is an IPFS Gateway?
  • IPFS Pinning
    • Pinning Files
    • Listing Files
    • Deleting Files
    • Event Notifications
  • IPNS Names
    • Managing Names
  • Dedicated IPFS Gateways
    • Managing Dedicated Gateways
    • Access Controls
    • Image Optimizations
    • Adding a Custom Domain
  • API Documentation
    • IPFS RPC API
    • S3-Compatible API
      • Cross Origin Resource Sharing (CORS)
        • Create and Apply a CORS Rule to a Filebase Bucket
        • Deep Dive: Cross Origin Resource Sharing (CORS)
      • Pre-Signed URLs
    • Filebase Platform APIs
    • IPFS Pinning Service API
  • Code Development + SDKs
    • Code Development
      • Apache Libcloud - Python
      • Apostrophe CMS
      • AWS Lambda - NodeJS
      • AWS Lambda - Python
      • AWS SDK - Go (Golang)
      • AWS SDK - Java
      • AWS SDK - JavaScript
      • AWS SDK - .NET
      • AWS SDK - PHP
      • AWS SDK - Python
      • AWS SDK - Ruby
      • Code Examples
        • How To Utilize Filebase with NodeJS
      • DataCamp
      • Dart / Flutter
      • Django
      • Docker
        • Docker Volume Backup
      • Elixir Phoenix
      • Filebase NPM Package
      • Fog.io - Ruby
      • Google App Scripts
      • Integrated Haskell Platform
      • Laravel
      • Nuxt
      • Paperspace
      • Postman
      • Reading a JSON File
      • UNA
      • Unity
      • Uppy AWS S3 Plugin
      • Vue
      • Watcher for NodeJS
      • Webpack S3 Plugin
      • Xamarin
    • SDK Examples: Pinning Files and Folders to IPFS
      • AWS SDK for .NET
      • AWS SDK for Go
      • AWS SDK for JavaScript
      • AWS SDK for PHP
      • AWS SDK for Python
      • AWS SDK for Ruby
  • Archive
    • Content Archive
      • IPFS Getting Started Guide
      • Web Console Getting Started Guide
      • IPFS Tools
        • IPFS CLI
        • IPFS Desktop
        • IPFS Pin Sync
        • IPFS Pinning Service API
        • IPFS3up
      • Third Party Tools and Clients
        • Backup Client Configurations
          • AhsayCBS
          • BackupAssist Classic
          • BackupAssist ER
          • BackupNinja
          • BackupSheep
          • Bacula Enterprise Edition
          • CloudBacko
          • CloudBerry Backup
          • Cloudron
          • cPanel
          • Comet
          • Commvault
          • Duplicacy
          • Ghost IPFS Storage Adapter
          • IPFS Pinning GitHub Action
          • JetBackup
          • Kopia
          • MoveBot
          • MSP360 Online Backup
          • oDrive
          • Photos+ Cloud Library
          • qBackup
          • S3 Uploader for GitHub Actions
          • SimpleBackups
          • SnapShooter
          • Strapi Provider Plugin
          • Veeam
          • Wordpress
            • Media Cloud
            • XCloner
          • Zerto
        • CLI Tools
          • Ansible
          • Apache Pulsar
          • AWS CLI
            • How To Delete Data with AWS CLI
            • What is Multipart Upload?
          • Bash
            • Backup Files to IPFS with Bash
            • Laravel Backup with Bash
            • MongoDB Backup with Bash
            • PostgreSQL Backup with Bash
            • Wordpress Backup with Bash
          • cURL
          • Elasticsearch
          • IPFS-CAR
          • IPFScrape
          • IPGet
          • Jenkins
          • JFrog Artifactory
          • Kubernetes
            • Backup and Restore InFluxDB to Filebase with TrilioVault
            • CSI-S3
            • Kasten K10
            • Kerberos Vault
            • Longhorn.io
            • Stash for Kubernetes
            • Velero
          • Litestream
          • Minty
          • MongoDB
          • MoSMB
          • MySQL
          • Next.js .CAR File Upload
          • NFT Image Generator
          • NGINX S3 Gateway
          • Pinning Docker Images to IPFS
          • Pinning Encrypted Files to IPFS
          • PowerShell
            • Calculate the Size of Filebase Buckets using PowerShell
          • Rclone
            • Backing Up DigitalOcean Spaces to Filebase using Rclone
          • Restic
          • S3cmd
          • S3Express
          • S3FS-FUSE
          • S3QL
          • S3Surfer
          • S4cmd
          • SeaweedFS
          • Tableland
        • Content Delivery Networks
          • Bunny CDN
          • CloudFront CDN
          • Fastly CDN
        • File Management Client Configurations
          • Airbyte
          • Arq
          • Astiga
          • AWS Rekognition
          • AWS S3 Manager - iOS App
          • BucketAnywhere for S3 - Android App
          • CentreStack
          • CloudFlyer
          • Cloudfser
          • Couchdrop
          • CrossFTP
          • CyberDuck
            • How To Delete Data with CyberDuck
          • Dropshare
          • Duplicati
          • FileBrowserGO
          • Flexify.IO
          • ForkLift
          • Goofys
          • Joplin
          • LucidLink
          • MASV
          • Matrix Synapse
          • MinIO Gateway for S3
          • Mountain Duck
          • NetDrive
          • Nexfs
          • NextCloud
          • Nodeum
          • ownCloud
          • Plesk
          • Pure Storage FlashBlade
          • RaiDrive
          • S3 Browser
          • ShareX
          • SmartFTP
          • StableBit Cloud Drive
          • Storage Made Easy Enterprise File Fabric
          • WinSCP
        • NAS Device Configurations
          • Buffalo TeraStation
          • Datadobi DobiProtect
          • Netapp ONTAP Select
          • OpenDrives Atlas
          • Synology Hyper Backup
          • TrueNAS CORE
      • Knowledge Base
        • Deep Dives
          • Deep Dive: Blockchains
          • Deep Dive: Decentralized Compute
          • Deep Dive: Decentralized Digital Identity
          • Deep Dive: Decentralized Storage
          • Deep Dive: Erasure Coding
          • Deep Dive: Geo-Redundancy
          • Deep Dive: Metadata
          • Deep Dive: Metaverse
          • Deep Dive: NFTs
          • Deep Dive: Web3
        • Filebase eBooks
        • Filebase One-Pagers
        • Filebase Whitepapers
        • Web3 Tutorials
          • Alchemy
            • Alchemy: Build a dApp That Provides Real-Time Ethereum Transaction Notifications
            • Alchemy: Create a Full-Stack dApp
            • Alchemy: Create a Hello World Smart Contract
            • Alchemy: Create Your Own ERC20 Cryptocurrency
            • Alchemy: Decentralized Youtube
            • Alchemy: How to Create and Mint an NFT using Filebase
            • Alchemy: How to Mint an NFT Using Web3.js
            • Alchemy: Using The Alchemy SDK with NFTs Minted Through thirdweb
          • Agoric
            • Agoric: Create a DeFi dApp Using Agoric That’s Stored on Filebase
          • AirSwap
            • AirSwap: Track NFT Contract Addresses with AirSwap CLI
          • ArcBlock
            • ArcBlock: Running an ArcBlock Blocket Server on IPFS
          • Ankr
            • Ankr: Create a Truffle Project with Ankr and Filebase
            • Ankr: Deploy a Smart Contract on Polygon using Ankr that is backed up to Filebase
          • Avalanche
            • Avalanche: How To Launch a Generative NFT Collection With Avalanche and IPFS
          • Backing Up NFTs
          • Brownie
            • Brownie: Create and Mint an NFT Using Brownie
          • Bueno
            • Bueno: How to Create a Generative NFT Collection with Bueno
          • Cardano
            • Cardano: Submit Cardano Blockchain Transactions with Embedded Metadata Stored on Filebase
          • Ceramic
            • Ceramic: How to Host a Ceramic Node Using Decentralized Storage
          • Create-IPFS-app
          • Cosmos
            • Cosmos: Storing Cosmos Chain Governance Metadata on IPFS
          • DeCommerce
          • Ethereum Name Service
            • ENS: Configure an ENS Domain to use a Filebase IPFS Dedicated Gateway
          • Figment Datahub
            • Figment Datahub and Avalanche: Make an e-Voting dApp Using Figment Datahub, Avalanche, and Filebase
            • Figment Datahub and Celo Network: Create an ERC1155 NFT on the Celo Network using Figment Datahub and Objects Stored on Filebase
          • Flow
            • Flow: How to Create an NFT Marketplace with Filebase + Flow
          • Fauna
            • Fauna: Host an Application on IPFS with IPFS Dedicated Gateways
          • Ganache
            • Ganache: Create a dApp Hosted on IPFS
          • GUN
            • GUN: Create a Decentralized Chat App with GUN and IPFS
          • Hardhat
            • Hardhat: Creating an NFT Contract using Hardhat and Setting NFT Metadata using IPFS on Filebase
          • Harmony
            • Harmony: Deploy an HRC721 NFT on Harmony with IPFS
          • Hosting a Form on IPFS
          • iExec
            • iExec: Using iExec and Tee Worker to Create Apps that Use Datasets Stored on Filebase
          • Infura
            • Infura: Build dApp Frontends with Infura, React, and IPFS
            • Infura: Create an NFT Contract Factory with Metadata stored on IPFS
          • Lens Protocol
            • Lens Protocol: Build a Decentralized Social Media Network Stored on IPFS
          • LIT Protocol
            • LIT Protocol: Create a MintLIT NFT with LIT Protocol and IPFS
          • LivePeer
            • LivePeer: Mint a Video NFT with LivePeer
          • Macrometa
            • Macrometa: Track IPFS Files with Macrometa
          • Mina Protocol
            • Mina Protocol: Create a Simple zkApp with Mina Protocol and IPFS
          • NEAR Protocol
            • NEAR Protocol: Storing Off-Chain Data on IPFS using Filebase
          • NFTPort
            • NFTPort: Create an NFT Collection with NFTPort
          • Ocean Protocol
            • Ocean Protocol: Publish Data NFTs Stored on IPFS using Ocean Protocol
          • Pin Tezos Tokens Tool
          • Polkadot
            • Polkadot: Deploy a Polkadot dApp on Decentralized Storage
          • Polygon
            • Polygon: Building an App NFT With Polygon
            • Polygon: Make a Donation App with IPFS and Polygon
          • Python
            • Generating NFT Metadata with Python
          • QuickNode
            • QuickNode: Create a Token dApp using QuickNode
          • Remix
            • Remix: Create a Web App with Remix to Upload to Decentralized Storage
          • Remix IDE
            • Remix IDE: Creating Interactive NFTs with IPFS and Remix IDE
          • Secret Network
            • Secret Network: Create an NFT on Secret Network with Data Stored on IPFS
          • Stargaze
            • Stargaze: Create an NFT Collection Using IPFS and Stargaze
          • Starknet
            • Starknet: Create a HardHat Project Using A Starknet Plugin Hosted On IPFS
          • Studio 721
            • Studio 721: Create an NFT Collection with Studio 721 and IPFS
          • Solana
            • Solana: Minting an NFT Using Sugar, Candy Machine, and Filebase
          • Subsquid
            • Subsquid: Querying NFT Data using Subsquid and a Filebase IPFS Dedicated Gateway
          • Tailwind CSS
            • Tailwind CSS: Build an Image Gallery App with IPFS and Tailwind CSS
          • Tatum
            • Tatum: How To Mint NFTs on Solana with Tatum
          • Tezos
            • Tezos: Create an NFT on the Tezos Network using IPFS on Filebase
          • thirdweb
            • thirdweb: Build an NFT Loot Box with thirdweb and IPFS
            • thirdweb: Build an NFT Minting Page with thirdweb, IPFS, RainbowKit, and WAGMI
            • thirdweb: Create a Discord Bot That Gives Roles to NFT Holders
            • thirdweb: Create a Gated Website Using NFTs and IPFS
            • thirdweb: Create an NFT Marketplace with thirdweb and IPFS
            • thirdweb: Release an NFT Drop Using thirdweb and IPFS
          • useDApp
            • useDApp: Create a dApp using useDApp and IPFS
          • Unstoppable Domains
            • Unstoppable Domains: Create a Decentralized Website Using Unstoppable Domains and IPFS Folders
            • Unstoppable Domains: Deploy a Decentralized Blog Using Unstoppable Domains, Akash, and IPFS
            • Unstoppable Domains: IPFS Configuration
          • Vultr
            • Vultr: Store Bedrock Minecraft Worlds on Decentralized Storage
            • Vultr: Store Forge Minecraft Worlds on Decentralized Storage
            • Vultr: Store PaperSpigot Minecraft Worlds on Decentralized Storage
            • Vultr: Store Vanilla Minecraft Worlds on Decentralized Storage
          • Waffle
            • Waffle: Deploy a Smart Contract with Waffle That’s Stored on IPFS
          • Walt.id
            • Walt.id: Mint an NFT with Walt.id and Filebase
          • Web3 Toolbox
            • Web3 Toolbox: Building an NFT Drop With Web3 Toolbox
Powered by GitBook
On this page
  • What is thirdweb?
  • 1. Start by navigating to the thirdweb dashboard and connecting your crypto wallet.
  • 2. Select ‘Deploy New Contract':
  • 3. In this tutorial, we’ll create two contracts: one using an ERC-20 token that'll be a reward in the loot box and one for the NFT rewards inside of the loot box that use an ERC-1155 contract.
  • 4. Select ‘Deploy Now’.
  • 5. For this contract, you will need to fill out configuration fields such as the contract’s name, symbol, description, image, and confirm that the wallet address is correct.
  • 6. By default, there will be a supply of 0 tokens.
  • 7. Select ‘Mint’, then enter the desired number of tokens to be minted.
  • 8. Once these tokens have been minted, they’ll be displayed under the ‘Contract Tokens’ section.
  • 9. Now it’s time to mint our NFTs.
  • 10. Select ‘Deploy Now’, then configure the smart contract’s information.
  • 11. Once created, you’ll see your contract’s dashboard.
  • 12. Now it’s time to mint our NFTs.
  • 13. Select ‘Buckets’ from the left sidebar menu, or navigate to console.filebase.com/buckets.
  • 14. Enter a bucket name and choose the IPFS storage network to create the bucket.
  • 15. Now, upload your NFTs to Filebase using the web console and select ‘Folder’, then select the folder that contains your NFT files.
  • 16. You will see your folder uploaded as a single object:
  • 17. Copy the CID of your folder:
  • 18. Navigate to your IPFS Folder using the Filebase IPFS gateway to see your folder’s files:
  • 19. Head back to thirdweb.
  • 20. Open a command line window and install the thirdweb SDK:
  • 21. Open an IDE such as VSCode and insert the following code, replacing the following values:
  • 22. Save this script as mint.js, then run this script with the command:
  • 23. Refresh your thirdweb dashboard. Your NFTs will be listed.
  • 24. Now it’s time to create the loot box. First, let’s dive into how a loot box works.
  • 25. To create our loot box, start by creating a new Next.js and TypeScript project using the following command:
  • 26. Then, create a new folder called scripts, with a new file called deployPack.mjs. Open this file in your IDE of choice, then insert the following code:
  • 27. Save this file, then run it with the command:
  • 28. Next, create another new file in the scripts directory called bundleTokens.mjs.
  • 29. Then, run this script with the command:
  • Further Reading

Was this helpful?

  1. Archive
  2. Content Archive
  3. Knowledge Base
  4. Web3 Tutorials
  5. thirdweb

thirdweb: Build an NFT Loot Box with thirdweb and IPFS

Learn how to build an NFT loot box with thirdweb and IPFS.

PreviousthirdwebNextthirdweb: Build an NFT Minting Page with thirdweb, IPFS, RainbowKit, and WAGMI

Last updated 10 months ago

Was this helpful?

What is thirdweb?

thirdweb is an easy-to-use platform to build Web3 applications with code or no-code. thirdweb makes creating and deploying apps such as NFT collections or NFT marketplaces easy. thirdweb can be used with objects stored on IPFS, so objects stored in a Filebase IPFS bucket can be seamlessly uploaded for use with a thirdweb app.

Read below to learn how to release an NFT loot box with thirdweb and IPFS.

Prerequisites:

1. Start by navigating to the and connecting your crypto wallet.

2. Select ‘Deploy New Contract':

3. In this tutorial, we’ll create two contracts: one using an ERC-20 token that'll be a reward in the loot box and one for the NFT rewards inside of the loot box that use an ERC-1155 contract.

Let’s start with the ERC-20 token. Select ‘Token’ under the ‘Popular’ category.

4. Select ‘Deploy Now’.

5. For this contract, you will need to fill out configuration fields such as the contract’s name, symbol, description, image, and confirm that the wallet address is correct.

Then, select the blockchain for this contract to be deployed on. This tutorial uses the Mumbai Testnet network. When finished, select ‘Deploy Now’ to deploy the smart contract.

6. By default, there will be a supply of 0 tokens.

To include the token in our loot box, we’ll need to mint some.

7. Select ‘Mint’, then enter the desired number of tokens to be minted.

8. Once these tokens have been minted, they’ll be displayed under the ‘Contract Tokens’ section.

9. Now it’s time to mint our NFTs.

Head back to the thirdweb dashboard, select ‘Deploy New Contract’, then select the ‘Edition’ smart contract under ‘NFTs’.

10. Select ‘Deploy Now’, then configure the smart contract’s information.

11. Once created, you’ll see your contract’s dashboard.

12. Now it’s time to mint our NFTs.

Select ‘Create Bucket’ in the top right corner to create a new bucket for your NFTs.

14. Enter a bucket name and choose the IPFS storage network to create the bucket.

Bucket names must be unique across all Filebase users, be between 3 and 63 characters long, and can contain only lowercase characters, numbers, and dashes.

15. Now, upload your NFTs to Filebase using the web console and select ‘Folder’, then select the folder that contains your NFT files.

These files need to be named in sequential order, such as 0.png, 1.png, 2.png, etc.

16. You will see your folder uploaded as a single object:

17. Copy the CID of your folder:

18. Navigate to your IPFS Folder using the Filebase IPFS gateway to see your folder’s files:

https://ipfs.filebase.io/ipfs/IPFS_CID

Take note of this URL.

19. Head back to thirdweb.

Select the ‘Code’ tab. This code showcases different code snippets to mint your NFTs using scripts, with your contract address and crypto wallet address inputted automatically for easy copy and paste. This tutorial will showcase the JavaScript code examples, but you can use any of the languages showcased in this Code tab. You can follow along with the code examples showcased in this tutorial, or copy and paste the snippets provided in this tab.

20. Open a command line window and install the thirdweb SDK:

npm install @thirdweb-dev/sdk

21. Open an IDE such as VSCode and insert the following code, replacing the following values:

  • CONTRACT: Your Edition NFT contract address. This can be found in the thirdweb dashboard here:

  • WALLET_ADDRESS: Your crypto wallet address.

  • Each IPFS_CID with your IPFS folder CID you took note of earlier.

  • Adjust the SUPPLY value for each NFT to reflect how many of each you would like included in your loot box.

import { ThirdwebSDK } from "@thirdweb-dev/sdk";

const sdk = new ThirdwebSDK("mumbai");
const contract = await sdk.getContract("0x86d96De91B42338eF8E8Aa18Df6f7c0f1cfFd5AA", "edition");

// Address of the wallet you want to mint the NFT to
const toAddress = "0xE9275fc700e9C22f262ce2222b6d3D57DbE9376c"

// Custom metadata and supplies of your NFTs
const metadataWithSupply = [{
  supply: 50, // The number of this NFT you want to mint
  metadata: {
    name: "Loot Box NFT 1",
    description: "This NFT is part of the Filebase Loot Box",
    image: fs.readFileSync("https://ipfs.filebase.io/ipfs/IPFS_CID/0.png"), // This can be an image url or file
  },
}, {
  supply: 100,
  metadata: {
    name: "Loot Box NFT 2",
    description: "This NFT is part of the Filebase Loot Box",
    image: fs.readFileSync("https://ipfs.filebase.io/ipfs/IPFS_CID/1.png"), // This can be an image url or file
  },
{
  supply: 25,
  metadata: {
    name: "Loot Box NFT 3",
    description: "This NFT is part of the Filebase Loot Box",
    image: fs.readFileSync("https://ipfs.filebase.io/ipfs/IPFS_CID/2.png"), // This can be an image url or file
  },
{
  supply: 10,
  metadata: {
    name: "Loot Box NFT 4",
    description: "This NFT is part of the Filebase Loot Box",
    image: fs.readFileSync("https://ipfs.filebase.io/ipfs/IPFS_CID/3.png"), // This can be an image url or file
  },
{
  supply: 1,
  metadata: {
    name: "Loot Box NFT 5",
    description: "This NFT is part of the Filebase Loot Box",
    image: fs.readFileSync("https://ipfs.filebase.io/ipfs/IPFS_CID/4.png"), // This can be an image url or file
  },
}];

const tx = await contract.mintBatchTo(toAddress, metadataWithSupply);
const receipt = tx[0].receipt; // same transaction receipt for all minted NFTs
const firstTokenId = tx[0].id; // token id of the first minted NFT
const firstNFT = await tx[0].data(); // (optional) fetch details of the first minted NFT

You can edit this script to include as many NFTs as you’d like to mint in your loot box.

22. Save this script as mint.js, then run this script with the command:

node mint.js

23. Refresh your thirdweb dashboard. Your NFTs will be listed.

24. Now it’s time to create the loot box. First, let’s dive into how a loot box works.

A loot box is a pack of multiple different rewards that contain a random selection of different items based on the reward pool. In this case, our rewards are our NFTs. There is a fixed supply of each NFT that we created, with some being in a much higher supply than others. The NFTs with a lower supply are rare to receive, making them worth more.

When you open a loot box, you’ll receive a random selection of the NFTs based on their rarity.

In this tutorial, we have 5 possible NFTs that can be in the loot box. We’ll configure our loot box to include 3 NFTs, making the NFTs with a lower supply rarer to receive within a loot box pack. Each loot box will also include a set number of the ERC-20 tokens that we created at the start of the tutorial. We’ll set a total number of 62 loot boxes that can be claimed and opened.

The total number of loot boxes that you create must take into consideration the total amount of NFTs and Tokens you have minted. In this example, we minted a total of 186 NFTs and 1000 tokens. If every loot box contains 3 NFTs and 20 Tokens, the maximum amount of loot boxes we can create is 62.

25. To create our loot box, start by creating a new Next.js and TypeScript project using the following command:

npx thirdweb create --next --ts

When prompted with the configuration options, use the following answers:

26. Then, create a new folder called scripts, with a new file called deployPack.mjs. Open this file in your IDE of choice, then insert the following code:

import { ThirdwebSDK } from "@thirdweb-dev/sdk";

(async () => {
  const sdk = ThirdwebSDK.fromPrivateKey("PRIVATE_KEY", "mumbai");

  const packAddress = await sdk.deployer.deployPack({
    name: "NFT Loot Box",
    primary_sale_recipient: "WALLET_ADDRESS",
  });

  console.log(`Pack address: ${packAddress}`);
})();

Replace the following values:

  • WALLET_ADDRESS: Your crypto wallet address.

27. Save this file, then run it with the command:

node ./scripts/deployPack.mjs

This script will return a Pack address. Save this address to be used in the next step.

28. Next, create another new file in the scripts directory called bundleTokens.mjs.

Inside this file, insert the following code, replacing the following values to match your configuration:

  • PACK_ADDRESS: The pack address returned in the previous step.

  • TOKEN_ADDRESS: The contract address for your ERC-20 token. This can be found in the thirdweb dashboard:

  • EDITION_ADDRESS: The contract address for your ERC-1155 contract. This can be found in the thirdweb dashboard:

  • Configure the values for quantityPerReward, quantity, and totalReward to match your loot box's values.

import { ThirdwebSDK } from "@thirdweb-dev/sdk";
import fs from "fs";

(async () => {
  const packAddress = "PACK_ADDRESS";
  const tokenAddress = "TOKEN_ADDRESS";
  const editionAddress = "EDITION_ADDRESS";

  const sdk = ThirdwebSDK.fromPrivateKey("PRIVATE_KEY", "mumbai");

  const pack = sdk.getPack(packAddress);

  const token = sdk.getToken(tokenAddress);
  await token.setAllowance(packAddress, 100);

  const edition = sdk.getEdition(editionAddress);
  await edition.setApprovalForAll(packAddress, true);

  const ipfsHash = await sdk.storage.upload(chestFile);
  const url = ipfsHash.uris[0];

const packNfts = await pack.create({
    // Metadata for the pack NFTs
    packMetadata: {
      name: "Filebase NFT Loot Box",
      description:
        "An NFT Loot Box!",
      image: url,
    },

    erc20Rewards: [
      {
        contractAddress: tokenAddress,
        quantityPerReward: 20,
        quantity: 1000,
        totalRewards: 62,
      },
    ],

    erc1155Rewards: [
      {
        contractAddress: editionAddress,
        tokenId: 0,
        quantityPerReward: 1,
        totalRewards: 50,
      },
      {
        contractAddress: editionAddress,
        tokenId: 1,
        quantityPerReward: 1,
        totalRewards: 100,
      },
      {
        contractAddress: editionAddress,
        tokenId: 2,
        quantityPerReward: 1,
        totalRewards: 25,
      },
      {
        contractAddress: editionAddress,
        tokenId: 3,
        quantityPerReward: 1,
        totalRewards: 10,
      },
      {
        contractAddress: editionAddress,
        tokenId: 4,
        quantityPerReward: 1,
        totalRewards: 1,
      },
      ],
    rewardsPerPack: 3,
  });

  console.log(`====== Success: Pack NFTs created =====`);

  console.log(packNfts);
})();

29. Then, run this script with the command:

node ./scripts/bundleTokens.mjs

Further Reading

First, we need some images stored on IPFS. To do this, navigate to . If you don’t have an account already, , then log in.

13. Select ‘Buckets’ from the left sidebar menu, or navigate to .

PRIVATE_KEY: This is the private key from your crypto wallet. You can learn how to export your private key Note that this value should be stored and accessed securely, and should not be made public at any time.

Now that you’ve created an NFT loot box, you can air drop packs to your friend’s wallets, set up a website for loot boxes to be claimed and opened, or use them as community rewards. To learn more about these workflows, check out the for this project.

console.filebase.com
sign up
console.filebase.com/buckets
here.
thirdweb documentation
Install Node.js and npm
MetaMask
VSCode
Sign up
thirdweb dashboard