SECTION 1: LEARNING OBJECTIVES

By the end of this lesson, you will be able to:

  • Define token distribution and allocation strategies.

  • Explain the different stages of token distribution (seed, private, public).

  • Understand vesting schedules and their importance.

  • Describe distribution methods (ICO, IDO, IEO, airdrops, etc.).

  • Differentiate between fair launch and pre-mined distributions.

  • Identify the stakeholders and their allocations.

  • Implement a token vesting simulation in Python.

  • Develop a framework for equitable token distribution.


SECTION 2: TOKEN DISTRIBUTION STAGES

2.1 Overview

Token distribution is the process of allocating tokens to various stakeholders. A well-designed distribution ensures alignment of incentives, fair access, and long-term sustainability.

2.2 Distribution Stages

text
┌─────────────────────────────────────────────────────────────────────────────┐
│                    TOKEN DISTRIBUTION STAGES                                │
├─────────────────────────────────────────────────────────────────────────────┤
│                                                                             │
│  SEED ROUND                                                                 │
│  ┌──────────────────────────────────────────────────────────────────────┐   │
│  │ • Early-stage investors                                             │   │
│  │ • Large discount                                                     │   │
│  │ • Long vesting periods (12-24 months)                               │   │
│  │ • Small allocation (~1-5%)                                           │   │
│  └──────────────────────────────────────────────────────────────────────┘   │
│                                    │                                        │
│                                    v                                        │
│  PRIVATE SALE                                                               │
│  ┌──────────────────────────────────────────────────────────────────────┐   │
│  │ • VC firms, strategic partners                                      │   │
│  │ • Discounted price                                                   │   │
│  │ • Medium vesting (6-12 months)                                      │   │
│  │ • Medium allocation (~5-15%)                                         │   │
│  └──────────────────────────────────────────────────────────────────────┘   │
│                                    │                                        │
│                                    v                                        │
│  PUBLIC SALE (ICO/IDO/IEO)                                                 │
│  ┌──────────────────────────────────────────────────────────────────────┐   │
│  │ • General public                                                   │   │
│  │ • Market price                                                       │   │
│  │ • Limited or no vesting                                             │   │
│  │ • Variable allocation                                                │   │
│  └──────────────────────────────────────────────────────────────────────┘   │
│                                    │                                        │
│                                    v                                        │
│  COMMUNITY & ECOSYSTEM                                                     │
│  ┌──────────────────────────────────────────────────────────────────────┐   │
│  │ • Airdrops                                                          │   │
│  │ • Staking rewards                                                   │   │
│  │ • Liquidity mining                                                  │   │
│  │ • Governance participation                                          │   │
│  └──────────────────────────────────────────────────────────────────────┘   │
│                                    │                                        │
│                                    v                                        │
│  TEAM & ADVISORS                                                          │
│  ┌──────────────────────────────────────────────────────────────────────┐   │
│  │ • Core team                                                         │   │
│  │ • Advisors                                                          │   │
│  │ • Long vesting (24-48 months)                                       │   │
│  │ • Significant allocation (~15-25%)                                  │   │
│  └──────────────────────────────────────────────────────────────────────┘   │
│                                                                             │
└─────────────────────────────────────────────────────────────────────────────┘

2.3 Distribution Methods

 
 
Method Description Pros Cons
ICO (Initial Coin Offering) Direct token sale to public Direct fundraising Regulatory risk
IDO (Initial DEX Offering) Token sale on DEX Decentralised, immediate liquidity Volatility
IEO (Initial Exchange Offering) Token sale on exchange Trust, exchange support Gatekeeping
Airdrop Free token distribution Community building May attract speculators
Mining Proof of work rewards Decentralised Energy-intensive
Staking Proof of stake rewards Incentivises holding Dilution
Liquidity Mining Rewards for providing liquidity Bootstraps liquidity Short-term participants

SECTION 3: VESTING SCHEDULES

3.1 What is Vesting?

Vesting is the process by which tokens are released over time to prevent immediate selling and align long-term incentives. It ensures that team members and early investors remain committed to the project.

3.2 Vesting Parameters

 
 
Parameter Description Example
Cliff Period Time before any tokens are released 6 months
Vesting Period Time over which tokens are released 24 months
Release Schedule How tokens are released Linear, monthly
Lock-Up Period Time tokens cannot be transferred 12 months
TGE (Token Generation Event) Date tokens are first distributed Launch date

