🥜
Peanut Docs
  • Learn
    • 🥜What is Peanut?
    • 🏦Cashout
      • Supported geographies
    • 📩How to use Peanut Links?
      • ⚙️How do Peanut Links Work?
      • 🔒Trust assumptions
    • 📌Use cases
    • 📚Case Studies
      • 🎁Welcome Packs
      • 📘Raffles to Boost UWAs and Transactions
      • 📗Sending Testnet Tokens at Hackathons
      • 📙IRL Events Marketing
    • ⛓️Supported Chains and Tokens
    • 💰Pricing
    • 🆘Support
  • Integrate
    • Using the SDK
      • Create ClaimLinks
        • Create Link
        • Batch Create Links
        • Create Raffle Links
        • Create Multi-Token Link
        • Create NFT Link
        • Create Gasless Links
        • Create Branded Links
      • Claim
        • Claim Link
        • Claim Gasless Link
        • Claim Cross-Chain Link
        • Claim Raffle Link
        • Claim Link as Sender (Reclaiming)
      • Create Request Link
      • Pay a Request Link
      • Pay a Request Link X-Chain
      • Utils
        • Get Link Details
        • Cross-chain
          • Get Supported Destination Chains
          • Get Supported Destination Tokens
          • Get Cross-Chain Options
          • Get Cross-Chain Route
        • Raffle (Legacy)
          • Get Raffle Info
          • Get User Raffle Status
          • Get Raffle Leaderboard
        • Get Default Provider
        • Get Supported Peanut Chains
        • Toggle Verbosity
        • EthersV5 <> Peanut Transaction Types
        • Estimate Fee Options
        • Get Random String
        • Get all deposits for an Address
        • Get Token Balance
      • API Keys
      • White-Labelling
      • Troubleshooting
      • SDK FAQ
    • Embedding an IFrame
    • Integrate Directly in Smart Contracts
    • Wallet Integrations
      • 🎬UI Examples
  • Other
    • 👾Bug bounties
    • 🔓Security Audit
    • 📜Peanut Protocol Contracts
  • BLOGS
    • Transfer Abstraction
    • Can We Sidestep Onchain Identity?
  • Additional Links
    • 🐦Twitter
    • 😊Telegram
    • 🤙Discord
    • 🥜Work with Us
    • 🎨Press Kit
    • 👨‍⚖️Contact and Legal
Powered by GitBook
On this page
  • Batch Create Links using EthersV5
  • Batch Create Links using Signer Agnostic Functions:
  1. Integrate
  2. Using the SDK
  3. Create ClaimLinks

Batch Create Links

Sometimes you just need to create hundreds of links. Here is how you can!

Batch Create Links using EthersV5

If you are using EthersV5 as your signer, you can call the createLinks function to produce multiple Peanut Links at once.

import peanut, { getDefaultProvider } from '@squirrel-labs/peanut-sdk'
import { Wallet } from 'ethersv5'

const chainId = '11155111' // Sepolia
const mnemonic = 'announce room limb pattern dry unit scale effort smooth jazz weasel alcohol'

async function createLinks(): Promise<string[]> {
	let wallet = Wallet.fromMnemonic(mnemonic)

	const provider = await getDefaultProvider(chainId)
	wallet = wallet.connect(provider)

        const linkDetails = {
            chainId: chainId,
            tokenAmount: 0.001,
            tokenType: 0, // 0 for ether, 1 for erc20, 2 for erc721, 3 for erc1155
            tokenDecimals: 18,
        }
    
    	const createdLinks = await peanut.createLinks({
            structSigner: {
                signer: wallet,
            },
            linkDetails,
            numberOfLinks: 5,
        })
    
        return createdLinks.map((link) => link.link)
}

createLinks().then(() => console.log('Congrats!!'))

Batch Create Links using Signer Agnostic Functions:

You're not using Ethersv5, but some other signing library (viem, web3js, wagmi, inhouse etc)? No problem! You will have to prepare the transactions(s), submit the transaction with your wallet, and use the resulting transaction hash to generate the links. The following code is an example that does not use a particular signer.

const chainId = '11155111' // Sepolia
const mnemonic = 'announce room limb pattern dry unit scale effort smooth jazz weasel alcohol'

async function createLink(): Promise<string | null> {
	let wallet = Wallet.fromMnemonic(mnemonic)

	const provider = await getDefaultProvider(chainId)
	wallet = wallet.connect(provider)

        const linkDetails = {
            chainId: chainId,
            tokenAmount: 0.001,
            tokenType: 0, // 0 for ether, 1 for erc20, 2 for erc721, 3 for erc1155
            tokenDecimals: 18,
        }

        const numberOfLinks = 2

        const passwords = await Promise.all(
            Array.from({ length: numberOfLinks}, async () =>
                peanut.getRandomString(16)
            )
        )
    
        const preparedTransactions = await peanut.prepareDepositTxs({
            address: wallet.address,
            linkDetails,
            passwords: passwords,
            numberOfLinks: numberOfLinks,
        })
    
        const transactionHashes: string[] = []
    
        for (const unsignedTx of preparedTransactions.unsignedTxs) {
            const convertedTx = peanut.peanutToEthersV5Tx(unsignedTx)
    
            const signedTx = await wallet.sendTransaction(convertedTx)
    
            transactionHashes.push(signedTx.hash)
        }
    
        const { links } = await peanut.getLinksFromTx({
            linkDetails,
            passwords: passwords,
            txHash: transactionHashes[transactionHashes.length - 1],
            
        })
        
        return links
}

createLink().then(() => console.log('Congrats!!'))
PreviousCreate LinkNextCreate Raffle Links

Last updated 1 year ago