Skip to content

Tokenomics Implementation

Overview

MemeMint's tokenomics model is designed to be self-sustaining and value-generating from day one, with a focus on clarity and simplicity. For the PoC hackathon, we'll implement a simplified version that demonstrates the core economic principles while deferring more complex mechanisms to later phases.

Economic Flows for PoC

Fee Structure

ActionFee AmountDistribution
Basic Minting2 TON1 TON → Liquidity, 1 TON → Platform
Premium Minting10 TON6 TON → Liquidity, 4 TON → Platform
AMM Trading (Standard)0.2%0.15% → Liquidity, 0.05% → Platform
AMM Trading (Trend Coins)0.1%0.075% → Liquidity, 0.025% → Platform
Fixed-Price Trading0.1 TON flat100% → Reserve Pool
HODL Club Membership1 TON/month50% → Rewards, 50% → Platform

Revenue Pools

For the PoC, implement four primary pools:

  1. Liquidity Pool

    • Funded by: Portion of mint fees (1 TON Basic, 6 TON Premium), portion of trading fees (0.15% standard, 0.075% trend)
    • Purpose: Provide swap liquidity for AMM
    • Implementation: Separate balance tracking per coin
    • Post-Cap: Locks 10 TON (Basic) or 100 TON (Premium) + remaining tokens into AMM
  2. Platform Revenue Pool

    • Funded by: Portion of mint fees (1 TON Basic, 4 TON Premium), portion of trading fees (0.05% standard, 0.025% trend), 50% of HODL Club fees
    • Purpose: Platform sustainability, creator rewards, Meme Battle prizes
    • Implementation: Single pool for all platform revenue
  3. Reserve Pool

    • Funded by: Fixed-price trading fees (0.1 TON/trade)
    • Purpose: Support fixed-price buy/sell mechanism at 24h AMM average price
    • Implementation: Separate balance tracking per coin
    • Limit: 5% of pool per trade
  4. HODL Rewards Pool

    • Funded by: 50% of HODL Club membership fees (0.5 TON per member)
    • Purpose: Provide 1 TON rewards for coins held >30 days (once per coin)
    • Implementation: Tracking of eligible holders and payout status

Implementation Strategy

Smart Contract Functions

Fee Collection

func
;; Example fee collection mechanism (pseudocode)
() collect_fees(int fee_amount, int fee_type) impure {
  ;; fee_type: 0 = mint, 1 = trade, 2 = fixed_price
  
  if (fee_type == 0) {  ;; Mint fee
    int liquidity_portion = fee_amount / 2;  ;; 50% to liquidity for basic
    int platform_portion = fee_amount - liquidity_portion;
    
    send_to_liquidity_pool(liquidity_portion);
    send_to_platform_pool(platform_portion);
  }
  
  if (fee_type == 1) {  ;; Trade fee
    int fee_basis_points = 20;  ;; 0.2%
    int fee = (amount * fee_basis_points) / 10000;
    
    int liquidity_portion = fee / 2;  ;; 50% to liquidity
    int platform_portion = fee - liquidity_portion;
    
    send_to_liquidity_pool(liquidity_portion);
    send_to_platform_pool(platform_portion);
  }
  
  ;; Additional fee types
}

Bonding Curve Implementation

For the PoC, implement a simplified bonding curve with tier-specific caps:

javascript
// JavaScript implementation example
function calculateBondingCurvePrice(supply, amount, tier) {
  // Start price at 0.0005 TON
  const basePrice = 0.0005;
  
  // Tier-specific caps
  const capAmount = tier === 'basic' ? 50 : 500; // 50 TON for Basic, 500 TON for Premium
  
  // Simplified bonding curve formula
  // First 10% of tokens: linear 10% increase
  // Remaining 90%: linear 25% increase
  
  const totalSupply = 1000000; // 1M supply
  const firstTier = totalSupply * 0.1; // First 10%
  
  let price = 0;
  let remainingAmount = amount;
  let currentSupply = supply;
  
  // Calculate price for tokens in first tier
  if (currentSupply < firstTier) {
    const availableInTier = firstTier - currentSupply;
    const amountInTier = Math.min(remainingAmount, availableInTier);
    
    // Linear price increase in first tier (10%)
    const startPrice = basePrice * (1 + (currentSupply / firstTier) * 0.1);
    const endPrice = basePrice * (1 + ((currentSupply + amountInTier) / firstTier) * 0.1);
    const avgPrice = (startPrice + endPrice) / 2;
    
    price += amountInTier * avgPrice;
    
    remainingAmount -= amountInTier;
    currentSupply += amountInTier;
  }
  
  // Calculate price for tokens in second tier
  if (remainingAmount > 0) {
    const secondTierProgress = (currentSupply - firstTier) / (totalSupply - firstTier);
    const secondTierEndProgress = (currentSupply + remainingAmount - firstTier) / (totalSupply - firstTier);
    
    // Linear price increase in second tier (25%)
    const startPrice = basePrice * 1.1 * (1 + secondTierProgress * 0.25);
    const endPrice = basePrice * 1.1 * (1 + secondTierEndProgress * 0.25);
    const avgPrice = (startPrice + endPrice) / 2;
    
    price += remainingAmount * avgPrice;
  }
  
  return price;
}