3.3 Vesting Models

text
┌─────────────────────────────────────────────────────────────────────────────┐
│                    VESTING MODELS                                           │
├─────────────────────────────────────────────────────────────────────────────┤
│                                                                             │
│  1. LINEAR VESTING                                                          │
│  ┌──────────────────────────────────────────────────────────────────────┐   │
│  │ • Tokens released evenly over time                                   │   │
│  │ • Predictable, simple                                               │   │
│  │ • Example: 1/24 per month for 24 months                             │   │
│  └──────────────────────────────────────────────────────────────────────┘   │
│                                                                             │
│  2. CLIFF VESTING                                                           │
│  ┌──────────────────────────────────────────────────────────────────────┐   │
│  │ • No tokens released until cliff date                                │   │
│  │ • Large release at cliff date                                       │   │
│  │ • Example: 25% after 6 months, then linear                          │   │
│  └──────────────────────────────────────────────────────────────────────┘   │
│                                                                             │
│  3. GRADUAL VESTING                                                         │
│  ┌──────────────────────────────────────────────────────────────────────┐   │
│  │ • Increasing release rate over time                                 │   │
│  │ • Rewards long-term commitment                                      │   │
│  │ • Example: 10% first year, 20% second year                          │   │
│  └──────────────────────────────────────────────────────────────────────┘   │
│                                                                             │
│  4. PERFORMANCE-BASED VESTING                                               │
│  ┌──────────────────────────────────────────────────────────────────────┐   │
│  │ • Release tied to milestones                                         │   │
│  │ • Aligns with project goals                                         │   │
│  │ • Example: 10% per major protocol upgrade                          │   │
│  └──────────────────────────────────────────────────────────────────────┘   │
│                                                                             │
└─────────────────────────────────────────────────────────────────────────────┘

SECTION 4: STAKEHOLDER ALLOCATION

4.1 Typical Allocation Breakdown

 
 
Stakeholder Typical Allocation Vesting Rationale
Team 15-25% 24-48 months Long-term commitment
Advisors 2-5% 12-24 months Expertise and guidance
Seed Investors 5-10% 12-24 months Early funding
Private Investors 10-20% 6-12 months Growth funding
Public Sale 10-20% 0-6 months Market access
Community 15-30% Variable Adoption and engagement
Treasury 10-20% Controlled Development and operations

4.2 Allocation Factors

 
 
Factor Description Impact
Project Stage Earlier stages need more incentives Higher team/investor allocation
Funding Need More funding needed = higher investor allocation Increased investor portion
Decentralisation Goal More decentralised = higher community allocation Lower team/investor portion
Network Type Protocol vs application Different stakeholder priorities
Regulatory Environment Compliance requirements Restrictions on allocations

SECTION 5: FAIR LAUNCH VS PRE-MINED

5.1 Fair Launch

Definition: A token launch where no tokens are pre-allocated to the team or investors. All tokens are distributed through mining, staking, or other permissionless mechanisms.

Examples: Bitcoin, Litecoin, Dogecoin

Pros:

  • Truly decentralised

  • No pre-allocated advantage

  • Community-driven

Cons:

  • No funding for development

  • Slower growth

  • Vulnerability to attacks

5.2 Pre-Mined Launch

Definition: A token launch where tokens are created before the public launch and allocated to the team, investors, and other stakeholders.

Examples: Ethereum, most DeFi tokens

Pros:

  • Funding for development

  • Faster growth

  • Team incentives aligned

Cons:

  • Centralisation of ownership

  • Insider advantage

  • Regulatory scrutiny


SECTION 6: IMPLEMENTATION IN PYTHON

python
# ===================================================================
# MODULE 6, LESSON 2: TOKEN DISTRIBUTION AND ALLOCATION
# ===================================================================

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("TOKEN DISTRIBUTION AND ALLOCATION")
print("="*70)

# ----------------------------------------------------------------
# PART A: VESTING SCHEDULE SIMULATION
# -----------------------------------------------------------------

print("\n" + "-"*60)
print("PART A: Vesting Schedule Simulation")
print("-"*60)

