SECTION 1: LEARNING OBJECTIVES
By the end of this lesson, you will be able to:
-
Define tokenomics and its role in blockchain ecosystems.
-
Explain the key components of token economic design.
-
Understand the difference between tokens, coins, and digital assets.
-
Describe token utility and its relationship to value.
-
Differentiate between inflationary and deflationary token models.
-
Identify the stakeholders in a token economy.
-
Implement a basic token economic simulation in Python.
-
Develop a framework for evaluating tokenomic models.
SECTION 2: WHAT IS TOKENOMICS?
2.1 Definition
Tokenomics is the study and design of the economic systems surrounding tokens on a blockchain network. It encompasses the creation, distribution, utility, and value dynamics of tokens within their ecosystem. Tokenomics combines elements of economics, game theory, and behavioural psychology to create sustainable digital economies.
2.2 The Scope of Tokenomics
┌─────────────────────────────────────────────────────────────────────────────┐ │ THE SCOPE OF TOKENOMICS │ ├─────────────────────────────────────────────────────────────────────────────┤ │ │ │ ┌──────────────────────────────────────────────────────────────────────┐ │ │ │ CREATION & DISTRIBUTION │ │ │ │ How tokens are created, minted, and allocated to participants. │ │ │ │ • Initial supply │ │ │ │ • Minting mechanisms │ │ │ │ • Distribution methods (ICO, IDO, airdrops, etc.) │ │ │ │ • Vesting schedules │ │ │ └──────────────────────────────────────────────────────────────────────┘ │ │ │ │ │ v │ │ ┌──────────────────────────────────────────────────────────────────────┐ │ │ │ UTILITY & FUNCTIONALITY │ │ │ │ What the token is used for within the ecosystem. │ │ │ │ • Governance rights │ │ │ │ • Access to services │ │ │ │ • Fee payment │ │ │ │ • Staking and rewards │ │ │ └──────────────────────────────────────────────────────────────────────┘ │ │ │ │ │ v │ │ ┌──────────────────────────────────────────────────────────────────────┐ │ │ │ VALUE MECHANISMS │ │ │ │ How value is created, captured, and transferred. │ │ │ │ • Demand and supply dynamics │ │ │ │ • Token velocity │ │ │ │ • Burn mechanisms │ │ │ │ • Value accrual │ │ │ └──────────────────────────────────────────────────────────────────────┘ │ │ │ │ │ v │ │ ┌──────────────────────────────────────────────────────────────────────┐ │ │ │ INCENTIVE STRUCTURES │ │ │ │ How participants are incentivised to contribute. │ │ │ │ • Rewards for staking │ │ │ │ • Penalties for malicious behaviour │ │ │ │ • Governance participation │ │ │ │ • Liquidity provision │ │ │ └──────────────────────────────────────────────────────────────────────┘ │ │ │ └─────────────────────────────────────────────────────────────────────────────┘
2.3 Why Tokenomics Matters
| Reason | Description |
|---|---|
| Value Creation | Tokenomics determines how value is created and distributed. |
| Network Effects | Good tokenomics aligns incentives and drives adoption. |
| Sustainability | Ensures the ecosystem can continue to function over time. |
| Governance | Tokens enable decentralised decision-making. |
| Fundraising | Tokens are a mechanism for raising capital. |
| User Engagement | Well-designed incentives retain users. |
SECTION 3: TOKENS VS COINS VS DIGITAL ASSETS
3.1 Definitions
| Term | Definition | Examples |
|---|---|---|
| Coin | A native digital asset with its own blockchain | Bitcoin, Ethereum, Solana |
| Token | A digital asset built on an existing blockchain | USDC (on Ethereum), UNI (on Ethereum) |
| Digital Asset | Any digitally native asset | Coins, tokens, NFTs, digital securities |
3.2 Token Categories
┌─────────────────────────────────────────────────────────────────────────────┐ │ TOKEN CATEGORIES │ ├─────────────────────────────────────────────────────────────────────────────┤ │ │ │ 1. UTILITY TOKENS │ │ ┌──────────────────────────────────────────────────────────────────────┐ │ │ │ • Provide access to a product or service │ │ │ │ • Not designed as an investment │ │ │ │ • Examples: Filecoin (storage access), BAT (advertising) │ │ │ └──────────────────────────────────────────────────────────────────────┘ │ │ │ │ 2. SECURITY TOKENS │ │ ┌──────────────────────────────────────────────────────────────────────┐ │ │ │ • Represent ownership, debt, or rights │ │ │ │ • Subject to securities regulation │ │ │ │ • Examples: Tokenised stocks, real estate tokens │ │ │ └──────────────────────────────────────────────────────────────────────┘ │ │ │ │ 3. GOVERNANCE TOKENS │ │ ┌──────────────────────────────────────────────────────────────────────┐ │ │ │ • Grant voting rights in a protocol │ │ │ │ • Used for decision-making │ │ │ │ • Examples: UNI (Uniswap), MKR (MakerDAO) │ │ │ └──────────────────────────────────────────────────────────────────────┘ │ │ │ │ 4. PAYMENT TOKENS │ │ ┌──────────────────────────────────────────────────────────────────────┐ │ │ │ • Used as a medium of exchange │ │ │ │ • Examples: Bitcoin, Litecoin, USDC │ │ │ └──────────────────────────────────────────────────────────────────────┘ │ │ │ │ 5. ASSET-BACKED TOKENS │ │ ┌──────────────────────────────────────────────────────────────────────┐ │ │ │ • Backed by physical or financial assets │ │ │ │ • Examples: PAXG (gold-backed), USDC (USD-backed) │ │ │ └──────────────────────────────────────────────────────────────────────┘ │ │ │ │ 6. MEME TOKENS │ │ ┌──────────────────────────────────────────────────────────────────────┐ │ │ │ • Community-driven, often humorous │ │ │ │ • Value driven by social sentiment │ │ │ │ • Examples: Dogecoin, Shiba Inu │ │ │ └──────────────────────────────────────────────────────────────────────┘ │ │ │ └─────────────────────────────────────────────────────────────────────────────┘
SECTION 4: KEY TOKENOMIC PARAMETERS
4.1 Supply Parameters
| Parameter | Description | Example |
|---|---|---|
| Max Supply | Maximum number of tokens that can ever exist | Bitcoin: 21,000,000 |
| Circulating Supply | Tokens currently in circulation | Varies by project |
| Total Supply | Max supply minus burned tokens | Varies |
| Inflation Rate | Rate at which new tokens are created | Yearly emission |
| Deflation Rate | Rate at which tokens are burned | Transaction fee burns |
4.2 Distribution Parameters
| Parameter | Description | Example |
|---|---|---|
| Initial Supply | Tokens available at launch | ICO allocation |
| Team Allocation | Tokens allocated to team | Vesting schedule |
| Investor Allocation | Tokens allocated to investors | Seed, private, public |
| Community Allocation | Tokens for community | Airdrops, rewards |
| Treasury | Tokens for project development | Ecosystem fund |
| Vesting Period | Time before tokens can be sold | 6-24 months |
4.3 Utility Parameters
| Parameter | Description | Example |
|---|---|---|
| Governance Rights | Voting power in protocol | Token-weighted voting |
| Access | Required for services | Filecoin storage fees |
| Staking Requirements | Tokens needed to participate | Validator staking |
| Fee Structure | Token used for fees | Gas fees, transaction fees |
| Reward Rate | Returns for participation | Staking APY |
4.4 Velocity and Money Supply
The Velocity of Money (V) in a token economy is the rate at which tokens change hands:
Velocity = GDP of the Token Economy / Money Supply
In a token economy:
-
Low velocity → Tokens are held for investment → Higher price (speculative)
-
High velocity → Tokens are used for transactions → Lower price (utility-driven)
Equation of Exchange (MV = PQ):
-
M = Money Supply (token supply)
-
V = Velocity (how fast tokens move)
-
P = Price of goods/services (in tokens)
-
Q = Quantity of goods/services (ecosystem utility)
SECTION 5: TOKENOMIC MODELS
5.1 Inflationary Models
Tokens are continuously minted, increasing supply over time.
| Model | Description | Examples |
|---|---|---|
| Staking Rewards | Tokens minted for validators | Ethereum (post-merge), Cardano |
| Mining Rewards | Tokens minted for miners | Bitcoin (until 2140) |
| Network Growth | Tokens minted for adoption | Various L1s |
Pros: Incentivises participation, supports network security
Cons: Dilutes existing holders, requires demand to sustain price
5.2 Deflationary Models
Tokens are burned, decreasing supply over time.
| Model | Description | Examples |
|---|---|---|
| Burn Mechanism | Tokens burned from transactions | BNB, Ethereum (EIP-1559) |
| Buy-and-Burn | Project buys and burns tokens | Binance (BNB) |
| Limited Supply | Fixed maximum supply | Bitcoin, many tokens |
Pros: Scarcity, potential price appreciation
Cons: May discourage usage, relies on demand
5.3 Hybrid Models
Combination of inflation and deflation mechanisms.
| Model | Description | Examples |
|---|---|---|
| Mint-and-Burn | Mint for rewards, burn for fees | Various DeFi protocols |
| Dynamic Supply | Supply adjusts based on demand | Algorithmic stablecoins |
SECTION 6: IMPLEMENTATION IN PYTHON
# =================================================================== # MODULE 6, LESSON 1: INTRODUCTION TO TOKENOMICS # =================================================================== import pandas as pd import numpy as np import matplotlib.pyplot as plt from typing import Dict, List import warnings warnings.filterwarnings('ignore') print("="*70) print("INTRODUCTION TO TOKENOMICS") print("="*70) # ---------------------------------------------------------------- # PART A: TOKEN SUPPLY SIMULATION # ---------------------------------------------------------------- print("\n" + "-"*60) print("PART A: Token Supply Simulation") print("-"*60) class TokenSupply: """ Simulated token supply with different emission models. """ def __init__(self, max_supply: int = 1000000): self.max_supply = max_supply self.circulating_supply = 0 self.burned_supply = 0 self.history = [] def mint(self, amount: int) -> bool: """Mint new tokens.""" if self.circulating_supply + amount > self.max_supply: print(f"Cannot mint {amount}: exceeds max supply") return False self.circulating_supply += amount self.history.append({ 'type': 'mint', 'amount': amount, 'circulating': self.circulating_supply, 'burned': self.burned_supply }) return True def burn(self, amount: int) -> bool: """Burn existing tokens.""" if amount > self.circulating_supply: print(f"Cannot burn {amount}: insufficient supply") return False self.circulating_supply -= amount self.burned_supply += amount self.history.append({ 'type': 'burn', 'amount': amount, 'circulating': self.circulating_supply, 'burned': self.burned_supply }) return True def get_inflation_rate(self, window: int = 10) -> float: """Calculate inflation rate over a window.""" if len(self.history) < window: return 0 recent = self.history[-window:] start_supply = recent[0]['circulating'] end_supply = recent[-1]['circulating'] if start_supply == 0: return 0 return (end_supply - start_supply) / start_supply def get_metrics(self) -> Dict: return { 'max_supply': self.max_supply, 'circulating_supply': self.circulating_supply, 'burned_supply': self.burned_supply, 'total_supply': self.circulating_supply + self.burned_supply, 'percentage_circulating': (self.circulating_supply / self.max_supply) * 100 } # Simulate token supply token = TokenSupply(max_supply=1000000) print("Token Supply Simulation:") for i in range(20): # Mint some tokens mint_amount = np.random.randint(1000, 5000) token.mint(mint_amount) # Occasionally burn tokens if np.random.random() < 0.1: burn_amount = np.random.randint(100, 1000) token.burn(burn_amount) # Metrics metrics = token.get_metrics() print(f"Max Supply: {metrics['max_supply']:,}") print(f"Circulating Supply: {metrics['circulating_supply']:,}") print(f"Burned Supply: {metrics['burned_supply']:,}") print(f"Total Supply: {metrics['total_supply']:,}") print(f"Percentage Circulating: {metrics['percentage_circulating']:.1f}%") # ---------------------------------------------------------------- # PART B: TOKEN ECONOMY SIMULATION # ----------------------------------------------------------------- print("\n" + "-"*60) print("PART B: Token Economy Simulation (MV = PQ)") print("-"*60) class TokenEconomy: """ Simulated token economy using the equation of exchange. """ def __init__(self, name: str): self.name = name self.money_supply = 0 self.velocity = 0 self.price_level = 0 self.quantity = 0 self.equilibrium_price = 0 self.history = [] def simulate(self, money_supply: float, velocity: float, quantity: float): """Simulate token economy with given parameters.""" self.money_supply = money_supply self.velocity = velocity self.quantity = quantity # MV = PQ → P = MV / Q self.equilibrium_price = (money_supply * velocity) / quantity self.price_level = self.equilibrium_price self.history.append({ 'money_supply': money_supply, 'velocity': velocity, 'quantity': quantity, 'price': self.equilibrium_price }) return self.equilibrium_price def simulate_scenario(self, scenarios: List[Dict]) -> pd.DataFrame: """Simulate different economic scenarios.""" results = [] for scenario in scenarios: m = scenario.get('money_supply', self.money_supply) v = scenario.get('velocity', self.velocity) q = scenario.get('quantity', self.quantity) price = (m * v) / q results.append({ 'scenario': scenario.get('name', 'Scenario'), 'money_supply': m, 'velocity': v, 'quantity': q, 'price': price }) return pd.DataFrame(results) def get_metrics(self) -> Dict: if not self.history: return {} last = self.history[-1] return { 'name': self.name, 'money_supply': last['money_supply'], 'velocity': last['velocity'], 'quantity': last['quantity'], 'price': last['price'] } # Simulate token economy economy = TokenEconomy("Sample Economy") print("Token Economy Simulation:") print("Scenario 1: Base Case") price1 = economy.simulate( money_supply=1000000, velocity=10, quantity=50000 ) print(f" Money Supply: 1,000,000 tokens") print(f" Velocity: 10 transactions/year") print(f" Quantity: 50,000 units of service") print(f" Price per unit: ${price1:.2f}") print("\nScenario 2: Increased Velocity") price2 = economy.simulate( money_supply=1000000, velocity=20, quantity=50000 ) print(f" Money Supply: 1,000,000 tokens") print(f" Velocity: 20 transactions/year") print(f" Quantity: 50,000 units of service") print(f" Price per unit: ${price2:.2f}") print(f" Impact of velocity increase: {(price2/price1 - 1) * 100:.0f}% price increase") print("\nScenario 3: Increased Supply") price3 = economy.simulate( money_supply=2000000, velocity=10, quantity=50000 ) print(f" Money Supply: 2,000,000 tokens") print(f" Velocity: 10 transactions/year") print(f" Quantity: 50,000 units of service") print(f" Price per unit: ${price3:.2f}") print(f" Impact of supply increase: {(price3/price1 - 1) * 100:.0f}% price increase") # ---------------------------------------------------------------- # PART C: TOKEN DISTRIBUTION VISUALISATION # ----------------------------------------------------------------- print("\n" + "-"*60) print("PART C: Token Distribution Visualisation") print("-"*60) # Simulate token distribution distribution = { 'Category': ['Team', 'Investors', 'Community', 'Treasury', 'Airdrops'], 'Percentage': [15, 25, 30, 20, 10], 'Vesting (months)': [24, 12, 6, 0, 0] } dist_df = pd.DataFrame(distribution) print(dist_df.to_string(index=False)) # Visualise distribution fig, axes = plt.subplots(1, 2, figsize=(14, 5)) ax1 = axes[0] ax1.pie(dist_df['Percentage'], labels=dist_df['Category'], autopct='%1.1f%%', startangle=90) ax1.set_title('Token Distribution by Category') ax2 = axes[1] ax2.bar(dist_df['Category'], dist_df['Vesting (months)'], color='teal', alpha=0.7) ax2.set_xlabel('Category') ax2.set_ylabel('Vesting Period (months)') ax2.set_title('Vesting Period by Category') ax2.grid(True, alpha=0.3) plt.tight_layout() plt.savefig('token_distribution.png', dpi=300, bbox_inches='tight') plt.show() print("Token distribution chart saved as 'token_distribution.png'") # ---------------------------------------------------------------- # PART D: SUMMARY AND RECOMMENDATIONS # ----------------------------------------------------------------- print("\n" + "="*70) print("PART D: Summary and Recommendations") print("="*70) print(""" Introduction to Tokenomics – Key Takeaways: 1. Tokenomics is the design of economic systems around blockchain tokens. 2. Key components: creation/distribution, utility/functionality, value mechanisms, incentive structures. 3. Token categories: utility, security, governance, payment, asset-backed, meme. 4. Key parameters: supply (max, circulating, inflation/deflation rate), distribution (vesting, allocation), utility. 5. Equation of exchange: MV = PQ (Money supply × Velocity = Price × Quantity). 6. Token velocity affects price: higher velocity → lower price (utility-driven). 7. Inflationary models: minting (rewards, mining). Deflationary models: burning (scarcity). Recommendations: - Design tokenomics for long-term sustainability. - Align incentives between all stakeholders. - Consider both inflationary and deflationary mechanisms. - Ensure fair distribution with appropriate vesting. - Build real utility to support token value. - Monitor velocity and adjust parameters. - Be transparent about tokenomics design. """)