// Function to check if cap is reached and transition to AMM
function checkCapAndTransition(coinId, currentTotalRaised, tier) {
  const cap = tier === 'basic' ? 50 : 500; // 50 TON for Basic, 500 TON for Premium
  const lockAmount = tier === 'basic' ? 10 : 100; // 10 TON for Basic, 100 TON for Premium
  
  if (currentTotalRaised >= cap) {
    // Transition to AMM
    const remainingTokens = calculateRemainingTokens(coinId);
    transitionToAMM(coinId, lockAmount, remainingTokens);
    
    // Pay creator rewards
    if (tier === 'basic') {
      payCreatorReward(coinId, 0.5); // 0.5 TON for Basic
    } else {
      // Premium: 1 TON base + up to 20 TON if cap reached
      const additionalReward = Math.min(20, (currentTotalRaised / cap) * 20);
      payCreatorReward(coinId, 1 + additionalReward);
    }
    
    return true;
  }
  
  return false;
}

AMM Pool Transition

When a coin reaches its cap (50 TON for Basic, 500 TON for Premium):

  1. Lock liquidity (10 TON + tokens for Basic, 100 TON + tokens for Premium)
  2. Transition from bonding curve to AMM
  3. Enable unrestricted trading with market-determined price
  4. Pay creator rewards (0.5 TON for Basic, 1 TON + up to 20 TON for Premium)

Implementation Notes:

  • Track total TON collected in bonding curve
  • Trigger transition function at appropriate cap threshold
  • Create AMM pool with locked liquidity
  • Update trading mechanism for the coin
  • Implement token burn mechanism (5% of every trade)
javascript
// Function to handle AMM transition
function transitionToAMM(coinId, lockAmount, remainingTokens) {
  // Create AMM pool with locked liquidity
  createAMMPool(coinId, lockAmount, remainingTokens);
  
  // Update coin status
  updateCoinStatus(coinId, 'amm_trading');
  
  // Enable unrestricted trading
  enableUnrestrictedTrading(coinId);
  
  // Log transition event
  logTransitionEvent(coinId, lockAmount, remainingTokens);
}

// Function to implement token burn
function implementTokenBurn(tradeAmount, coinId) {
  const burnPercentage = 0.05; // 5% burn
  const burnAmount = tradeAmount * burnPercentage;
  
  // Execute burn
  burnTokens(coinId, burnAmount);
  
  // Update total supply
  updateTotalSupply(coinId, burnAmount);
  
  // Log burn event
  logBurnEvent(coinId, burnAmount);
  
  return burnAmount;
}

Economic Flows Visualization

┌─────────────────┐     ┌────────────────┐     ┌────────────────┐     ┌────────────────┐
│  Minting Fees   │     │  Trading Fees  │     │ Fixed-Price    │     │  HODL Club     │
│  Basic: 2 TON   │     │  Standard: 0.2%│     │    Fees        │     │  Membership    │
│  Premium: 10 TON│     │  Trend: 0.1%   │     │  0.1 TON/trade │     │  1 TON/month   │
└────────┬────────┘     └────────┬───────┘     └────────┬───────┘     └────────┬───────┘
         │                       │                      │                      │
         ▼                       ▼                      ▼                      ▼
┌─────────────────┐     ┌────────────────┐     ┌────────────────┐     ┌────────────────┐
│ Liquidity Pool  │◄────┤ Fee Distributor├────►│  Reserve Pool  │     │ HODL Club      │
│ (Per Coin)      │     │                │     │  (Per Coin)    │     │ Revenue        │
└─────────┬───────┘     └────────┬───────┘     └────────────────┘     └────────┬───────┘
          │                      │                      ▲                      │
          │                      ▼                      │                      │
          │             ┌────────────────┐              │              ┌───────┴───────┐
          │             │ Platform Pool  │              │              ▼               ▼
          │             │                │              │      ┌────────────────┐   ┌────────────────┐
          │             └────────┬───────┘              │      │  HODL Rewards  │   │Platform Revenue│
          │                      │                      │      │  1 TON/coin    │   │  (50% of fees) │
          │                      │                      │      └────────────────┘   └────────────────┘
          │       ┌──────────────┴──────────────┐      │
          │       ▼              ▼              ▼      │