class VestingSchedule:
    """
    Simulated token vesting schedule.
    """
    def __init__(self, total_tokens: int, cliff_months: int, vesting_months: int,
                 tge_percentage: float = 0.0):
        self.total_tokens = total_tokens
        self.cliff_months = cliff_months
        self.vesting_months = vesting_months
        self.tge_percentage = tge_percentage
        self.released = 0
        self.vested = []
        self.schedule = []
    
    def calculate_vesting(self, months: int) -> Dict:
        """Calculate vesting at a given month."""
        if months < self.cliff_months:
            return {'released': 0, 'vested': 0, 'lock': self.total_tokens}
        
        # TGE release
        tge_tokens = self.total_tokens * self.tge_percentage
        
        # Linear vesting after cliff
        months_after_cliff = months - self.cliff_months
        if months_after_cliff >= self.vesting_months:
            tge_tokens = self.total_tokens
        else:
            remaining_tokens = self.total_tokens - tge_tokens
            monthly_vest = remaining_tokens / self.vesting_months
            vested_after_cliff = monthly_vest * months_after_cliff
            vested = tge_tokens + vested_after_cliff
        
        return {
            'released': min(vested, self.total_tokens),
            'vested': min(vested, self.total_tokens),
            'lock': max(0, self.total_tokens - min(vested, self.total_tokens))
        }
    
    def generate_schedule(self, total_months: int) -> pd.DataFrame:
        """Generate a full vesting schedule."""
        data = []
        for month in range(total_months + 1):
            result = self.calculate_vesting(month)
            data.append({
                'month': month,
                'released': result['released'],
                'vested': result['vested'],
                'lock': result['lock'],
                'percentage_released': result['released'] / self.total_tokens * 100
            })
        self.schedule = data
        return pd.DataFrame(data)

# Simulate different vesting schedules
print("Vesting Schedule Simulations:")

# Schedule 1: Standard team vesting
team_vesting = VestingSchedule(
    total_tokens=1000000,
    cliff_months=12,
    vesting_months=24,
    tge_percentage=0.0
)

# Schedule 2: Investor vesting
investor_vesting = VestingSchedule(
    total_tokens=1000000,
    cliff_months=6,
    vesting_months=12,
    tge_percentage=0.25
)

# Schedule 3: Community vesting
community_vesting = VestingSchedule(
    total_tokens=1000000,
    cliff_months=0,
    vesting_months=6,
    tge_percentage=0.50
)

# Generate schedules
schedules = {
    'Team': team_vesting,
    'Investor': investor_vesting,
    'Community': community_vesting
}

for name, schedule in schedules.items():
    df = schedule.generate_schedule(36)
    print(f"\n{name} Vesting Schedule (36 months):")
    print(f"  Total Tokens: {schedule.total_tokens:,}")
    print(f"  Cliff: {schedule.cliff_months} months")
    print(f"  Vesting: {schedule.vesting_months} months")
    print(f"  TGE Release: {schedule.tge_percentage:.0%}")
    print(f"  Released at 36 months: {df.iloc[-1]['percentage_released']:.0f}%")

# Visualise vesting schedules
fig, ax = plt.subplots(figsize=(12, 6))

for name, schedule in schedules.items():
    df = schedule.generate_schedule(36)
    ax.plot(df['month'], df['percentage_released'], label=name, linewidth=2)

ax.set_xlabel('Months Since TGE')
ax.set_ylabel('Percentage of Tokens Released')
ax.set_title('Token Vesting Comparison')
ax.legend()
ax.grid(True, alpha=0.3)

plt.tight_layout()
plt.savefig('vesting_schedules.png', dpi=300, bbox_inches='tight')
plt.show()
print("Vesting schedule chart saved as 'vesting_schedules.png'")

# ----------------------------------------------------------------
# PART B: TOKEN ALLOCATION MODELS
# -----------------------------------------------------------------

print("\n" + "-"*60)
print("PART B: Token Allocation Models")
print("-"*60)

allocation_models = {
    "Balanced": {
        'Team': 20, 'Advisors': 5, 'Seed': 8, 'Private': 15,
        'Public': 12, 'Community': 25, 'Treasury': 15
    },
    "Community-Focused": {
        'Team': 12, 'Advisors': 3, 'Seed': 5, 'Private': 10,
        'Public': 15, 'Community': 40, 'Treasury': 15
    },
    "Investor-Focused": {
        'Team': 25, 'Advisors': 5, 'Seed': 12, 'Private': 22,
        'Public': 10, 'Community': 16, 'Treasury': 10
    },
    "Decentralised": {
        'Team': 10, 'Advisors': 2, 'Seed': 3, 'Private': 5,
        'Public': 20, 'Community': 45, 'Treasury': 15
    }
}

