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
| Action | Fee Amount | Distribution |
|---|---|---|
| Basic Minting | 2 TON | 1 TON → Liquidity, 1 TON → Platform |
| Premium Minting | 10 TON | 6 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 Trading | 0.1 TON flat | 100% → Reserve Pool |
| HODL Club Membership | 1 TON/month | 50% → Rewards, 50% → Platform |
Revenue Pools
For the PoC, implement four primary pools:
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
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
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
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):
- Lock liquidity (10 TON + tokens for Basic, 100 TON + tokens for Premium)
- Transition from bonding curve to AMM
- Enable unrestricted trading with market-determined price
- 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