┌─────────┴───┐ ┌────────────────┐ ┌────────────────┐ │
│Token Burns  │ │ Creator Rewards│ │ Meme Battle    │ │
│5% of trades │ │ Basic: 0.5 TON │ │   Prizes       │ │
└─────────────┘ │ Premium: 1+20  │ │  1 TON/week    │ │
                └────────────────┘ └────────────────┘ │

                              ┌─────────────────────┐ │
                              │ Fixed-Price Buy/Sell│◄┘
                              │     System          │
                              └─────────────────────┘

3. Fixed-Price Trading

javascript
// Fixed-price buy implementation
async function fixedPriceBuy(coinId, amount, userWallet) {
  // Get coin reserve data
  const coin = await getCoinData(coinId);
  const reservePool = coin.reservePool;
  
  // Check reserve capacity
  const maxBuyAmount = reservePool * 0.05; // 5% limit
  if (amount > maxBuyAmount) {
    return { success: false, error: "Amount exceeds 5% pool limit" };
  }
  
  // Calculate price (AMM 24h average + 10% for buys)
  const avgPrice = await get24hAveragePrice(coinId);
  const buyPrice = avgPrice * 1.1; // 10% above average
  const tokenAmount = amount / buyPrice;
  
  // Add fixed fee
  const fee = 0.1; // 0.1 TON flat fee
  const totalCost = amount + fee;
  
  // Calculate and execute burn (5% of trade)
  const burnTokens = tokenAmount * 0.05;
  const finalTokenAmount = tokenAmount - burnTokens;
  
  // Create transaction
  const transaction = {
    to: FIXED_PRICE_ADDRESS,
    value: totalCost,
    data: encodeFixedPriceBuyData(coinId, amount, userWallet)
  };
  
  // Send to user for signing
  const result = await sendTransactionForSigning(transaction);
  
  // Update database records
  if (result.success) {
    await updateReservePool(coinId, amount, fee);
    await updateUserBalance(userWallet, coinId, finalTokenAmount);
    await executeTokenBurn(coinId, burnTokens);
  }
  
  return result;
}

// Fixed-price sell implementation
async function fixedPriceSell(coinId, tokenAmount, userWallet) {
  // Get coin reserve data
  const coin = await getCoinData(coinId);
  const reservePool = coin.reservePool;
  
  // Calculate price (AMM 24h average - 10% for sells)
  const avgPrice = await get24hAveragePrice(coinId);
  const sellPrice = avgPrice * 0.9; // 10% below average
  const tonAmount = tokenAmount * sellPrice;
  
  // Check reserve capacity
  const maxSellAmount = reservePool * 0.05; // 5% limit
  if (tonAmount > maxSellAmount) {
    return { success: false, error: "Amount exceeds 5% pool limit" };
  }
  
  // Add fixed fee (deducted from proceeds)
  const fee = 0.1; // 0.1 TON flat fee
  const finalAmount = tonAmount - fee;
  
  // Calculate and execute burn (5% of trade)
  const burnTokens = tokenAmount * 0.05;
  const finalTokenAmount = tokenAmount - burnTokens;
  
  // Create transaction to sell tokens
  const transaction = {
    to: FIXED_PRICE_ADDRESS,
    value: 0.05, // Gas fee only
    data: encodeFixedPriceSellData(coinId, finalTokenAmount, userWallet)
  };
  
  // Send to user for signing
  const result = await sendTransactionForSigning(transaction);
  
  // Update database records
  if (result.success) {
    await updateReservePool(coinId, -tonAmount, fee);
    await updateUserBalance(userWallet, coinId, -finalTokenAmount);
    await executeTokenBurn(coinId, burnTokens);
    
    // Send TON to user
    await sendTON(userWallet, finalAmount);
  }
  
  return result;
}

HODL Club Implementation

javascript
// HODL Club membership registration
async function joinHODLClub(userWallet) {
  // Membership fee
  const membershipFee = 1; // 1 TON per month
  
  // Create transaction
  const transaction = {
    to: HODL_CLUB_ADDRESS,
    value: membershipFee,
    data: encodeHODLClubJoinData(userWallet)
  };
  
  // Send to user for signing
  const result = await sendTransactionForSigning(transaction);
  
  // Update database records
  if (result.success) {
    // Split fee: 50% to rewards, 50% to platform
    await updateHODLRewardsPool(0.5);
    await updatePlatformRevenue(0.5);
    
    // Set membership expiration
    const expirationDate = new Date();
    expirationDate.setMonth(expirationDate.getMonth() + 1);
    await updateHODLMembership(userWallet, expirationDate);
  }
  
  return result;
}