# Create comparison dataframe
comparison_data = []
for model_name, allocations in allocation_models.items():
    row = {'Model': model_name}
    row.update(allocations)
    comparison_data.append(row)

comparison_df = pd.DataFrame(comparison_data)
print("Token Allocation Models:")
print(comparison_df.to_string(index=False))

# Visualise allocation models
fig, axes = plt.subplots(2, 2, figsize=(14, 10))

for idx, (model_name, allocations) in enumerate(allocation_models.items()):
    ax = axes[idx // 2, idx % 2]
    labels = list(allocations.keys())
    values = list(allocations.values())
    colors = ['#ff6b6b', '#ffd93d', '#6bcb77', '#4d96ff', '#9b59b6', '#1abc9c', '#f39c12']
    ax.pie(values, labels=labels, autopct='%1.1f%%', startangle=90, colors=colors[:len(labels)])
    ax.set_title(f'{model_name} Allocation Model')

plt.tight_layout()
plt.savefig('token_allocation_models.png', dpi=300, bbox_inches='tight')
plt.show()
print("Allocation model chart saved as 'token_allocation_models.png'")

# ----------------------------------------------------------------
# PART C: DISTRIBUTION METHOD COMPARISON
# -----------------------------------------------------------------

print("\n" + "-"*60)
print("PART C: Distribution Method Comparison")
print("-"*60)

method_data = {
    'Method': ['ICO', 'IDO', 'IEO', 'Airdrop', 'Mining', 'Staking', 'Liquidity Mining'],
    'Centralisation': ['High', 'Medium', 'High', 'Low', 'Very Low', 'Low', 'Low'],
    'Cost': ['High', 'Medium', 'Medium', 'Low', 'High', 'Medium', 'Medium'],
    'Access': ['Limited', 'Open', 'Limited', 'Open', 'Open', 'Open', 'Open'],
    'Regulatory Risk': ['High', 'Medium', 'Medium', 'Low', 'Low', 'Medium', 'Medium'],
    'Community Building': ['Low', 'Medium', 'Medium', 'High', 'High', 'High', 'High']
}

method_df = pd.DataFrame(method_data)
print(method_df.to_string(index=False))

# ----------------------------------------------------------------
# PART D: STAKEHOLDER INCENTIVE ALIGNMENT
# -----------------------------------------------------------------

print("\n" + "-"*60)
print("PART D: Stakeholder Incentive Alignment")
print("-"*60)

incentive_data = {
    'Stakeholder': ['Team', 'Advisors', 'Seed Investors', 'Private Investors', 'Public', 'Community'],
    'Primary Goal': ['Project Success', 'Guidance', 'Return on Investment', 'Return on Investment', 'Value', 'Participation'],
    'Time Horizon': ['Long', 'Medium', 'Medium-Long', 'Medium', 'Short-Medium', 'Long'],
    'Risk Tolerance': ['High', 'Medium', 'High', 'Medium', 'Low-Medium', 'Medium'],
    'Key Incentive': ['Tokens + Equity', 'Tokens', 'Tokens', 'Tokens', 'Tokens', 'Governance + Rewards']
}

incentive_df = pd.DataFrame(incentive_data)
print(incentive_df.to_string(index=False))

# ----------------------------------------------------------------
# PART E: SUMMARY AND RECOMMENDATIONS
# -----------------------------------------------------------------

print("\n" + "="*70)
print("PART E: Summary and Recommendations")
print("="*70)

print("""
Token Distribution and Allocation – Key Takeaways:

1. Token distribution stages: seed, private, public, community, team.
2. Vesting schedules: cliff period, vesting period, release schedule.
3. Vesting models: linear, cliff, gradual, performance-based.
4. Distribution methods: ICO, IDO, IEO, airdrops, mining, staking, liquidity mining.
5. Fair launch: no pre-allocation, decentralised distribution.
6. Pre-mined launch: pre-allocated tokens, faster growth.
7. Stakeholder allocation: team (15-25%), investors (20-30%), community (15-30%), treasury (10-20%).

Recommendations:
  - Design fair and transparent token distribution.
  - Implement appropriate vesting schedules for each stakeholder.
  - Align incentives across all stakeholders.
  - Consider decentralisation in allocation decisions.
  - Be transparent about allocation and vesting.
  - Monitor token concentration and distribution.
  - Engage with the community on distribution decisions.
""")