Skip to main content

Token Drop

Learn how to interact with your Token Drop contract in the SDK.

Create a Token Drop Contract

Deploys a new Token Drop contract
const sdk = useSDK();

const contractAddress = await sdk.deployer.deployTokenDrop({
name: "My Token Drop",
primary_sale_recipient: "your-address",
});
View in React SDK Documentation

Getting the contract in your application

To start using your Token Drop contract inside your application, you need to use its contract address. You can get the contract address from the dashboard.

import { useContract } from '@thirdweb-dev/react'

export default function Component() {
const { contract } = useContract("<YOUR-CONTRACT-ADDRESS>", "token-drop")

// Now you can use the token drop contract in the rest of the component
}

Setting Claim Phases

Configure claim conditions
const presaleStartTime = new Date();
const publicSaleStartTime = new Date(Date.now() + 60 * 60 * 24 * 1000);
const claimConditions = [
{
startTime: presaleStartTime, // start the presale now
maxQuantity: 3117.42, // limit how many tokens are released in this presale
price: 0.001, // presale price per token
snapshot: ['0x...', '0x...'], // limit claiming to only certain addresses
},
{
startTime: publicSaleStartTime, // 24h after presale, start public sale
price: 0.008, // public sale price per token
}
]);
await contract.claimConditions.set(claimConditions);
View in React SDK Documentation

Claiming Tokens

Your users can claim tokens if their wallet address meets the criteria included in the current claim phase.

const address = "{{wallet_address}}"; // address of the wallet you want to claim the NFTs
const quantity = 42.69; // how many tokens you want to claim

const tx = await contract.claimTo(address, quantity);
const receipt = tx.receipt; // the transaction receipt
View in React SDK Documentation

Token Metadata

Get the metadata about the token itself, such as the name, symbol, and decimals.

const token = await contract.get();
View in React SDK Documentation

You can get the total supply of the token too:

const balance = await contract.totalSupply();
View in React SDK Documentation

Token Balance

Balance of the connected wallet

Get Token Balance for the currently connected wallet
const balance = await contract.balance();
View in React SDK Documentation

Balance of a specified wallet

Get Token Balance
const { data: balance, isLoading, error } = useTokenBalance(contract, "{{wallet_address}}");
View in React SDK Documentation

Token Allowance

Allowance refers to how many tokens another address is allowed to spend from your wallet.

For example, our Marketplace contract asks you permission to increase your allowance when you make a bid on an auction listing.

Get allowance for the connected wallet

Get the number of tokens that another wallet can spend on behalf of the connected wallet.

// Address of the wallet to check token allowance
const spenderAddress = "0x...";
const allowance = await contract.allowance(spenderAddress);
View in React SDK Documentation

Get allowance for a specified wallet

Get the number of tokens that another wallet can spend on behalf of the specified wallet.

// Address of the wallet who owns the funds
const owner = "{{wallet_address}}";
// Address of the wallet to check token allowance
const spender = "0x...";
const allowance = await contract.allowanceOf(owner, spender);
View in React SDK Documentation

Set Allowance

Specify how many tokens another wallet is allowed to spend on behalf of the connected wallet.

// Address of the wallet to allow transfers from
const spenderAddress = "0x...";
// The number of tokens to give as allowance
const amount = 100
await contract.setAllowance(spenderAddress, amount);
View in React SDK Documentation

Transfer Tokens

You can transfer tokens from one wallet to another or send tokens to a smart contract address.

Transfer from the connected wallet

Transfer from the connected wallet in batch

Transfer Tokens To Many Wallets
// Data of the tokens you want to mint
const data = [
{
toAddress: "{{wallet_address}}", // Address to mint tokens to
amount: 100, // How many tokens to mint to specified address
},
{
toAddress: "0x...",
amount: 100,
}
]

await contract.transferBatch(data);
View in React SDK Documentation

Transfer from a specified wallet

Burning Tokens

Burning tokens takes a specified amount of tokens out of the circulating supply.

Burn from the connected wallet

// The amount of this token you want to burn
const amount = 1.2;

await contract.burnTokens(amount);
View in React SDK Documentation

Burn from a specified wallet

Burn Tokens
// Address of the wallet sending the tokens
const holderAddress = "{{wallet_address}}";

// The amount of this token you want to burn
const amount = 1.2;

await contract.burnFrom(holderAddress, amount);
View in React SDK Documentation