Pricing

The bonding curve pricing model and the role of aggressivenessFactor.

Visual Price Curves

mermaid
graph LR subgraph "Aggressiveness = 0 (Linear)" A1[0 ETH] -->|Constant Price| A2[Target] end subgraph "Aggressiveness = 50 (Moderate)" B1[0 ETH] -->|Gradual Increase| B2[Target] end subgraph "Aggressiveness = 100 (Steep)" C1[0 ETH] -->|Rapid Increase| C2[Target] end

Bonding Curve Model

Mathematical Formula

Note

Core Formula

text
S = S_final × (R / R_target)^exponent

Where:

  • S = Current token supply
  • S_final = Final token supply
  • R = Amount raised so far
  • R_target = Target amount
  • exponent = 1 / (1 + aggressivenessFactor/100)

Understanding the Exponent

The aggressiveness factor controls how the exponent affects price progression:

AggressivenessExponentFormula BecomesPrice Behavior
01.00S = S_final × (R/R_target)Linear - constant tokens per ETH
250.80S = S_final × (R/R_target)^0.80Slightly curved
500.67S = S_final × (R/R_target)^0.67Moderate curve
750.57S = S_final × (R/R_target)^0.57Steep curve
1000.50S = S_final × √(R/R_target)Very steep (square root)

Aggressiveness Factor Impact

Cumulative Token Distribution

See how tokens are distributed throughout the bonding process with different aggressiveness factors.

Example: 10M B3 target, 1.25M total token supply (1M available for bonding, 250K reserved for LP)

ProgressAggressiveness = 0255075100
10%100,000158,489215,443268,270316,228
20%200,000275,946341,995398,647447,214
30%300,000381,678448,140502,588547,723
40%400,000480,450542,884592,387632,456
50%500,000574,349629,961672,950707,107
60%600,000664,540711,379746,843774,597
70%700,000751,759788,374815,614836,660
80%800,000836,512861,774880,284894,427
90%900,000919,166932,170941,571948,683
100%1,000,0001,000,0001,000,0001,000,0001,000,000
Note

Key Insight: Higher aggressiveness front-loads token distribution to early buyers. At 10% progress:

  • Aggressiveness 0: 100,000 (linear)
  • Aggressiveness 100: 316,228 (3.16x advantage!)

Early buyers with aggressive curves get significantly more tokens for their B3, while late buyers face much higher prices.

Real-World Example: Alice's Purchase

Let's follow Alice, who wants to buy tokens from a new project at launch:

Project Setup:

  • Total Supply: 1.25M tokens (1M for bonding + 250K for LP)
  • Target: 10M B3 to reach migration
  • Aggressiveness: 100 (maximum reward for early buyers)
  • Current Progress: 0% (project just launched)

Alice's Purchase: Alice decides to buy 1M B3 worth of tokens right at launch (0% progress).

  1. Alice sends: 1M B3 tokens
  2. Trading fee (3%): 30K B3 goes to fee recipients
  3. Amount for curve: 970K B3 advances the project to ~9.7% progress
  4. Tokens received: ~306,000 tokens (calculated from bonding curve)

Comparing Different Entry Points: If Alice waited and bought the same 1M B3 worth at different project stages:

Project ProgressAlice's 1M B3 Gets HerPrice per Token
0% (launch)~306,000 tokens~3.3 B3/token
50% progress~114,000 tokens~8.8 B3/token
90% progress~49,000 tokens~20.4 B3/token

Early Buyer Advantage: Alice gets 6.2x more tokens by buying at launch versus waiting until 90% progress!

Note

Key Takeaway: With maximum aggressiveness (100), buying 1M B3 at launch gets Alice 6.2x more tokens than waiting until 90% progress. The bonding curve heavily rewards early participation!

Interactive Price Calculator

typescript
// Calculate tokens received for a given trading token amount function calculateTokensReceived( tradingTokenAmount: number, currentRaised: number, targetAmount: number, totalSupply: number, aggressiveness: number ): number { const exponent = 1 / (1 + aggressiveness / 100); // Calculate supply at current raised const currentSupply = totalSupply * Math.pow(currentRaised / targetAmount, exponent); // Calculate supply after purchase const newRaised = currentRaised + tradingTokenAmount; const newSupply = totalSupply * Math.pow(newRaised / targetAmount, exponent); // Tokens received = difference in supply return newSupply - currentSupply; } // Example usage const tokens = calculateTokensReceived( 1, // 1 ETH purchase 5, // 5 ETH already raised 10, // 10 ETH target 1000000, // 1M total supply 50 // 50% aggressiveness ); console.log(`You'll receive ${tokens.toFixed(0)} tokens`);

Choosing Your Aggressiveness Factor

Decision Framework

Low (0-30)

Best for:

  • Fair launches
  • Community tokens
  • Stable pricing

Pros:

  • Equal opportunity
  • Predictable costs
  • Less FOMO

Cons:

  • No early incentive
  • Slower momentum
Medium (30-70)

Best for:

  • Most projects
  • Balanced approach
  • Moderate rewards

Pros:

  • Some early advantage
  • Still accessible
  • Good momentum

Cons:

  • Moderate complexity
  • Some price variance
High (70-100)

Best for:

  • Hype launches
  • Reward early adopters
  • Fast fundraising

Pros:

  • Strong early incentive
  • Creates urgency
  • Rewards believers

Cons:

  • Can seem unfair
  • High price variance
  • FOMO-driven

Selling Mechanics

When users sell tokens back to the curve:

  1. Price Calculation: Uses inverse of buying formula
  2. Fee Deduction: 5% fee applied to proceeds
  3. Curve Update: Reduces total raised amount
  4. Price Impact: Large sells significantly impact price

Sell Price Formula

typescript
// Calculate trading token received for selling tokens function calculateTradingTokenReceived( tokenAmount: number, currentSupply: number, currentRaised: number, targetAmount: number, totalSupply: number, aggressiveness: number ): number { const exponent = 1 / (1 + aggressiveness / 100); // Calculate new supply after sell const newSupply = currentSupply - tokenAmount; // Calculate corresponding raised amount const supplyRatio = newSupply / totalSupply; const newRaised = targetEth * Math.pow(supplyRatio, 1 / exponent); // ETH received (before fees) const ethBeforeFees = currentRaised - newRaised; // Apply 5% fee return ethBeforeFees * 0.95; }

Edge Cases & Limits

Warning

Important Considerations:

  1. Refunds: If a buy would exceed target, excess ETH is refunded
  2. Minimum Amounts: Very small trades may revert due to rounding
  3. Maximum Supply: Cannot exceed finalTokenSupply
  4. Price Limits: Extreme aggressiveness can cause price spikes
  5. Slippage: Always use minTokensOut for protection

Real-World Examples

Case Study: Fair Launch Token

  • Aggressiveness: 10
  • Target: 50 ETH
  • Result: Nearly linear pricing, community appreciated fairness

Case Study: Hype Token

  • Aggressiveness: 85
  • Target: 100 ETH
  • Result: Reached target in 2 hours, early buyers gained 8x

Case Study: Balanced Project

  • Aggressiveness: 45
  • Target: 25 ETH
  • Result: Steady growth over 3 days, 2.5x advantage for early buyers

Next Steps

Set Aggressiveness

Learn to choose the right factor

Learn More
Price Estimation

Estimate your migration price

Learn More
Ask a question... ⌘I