How to generate merkle root for airdrop contract using SDK
In this guide, we will explore how to generate a Merkle root for thirdweb’s airdrop contract.
The new thirdweb v5 SDK provides extensions to generate a Merkle root for the airdrop contract, applicable for all three available contract types: ERC-20, ERC-721 and ERC-1155.
FOR ERC-20
import { generateMerkleTreeInfoERC20 } from "thirdweb/extensions/airdrop";
// snapshot / allowlist of airdrop recipients and amounts
const snapshot = [
{ recipient: "0x...", amount: 10 },
{ recipient: "0x...", amount: 15 },
{ recipient: "0x...", amount: 20 },
];
const tokenAddress = "0x..."; // Address of ERC20 airdrop token
const { merkleRoot, snapshotUri } = await generateMerkleTreeInfoERC20(
{
contract,
tokenAddress,
snapshot,
},
);
FOR ERC-721
import { generateMerkleTreeInfoERC721 } from "thirdweb/extensions/airdrop";
// snapshot / allowlist of airdrop recipients and amounts
const snapshot = [
{ recipient: "0x...", tokenId: 0 },
{ recipient: "0x...", tokenId: 1 },
{ recipient: "0x...", tokenId: 2 },
];
const tokenAddress = "0x..."; // Address of ERC721 airdrop token
const { merkleRoot, snapshotUri } =
await generateMerkleTreeInfoERC721({
contract,
tokenAddress,
snapshot,
});
FOR ERC-1155
import { generateMerkleTreeInfoERC1155 } from "thirdweb/extensions/airdrop";
// snapshot / allowlist of airdrop recipients and amounts
const snapshot = [
{ recipient: "0x...", tokenId: 0, amount: 10 },
{ recipient: "0x...", tokenId: 1, amount: 12 },
{ recipient: "0x...", tokenId: 2, amount: 15 },
];
const tokenAddress = "0x..."; // Address of ERC1155 airdrop token
const { merkleRoot, snapshotUri } =
await generateMerkleTreeInfoERC1155({
contract,
tokenAddress,
snapshot,
});
Can’t get this working? If you’ve followed the above and still have issues, contact our support team for help.
Did this answer your question?
😞
😐
🤩