Overview

This guide walks you through the complete lifecycle of a Bondkit token, from initial creation to full decentralization. Understanding this flow is essential for successful token launches and management.

mermaid
flowchart TD A[Deploy Token] --> B[Bonding Phase] B --> C{Target Reached?} C -->|No| D[Continue Trading] D --> C C -->|Yes| E[Migration Ready] E --> F[Migrate to DEX] F --> G[DEX Phase] G --> H[Full Decentralization] style A fill:#4CAF50,stroke:#2E7D32,color:#fff style B fill:#FF9800,stroke:#F57C00,color:#fff style E fill:#9C27B0,stroke:#6A1B9A,color:#fff style F fill:#2196F3,stroke:#1565C0,color:#fff style G fill:#00BCD4,stroke:#00838F,color:#fff style H fill:#4CAF50,stroke:#2E7D32,color:#fff

Phase 1: Token Creation

Pre-Deployment Planning

Critical Decisions:

ParameterImpactRecommendation
finalTokenSupplyTotal tokens ever created1M-100M tokens typical
aggressivenessFactorPrice curve steepness30-60 for balanced launches
targetAmountMigration threshold5-50 trading tokens
tradingTokenWhat users pay withUse B3 for Base mainnet

Example Configuration:

typescript
const tokenConfig = { name: "MyToken", symbol: "MTK", finalTokenSupply: parseEther("10000000"), // 10M tokens aggressivenessFactor: 45, // Moderate curve targetAmount: parseEther("20"), // 20 B3 tokens tradingToken: "0xB3B32F9f8827D4634fE7d973Fa1034Ec9fdDB3B3"};

Fee Distribution Strategy:

typescript
const feeConfig = { feeRecipient: "0x...", // Your treasury/team address lpSplitRatioFeeRecipientBps: 2000n, // 20% to fee recipient // Remaining 80% becomes LP tokens after migration};

Fee Flow:

  • Bonding Phase: 5% of all trades → feeRecipient
  • Post-Migration: 0.3% trading fees → LP providers

Deployment Execution

typescript
import { BondkitTokenFactory } from "@b3dotfun/sdk/bondkit";import { base } from "viem/chains";// 1. Initialize factoryconst factory = new BondkitTokenFactory( base.id, process.env.WALLET_PRIVATE_KEY);// 2. Deploy with full configurationconst tokenAddress = await factory.deployBondkitToken({ // Token metadata name: "MyToken", symbol: "MTK", // Economics finalTokenSupply: parseEther("10000000"), aggressivenessFactor: 45, targetAmount: parseEther("20"), // Fee structure feeRecipient: process.env.TREASURY_ADDRESS, lpSplitRatioFeeRecipientBps: 2000n, // Admin & migration migrationAdminAddress: process.env.ADMIN_ADDRESS, // Uniswap V4 config bondingPhaseSplitter: "0x2AB69e0d9D20D3700466153D84a6574128154Fd2", v4PoolManager: "0x498581fF718922c3f8e6A244956aF099B2652b2b", v4Hook: "0xB36f4A2FB18b745ef8eD31452781a463d2B3f0cC", v4PoolFee: 3000, v4TickSpacing: 60, tradingToken: "0xB3B32F9f8827D4634fE7d973Fa1034Ec9fdDB3B3"});console.log(`✅ Token deployed: ${tokenAddress}`);

Phase 2: Bonding Phase Management

Launch Strategy

Pre-Launch Checklist:

  • Token contract verified on Basescan
  • Community channels established (Discord/Telegram)
  • Marketing materials prepared
  • Initial buying strategy planned
  • Price tracking dashboard ready

Launch Day:

typescript
// Connect to your tokenconst token = new BondkitToken(tokenAddress, privateKey);// Initial purchase to establish priceawait token.buy(parseEther("1"), 0n); // 1 B3 token// Announce launch with real dataconst price = await token.getCurrentPrice();const progress = await token.getBondingProgress();console.log(`🚀 Live at ${formatEther(price)} B3 per token`);console.log(`🎯 ${(progress.progress * 100).toFixed(1)}% to migration`);

Managing the Bonding Curve

Healthy Bonding Phase Indicators:

  • Steady trading volume
  • Growing holder base
  • Active community engagement
  • Progress toward target (but not too fast)
  • Minimal large sell-offs

Warning Signs:

  • No trading activity for 24+ hours
  • Single whale controlling large percentage
  • Rapid target achievement without community
  • Excessive volatility from bots

Phase 3: Migration Readiness

Pre-Migration Checklist

typescript
async function checkMigrationReadiness(token) { const [canMigrate, progress, status] = await Promise.all([ token.canMigrate(), token.getBondingProgress(), token.currentStatus() ]); const checks = { targetReached: canMigrate, progressComplete: progress.progress >= 1.0, stillBondingPhase: status === 1, communityReady: await checkCommunityConsensus(), // Your logic liquidityPlan: await checkPostMigrationPlan() // Your logic }; const allReady = Object.values(checks).every(Boolean); return { ready: allReady, checks, recommendation: allReady ? "✅ Ready to migrate!" : "⏳ Address issues before migration" };}

Migration Timing Strategy

Best Practices:

  • Announce migration 24-48 hours in advance
  • Choose high-activity time for your community
  • Ensure sufficient community consensus
  • Have post-migration marketing ready

Pre-Migration Announcement:

typescript
const migrationData = await token.getMigrationData();const announcement = ` 🚀 MIGRATION SCHEDULED 📊 Final Bonding Stats: • Raised: ${formatEther(progress.raised)} B3 • Tokens Distributed: ${formatEther(totalSupply)} 🔄 Migration Will Create: • Initial LP: ${formatEther(migrationData.ethForLp)} B3 + tokens • Opening Price: ~${calculateOpeningPrice(migrationData)} B3/token ⏰ Migration in 24 hours!`;

The Migration Process:

typescript
// Final checksconst readiness = await checkMigrationReadiness(token);if (!readiness.ready) { throw new Error(`Not ready: ${JSON.stringify(readiness.checks)}`);}// Execute migrationconsole.log("🔄 Starting migration to Uniswap V4...");const migrationTx = await token.migrateToDex();// Wait for confirmationconst receipt = await token.waitForTransaction(migrationTx);if (receipt.status === 'success') { console.log("✅ Migration successful!"); // Verify new status const newStatus = await token.currentStatus(); console.log(`Status: ${newStatus === 2 ? 'DEX Phase' : 'Unknown'}`); // Announce to community const announcement = ` 🎉 MIGRATION COMPLETE! 📍 Now trading on Uniswap V4 🔗 Transaction: ${migrationTx} 💫 Token is now fully decentralized! `; postToDiscord(announcement);}

Phase 4: DEX Phase Operations

Immediate Post-Migration (First 24 Hours)

typescript
// Initialize DEX trading toolsimport { BondkitSwapService } from "@b3dotfun/sdk/bondkit";const swapService = new BondkitSwapService(tokenAddress);// Verify DEX functionalityconst isSwapAvailable = await token.isSwapAvailable();if (isSwapAvailable) { console.log("✅ DEX trading active"); // Test swap quote const quote = await swapService.getSwapQuote({ tokenIn: "0xB3B32F9f8827D4634fE7d973Fa1034Ec9fdDB3B3", tokenOut: tokenAddress, amountIn: "1", tokenInDecimals: 18, tokenOutDecimals: 18, slippageTolerance: 0.005, recipient: testAddress }); console.log(`DEX Price: ${quote.executionPrice} B3 per token`);}

Long-Term DEX Strategy

Initial Liquidity Analysis:

typescript
async function analyzeLiquidity() { // Get pool info (implementation depends on your setup) const poolData = await getUniswapV4PoolData(tokenAddress); return { totalValueLocked: poolData.tvl, tradingVolume24h: poolData.volume24h, priceImpactFor1k: await calculatePriceImpact(1000), liquidityUtilization: poolData.utilization, recommendations: { needsMoreLiquidity: poolData.tvl < minimumTVL, shouldIncentivize: poolData.utilization > 0.8, healthyTrading: poolData.volume24h > minimumVolume } };}

Liquidity Incentive Program:

typescript
// Example LP reward structureconst lpIncentives = { rewardToken: tokenAddress, dailyRewards: parseEther("1000"), // 1000 tokens per day minimumLPTime: 7 * 24 * 3600, // 7 days minimum bonusMultipliers: { week1: 2.0, // 2x rewards first week month1: 1.5, // 1.5x rewards first month longTerm: 1.0 // Standard rewards after }};

Phase 5: Full Decentralization

Ownership Renunciation

typescript
// Final step: Complete decentralizationasync function finalizeDecentralization(token) { // Verify everything is working properly const healthChecks = await performFinalHealthChecks(token); if (!healthChecks.allPassed) { throw new Error("Health checks failed - do not renounce ownership yet"); } // Point of no return warning console.log("⚠️ WARNING: This will permanently renounce all admin control"); console.log("⚠️ No further contract modifications will be possible"); console.log("⚠️ Ensure community governance is established if needed"); // Final renunciation const tx = await token.renounceTokenOwnership(); const receipt = await token.waitForTransaction(tx); if (receipt.status === 'success') { console.log("🎊 TOKEN FULLY DECENTRALIZED!"); console.log("🎊 Community now has complete control"); // Final community announcement const announcement = ` 🎊 DECENTRALIZATION COMPLETE! ✅ All admin keys renounced ✅ Community in full control ✅ Permissionless and unstoppable Thank you for this journey! 🚀 `; await postFinalAnnouncement(announcement); }}

Post-Renunciation Operations

Governance Structure Options:

ModelProsConsBest For
No GovernanceSimple, truly decentralizedCannot upgrade/changeSimple tokens
Token VotingHolder-driven decisionsCan be gamed by whalesActive communities
MultisigTrusted group decisionsSemi-centralizedTechnical projects
DAOFull on-chain governanceComplex, slowLarge projects

Implementation Examples:

typescript
// Option 1: Simple token votingconst governanceConfig = { votingToken: tokenAddress, minimumQuorum: parseEther("1000000"), // 1M tokens votingPeriod: 7 * 24 * 3600, // 7 days executionDelay: 2 * 24 * 3600 // 2 days};// Option 2: Community multisigconst multisigConfig = { signers: [ "0x...", // Community member 1 "0x...", // Community member 2 "0x...", // Community member 3 "0x...", // Community member 4 "0x..." // Community member 5 ], threshold: 3, // 3 out of 5 required timelock: 24 * 3600 // 24 hour delay};

Handover Documentation:

  • Complete technical documentation
  • Community management guides
  • Emergency response procedures
  • Contact information for technical help

Community Tools:

typescript
const communityResources = { // Analytics dashboards: [ "https://dexscreener.com/base/{tokenAddress}", "https://basescan.org/token/{tokenAddress}" ], // Trading dexInterfaces: [ "https://app.uniswap.org/swap", "https://pancakeswap.finance/swap" ], // Community channels: { discord: "https://discord.gg/...", telegram: "https://t.me/...", twitter: "https://twitter.com/...", website: "https://..." }};

Lifecycle Success Metrics

Key Performance Indicators

typescript
const bondingPhaseKPIs = { // Growth Metrics timeToTarget: "< 30 days ideal", uniqueHolders: "> 100 minimum", averageHolding: "1-5% of supply per holder", // Trading Health dailyVolume: "> 1% of raised amount", priceStability: "< 50% daily volatility", communityEngagement: "> 50 active members", // Distribution topHolderConcentration: "< 20% by largest holder", whaleRisk: "< 50% by top 10 holders", // Success Signals organicGrowth: "Community-driven, not bot-heavy", sustainedInterest: "Consistent activity over time", realUtility: "Clear value proposition"};

Common Pitfalls & Solutions

Warning

Critical Mistakes to Avoid:

  1. Rushing Migration: Don't migrate immediately upon target - ensure community readiness
  2. Poor Communication: Keep community informed at every phase
  3. Whale Concentration: Monitor for unhealthy token concentration
  4. Technical Issues: Thoroughly test all integrations before launch
  5. Legal Compliance: Ensure regulatory compliance in your jurisdiction

Troubleshooting Guide

Problem: No trading activity

Solutions:

  • Increase marketing and community outreach
  • Lower aggressiveness factor if price rises too quickly
  • Ensure trading token (B3) is easily accessible
  • Add trading charts and analytics tools

Problem: Whale manipulation

Solutions:

  • Implement community watch programs
  • Use social pressure for responsible trading
  • Consider maximum purchase limits in future versions
  • Build strong community consensus

Problem: Migration fails

Solutions:

  • Check all parameters are correct
  • Ensure sufficient gas and proper wallet setup
  • Verify target is actually reached
  • Contact technical support if needed

Problem: Poor opening price

Solutions:

  • Migration price is algorithmically determined
  • Market will find true value over time
  • Focus on utility and community building
  • Avoid artificial price manipulation

Problem: Low liquidity

Solutions:

  • Implement LP reward programs
  • Partner with market makers
  • Educate community about LP provision
  • Consider liquidity mining campaigns

Problem: Community confusion

Solutions:

  • Create clear migration guides
  • Host community AMAs and tutorials
  • Provide multiple trading interface options
  • Maintain active community support

Next Steps

Plan Your Launch

Use the quickstart guide to begin your token deployment

Learn More
Choose Parameters

Learn how to configure your bonding curve parameters

Learn More
Technical Reference

Detailed SDK documentation for developers

Learn More
Get Support

Join the community for help and guidance


Note

Success Tips:

  • Start with smaller, test launches to gain experience
  • Build genuine community before, during, and after bonding
  • Focus on real utility and value creation
  • Be transparent about tokenomics and plans
  • Plan for long-term sustainability, not just initial hype
Ask a question... ⌘I