// Process HODL rewards
async function processHODLRewards() {
  // Get eligible holders (hold >100 tokens for >30 days)
  const eligibleHolders = await getEligibleHODLers();
  
  // Process each eligible holder
  for (const holder of eligibleHolders) {
    // Check if holder already received reward for this coin
    if (!await hasReceivedReward(holder.wallet, holder.coinId)) {
      // Check if sufficient funds in HODL rewards pool
      const rewardsPool = await getHODLRewardsPool();
      
      if (rewardsPool >= 1) {
        // Pay 1 TON reward
        await sendTON(holder.wallet, 1);
        
        // Update rewards pool
        await updateHODLRewardsPool(-1);
        
        // Mark reward as paid
        await markRewardPaid(holder.wallet, holder.coinId);
      }
    }
  }
}

// Implement weekly HODL boost (24h spotlight)
async function processWeeklyHODLBoost() {
  // Get active HODL members
  const members = await getActiveHODLMembers();
  
  // Get coins held by each member
  const memberCoins = await getMemberCoins(members);
  
  // Schedule spotlight for each coin (distribute across week)
  let spotlightDay = 0;
  for (const [member, coins] of Object.entries(memberCoins)) {
    if (coins.length > 0) {
      // Pick one coin per member for spotlight
      const selectedCoin = coins[0]; // Could implement selection logic
      
      // Schedule spotlight (day % 7 to distribute across week)
      await scheduleSpotlight(selectedCoin, spotlightDay % 7);
      spotlightDay++;
    }
  }
}

Projected Revenue Analysis

javascript
// Revenue projection for 5K coins/day
function projectRevenue(coinsPerDay, basicRatio = 0.5) {
  // Calculate mint revenue
  const basicCoins = coinsPerDay * basicRatio;
  const premiumCoins = coinsPerDay * (1 - basicRatio);
  
  const mintRevenue = (basicCoins * 1) + (premiumCoins * 4); // Platform portion only
  
  // Estimate trading revenue (0.05% platform portion)
  const avgTradeSize = 5; // 5 TON average
  const tradesPerCoin = 2; // 2 trades per coin on average
  const totalTradingVolume = coinsPerDay * tradesPerCoin * avgTradeSize;
  const tradingRevenue = totalTradingVolume * 0.0005; // 0.05% average
  
  // Fixed-price trading revenue
  const fixedPriceTradesPerDay = coinsPerDay;
  const fixedPriceFee = 0.1; // 0.1 TON per trade
  const fixedPriceRevenue = fixedPriceTradesPerDay * fixedPriceFee;
  
  // HODL Club revenue (assuming 1 member per coin, 50% to platform)
  const hodlMembersPerDay = coinsPerDay / 30; // Monthly fee, daily equivalent
  const hodlRevenue = hodlMembersPerDay * 1 * 0.5; // 50% of 1 TON
  
  // Calculate total daily revenue
  const totalDailyRevenue = mintRevenue + tradingRevenue + fixedPriceRevenue + hodlRevenue;
  
  // Monthly revenue
  const monthlyRevenue = totalDailyRevenue * 30;
  
  // Monthly costs
  const monthlyCosts = 6000; // $6K/month
  
  // Monthly profit
  const monthlyProfit = monthlyRevenue - monthlyCosts;
  
  return {
    daily: {
      mint: mintRevenue,
      trading: tradingRevenue,
      fixedPrice: fixedPriceRevenue,
      hodl: hodlRevenue,
      total: totalDailyRevenue
    },
    monthly: {
      revenue: monthlyRevenue,
      costs: monthlyCosts,
      profit: monthlyProfit,
      profitMargin: (monthlyProfit / monthlyRevenue) * 100
    }
  };
}

Future Tokenomics Enhancements (Post-Hackathon)

Phase 1 (PoC Implementation)

  • Basic fee collection and distribution
  • Simplified bonding curve with tier-specific caps
  • AMM transition mechanism
  • Reserve pool for fixed-price trading
  • 5% token burn on all transactions
  • Simple HODL Club membership (1 TON/month)
  • Basic creator rewards (0.5 TON Basic, 1 TON + up to 20 TON Premium)

Phase 2 (Enhanced Implementation)

  • Enhanced HODL Club benefits
  • Meme Battle implementation
  • Trend system optimization
  • Expanded creator rewards program
  • Referral system (10% of referral fees)

Phase 3 (Full Implementation)

  • Platform token (MEME) integration
  • Governance mechanisms
  • Advanced staking rewards (10 TON for 24h trending)
  • Cross-platform incentives
  • Advanced analytics and reporting

MemeMint - Hackathon Project