A tiered token sale segments investors into distinct groups based on their entry point, commitment, and risk profile. The primary phases are Seed, Private, and Public. Seed rounds involve early backers like founders' networks and receive the lowest price and longest vesting. Private sales target venture capital and strategic partners with moderate discounts. Public sales are open to the broader community, often at the highest price and with immediate liquidity. This structure allows projects to reward early supporters while gradually decentralizing ownership.
How to Design a Tiered Sale Structure (Seed, Private, Public)
Introduction to Tiered Token Sales
A tiered token sale is a structured fundraising mechanism where tokens are sold in distinct phases—typically Seed, Private, and Public—each with different terms for investors. This guide explains how to design an effective tiered sale structure.
Designing each tier requires defining clear parameters: token price, allocation size, vesting schedule, and lock-up periods. For example, a typical structure might allocate 15% of the total supply to Seed at $0.10 per token with a 24-month linear vesting and a 12-month cliff. The Private sale could get 10% at $0.15 with an 18-month vesting. The Public sale, often conducted via a Liquidity Bootstrapping Pool (LBP) or Fair Launch, might sell 5% at a market-driven price with no lock-up. Smart contracts like OpenZeppelin's VestingWallet are commonly used to enforce these terms programmatically.
Key technical considerations include contract security and compliance. Each sale tier should be managed by separate, audited smart contracts to isolate risk. Use a mintable ERC-20 token controlled by a Ownable contract to release tokens according to the vesting schedule. Implement a whitelist mechanism for Seed and Private rounds using Merkle proofs for gas efficiency. For the public sale, consider a Dutch auction or fixed-price sale with a hard cap to prevent oversubscription and ensure fair distribution.
Strategic timing between tiers is critical. A minimum gap of 3-6 months between the closing of the Private sale and the Public sale is standard, allowing for product development milestones to be hit, which supports the token's valuation at launch. This tranched approach also helps manage regulatory scrutiny by clearly separating sophisticated investor rounds from public offerings. Always disclose vesting schedules and tokenomics transparently in the project's documentation to build trust.
Common pitfalls to avoid include over-allocating to early rounds, which can lead to excessive sell pressure at launch, and setting vesting periods that are too short. Use SAFT (Simple Agreement for Future Tokens) or similar legal frameworks for private sales to ensure regulatory compliance. Post-sale, the project's treasury—often funded by a separate allocation—should be managed via a multi-signature wallet or DAO to ensure funds are used according to the roadmap outlined during the sale.
How to Design a Tiered Sale Structure (Seed, Private, Public)
Understand the core components and smart contract logic required to implement a multi-round token sale.
A tiered sale structure segments a token distribution into distinct rounds—typically Seed, Private, and Public—each with different pricing, vesting schedules, and access rights. This model is standard for aligning investor incentives with project maturity and regulatory compliance. Before writing code, you must define the key parameters for each round: the token price (often in USD or a stablecoin equivalent), the allocation size (total tokens available), any individual caps, and the vesting schedule. These parameters are commonly stored in a SaleRound struct within your smart contract.
Smart contract security and access control are foundational. You will need a robust role-based access control system, such as OpenZeppelin's AccessControl, to manage permissions for starting rounds, pausing sales, and withdrawing funds. A pausable mechanism is critical for emergency stops. Furthermore, you must decide on the payment currency—whether you will accept only a specific stablecoin like USDC, native chain currency (e.g., ETH), or multiple tokens. Implementing a secure price oracle or a trusted price feed is necessary if your token price is pegged to a fiat value to prevent manipulation.
Vesting logic is a complex but essential prerequisite. You must implement a mechanism to lock purchased tokens and release them linearly over time. This often involves a separate VestingWallet contract or an internal schedule that tracks each investor's totalAllocated, claimed, and startTimestamp. The contract must calculate releasable amounts on-chain, which requires careful consideration of timestamp manipulation and safe math operations. Use established libraries like OpenZeppelin's SafeERC20 and SafeCast to handle token transfers and integer conversions securely.
You must also design your contract's state machine to manage the progression from one sale round to the next. Common states include NotStarted, SeedSale, PrivateSale, PublicSale, and Finished. Transitions between these states should be guarded functions, often triggered by the project admin. It's crucial to enforce that rounds occur in sequence and that parameters like the total supply of tokens for sale are not exceeded across all rounds, preventing inflation or allocation errors.
Finally, consider the user experience and integration requirements. Your contract will need view functions for users to check their eligibility, allocated amount, and vesting details. You should also plan for a claim mechanism that allows users to withdraw their vested tokens over time, which will be a frequent transaction. Thorough testing with tools like Foundry or Hardhat, simulating all sale rounds and edge cases, is a non-negotiable prerequisite before any deployment to a live network.
How to Design a Tiered Sale Structure (Seed, Private, Public)
A tiered sale structure is a common pattern for token distributions, allowing projects to allocate tokens to different investor groups (seed, private, public) with distinct pricing and vesting terms. This guide explains the core smart contract architecture to implement this securely.
A tiered sale contract manages multiple investment rounds within a single system. The core design involves a primary sale contract that holds the token supply and defines separate sale tiers, each with its own configuration: a fixed token price (often in a stablecoin like USDC), a hard cap for total contributions, and individual purchase limits. Common tiers include a seed round for earliest backers, a private sale for strategic investors, and a public sale for the community. Using a single contract prevents fragmentation, ensures consistent logic for vesting and claims, and simplifies security audits.
The contract must enforce strict access control and state transitions. Typically, an admin role (often the project's multisig) can add participant addresses to whitelists for specific tiers before they are active. The contract should progress through phases: setup, active sale for each tier (which can be sequential or overlapping), and a final claim phase. Critical validations include checking the sender is whitelisted for the active tier, that the payment amount is within personal and tier caps, and that the sale has not reached its hard cap. Failed transactions should revert with clear reasons.
Vesting schedules are a key differentiator between tiers. Seed investors might have a 12-month cliff followed by 24-month linear vesting, while public sale participants could have immediate or short-term vesting. Instead of distributing tokens immediately, the contract should mint or allocate tokens to an internal ledger and allow users to claim vested amounts over time. A common pattern is to store for each user: totalAllocated, totalClaimed, and a vestingStart timestamp. A claim() function then calculates the releasable amount based on a linear formula: vestedAmount = (totalAllocated * (block.timestamp - vestingStart) / vestingDuration) - totalClaimed.
Here is a simplified code snippet for a tier structure and a purchase function in Solidity. This example uses a mapping to track tier configurations and user contributions.
soliditystruct TierConfig { uint256 price; // price per token in wei uint256 hardCap; uint256 maxPerUser; bool isActive; } mapping(address => mapping(uint256 => uint256)) public userContribution; // user => tierId => amount mapping(uint256 => TierConfig) public tiers; mapping(address => mapping(uint256 => bool)) public isWhitelisted; // user => tierId function purchaseTokens(uint256 tierId, uint256 paymentAmount) external payable { TierConfig storage tier = tiers[tierId]; require(tier.isActive, "Tier not active"); require(isWhitelisted[msg.sender][tierId], "Not whitelisted"); require(paymentAmount <= tier.maxPerUser, "Exceeds personal cap"); require(totalRaisedPerTier[tierId] + paymentAmount <= tier.hardCap, "Exceeds tier cap"); // Process payment and record allocation userContribution[msg.sender][tierId] += paymentAmount; totalRaisedPerTier[tierId] += paymentAmount; // Calculate and record token allocation (logic omitted for brevity) }
Security considerations are paramount. Use pull-over-push for withdrawals: let users claim tokens instead of sending them automatically to prevent gas wars and reentrancy risks. All funds (both the raised stablecoins and the undistributed tokens) should be withdrawable by a timelock-controlled admin after the sale concludes for safety. Thoroughly test the state machine to prevent a tier from being re-activated accidentally. For production use, consider integrating with audited vesting contract libraries like OpenZeppelin's VestingWallet or TokenVesting. Always conduct a professional audit before deploying a sale contract with real value.
Key Design Concepts
A well-designed token sale structure balances capital raising, community building, and long-term alignment. This section covers the core components of seed, private, and public rounds.
Defining Round Objectives & Tokenomics
Each funding round serves a distinct strategic purpose. The seed round secures early capital for protocol development, typically with a 12-24 month cliff and 3-4 year vesting. The private sale targets strategic partners and VCs for growth capital, often with a 6-12 month cliff. The public sale (IDO/IEO) focuses on broad community distribution and liquidity. Allocate supply accordingly: 10-20% for seed, 15-25% for private, and 5-15% for public, with the majority reserved for treasury, team, and ecosystem incentives.
Vesting Schedules & Cliff Periods
Vesting schedules are critical for long-term alignment and price stability. Implement a linear vesting model post-cliff to release tokens gradually.
- Seed Investors: 12-24 month cliff, 36-48 month total vesting.
- Private Sale: 6-12 month cliff, 24-36 month vesting.
- Team & Advisors: 12+ month cliff, 48+ month vesting (often tied to milestones).
Use smart contract-based vesting (e.g., OpenZeppelin's
VestingWallet) to enforce these terms transparently on-chain, preventing premature sell pressure.
Pricing Strategy & Valuation Caps
Establish a clear pricing ladder that reflects increasing project maturity and risk reduction. The seed round price is lowest, often with a Simple Agreement for Future Tokens (SAFT) and a valuation cap (e.g., $5M-$15M). The private round price increases, with a higher cap (e.g., $20M-$50M) and potentially a discount vs. public price. The public sale uses a fixed price or a bonding curve (e.g., Balancer LBPs). Always disclose fully diluted valuation (FDV) to investors. Avoid excessive dilution between rounds.
Investor Eligibility & KYC/AML
Compliance is non-negotiable. Seed/Private Rounds: Typically require accredited investor verification per jurisdiction (e.g., SEC Rule 506(c) in the US). Public Sales: Require full KYC (Know Your Customer) and AML (Anti-Money Laundering) checks for all participants. Integrate with specialized providers like CoinList, Securitize, or Chainanalysis for streamlined onboarding. Clearly define geographic restrictions to comply with regulations like the US Securities Act. Document all processes for audit trails.
Liquidity Planning & Exchange Listing
Post-sale liquidity management prevents market manipulation. Allocate 2-5% of total token supply to initial DEX liquidity (e.g., Uniswap v3, PancakeSwap). Use a liquidity locker (e.g., Unicrypt, Team Finance) to lock LP tokens for 12+ months. For CEX listings, target Tier 2 exchanges post-public sale (e.g., Bybit, KuCoin) with a roadmap to Tier 1 (e.g., Binance, Coinbase). Coordinate listing timelines with vesting unlocks to manage sell-side flow. A mismanaged listing is a primary cause of token price failure.
Legal Framework & SAFT Agreements
The legal structure defines investor rights and regulatory standing. For early rounds, use a SAFT to sell future token rights to accredited investors, treating tokens as a utility. Engage legal counsel specializing in crypto (e.g., firms like Perkins Coie). Draft clear terms covering:
- Token Rights: Utility vs. security classification.
- Governing Law: Specify jurisdiction (e.g., Singapore, Switzerland).
- Dispute Resolution: Arbitration clauses.
- Disclosures: Comprehensive risk factors. File necessary exemptions (e.g., Reg D 506c). Never proceed without formal legal review.
Typical Tier Specifications
Key parameters for structuring Seed, Private, and Public sale rounds in a token launch.
| Parameter | Seed Round | Private Sale | Public Sale |
|---|---|---|---|
Target Raise | $500K - $2M | $2M - $10M | $1M - $5M |
Token Price | $0.05 - $0.15 | $0.15 - $0.30 | $0.30 - $0.50 |
Vesting Cliff | 6-12 months | 3-6 months | 0-3 months |
Linear Vesting | 24-36 months | 12-24 months | 0-6 months |
Discount vs. Public | 50-70% | 20-40% | 0% |
Investor Accreditation | |||
KYC Required | |||
Lock-up Period | 1 year + vesting | Vesting schedule only | None |
How to Design a Tiered Sale Structure (Seed, Private, Public)
A tiered token sale structure allocates tokens to different investor groups at varying prices and lock-up terms. This guide outlines the smart contract design patterns and economic considerations for implementing seed, private, and public rounds.
The core of a tiered sale is a VestingWallet or LinearVesting contract that holds allocated tokens and releases them according to a predefined schedule. For each tier, you deploy a separate vesting contract or configure distinct schedules within a single contract. Seed and private round investors typically receive tokens at a lower price but with longer cliffs (e.g., 12 months) and linear vesting periods (e.g., 24 months). The public sale, often conducted via a bonding curve or fixed-price sale like a MerkleDistributor, usually has immediate liquidity or a short lock-up. Use OpenZeppelin's VestingWallet as a secure, audited base for these schedules.
Price differentiation is enforced in the sale contracts. A common pattern is to have separate SeedSale, PrivateSale, and PublicSale contracts that each accept a different currency (e.g., stablecoins for private, native token for public) at a fixed rate. The SeedSale contract would have the lowest tokenPrice, while the PublicSale contract has the highest. Each contract mints or transfers tokens from a central TokenSale treasury to the buyer's associated vesting contract. Critical security checks include hardcaps per tier, whitelisting via MerkleProof for seed/private rounds, and timestamp-based phase transitions to prevent overlap.
Smart contract architecture must manage state transitions between sale phases securely. A central SaleManager contract can orchestrate this, using onlyOwner functions to: 1) startSeedSale(), 2) startPrivateSale(), and 3) startPublicSale(). Each function would enable the corresponding sale contract and disable the previous one. This prevents investors from participating in the wrong round. Additionally, the Token contract itself should have a mint function restricted to the sale contracts, ensuring the total supply cap is respected. Always implement a finalizeSale function to burn unsold tokens or allocate them to a community treasury, which is a key trust signal for investors.
Beyond the code, economic design is crucial. Determine tier allocations as a percentage of the total supply (e.g., Seed: 10%, Private: 15%, Public: 5%). The price between tiers should have a clear discount gradient; a 50% discount for seed versus private, and a 20% discount for private versus public, is a common model. These discounts compensate early investors for higher risk and longer capital lock-up. Transparency is achieved by verifying the vesting contract addresses on-chain and publishing the detailed vesting schedule. Tools like Etherscan's "Read Contract" tab allow anyone to query an investor's vested and locked balances.
For a practical implementation, examine live examples. The Uniswap (UNI) airdrop used a MerkleDistributor for its community allocation, which is analogous to a public sale. More complex tiered sales, like those used by Liquity (LQTY) or Frax Finance (FXS), involve staged vesting contracts. When testing, use forked mainnet environments with tools like Foundry or Hardhat to simulate investor behavior across different tiers. Always conduct thorough audits on the vesting and sale contract logic, as bugs here can lead to irreversible token allocation errors or exploits.
Code Deep Dive: Critical Functions
This guide explains the core functions for implementing a multi-phase token sale (Seed, Private, Public) in a smart contract, addressing common developer questions and pitfalls.
You must implement separate storage variables for each tier's configuration. A common pattern uses a struct for tier data and a mapping to store them.
soliditystruct TierConfig { uint256 price; // Price per token in wei uint256 cap; // Max ETH this tier can raise uint256 raised; // ETH already raised in this tier } mapping(uint8 => TierConfig) public tiers; // tierId => config
Access control is critical. Use a modifier like onlyTierActive(tierId) that checks:
- The current block time is within the tier's sale period.
- The tier's
raisedamount is less than itscap. - The buyer is on the tier's allowlist (for Seed/Private).
Failing to check the
raisedamount before allowing a purchase is a common bug that lets a tier exceed its hard cap.
Preventing Cross-Tier Arbitrage
A secure tiered token sale requires structural safeguards to prevent investors from exploiting price differences between seed, private, and public rounds.
Implement Linear Vesting with Cliff
The most effective defense is a vesting schedule. A typical seed round structure includes a 12-month cliff followed by 24-36 months of linear release. This prevents immediate selling pressure and aligns long-term incentives. Key parameters to lock:
- Cliff Period: No tokens are released for 6-12 months post-TGE.
- Vesting Duration: 2-4 years of linear, daily unlocks after the cliff.
- TGE Unlock: A small, immediate unlock (e.g., 5-10%) for public round participants only.
Use Smart Contract-Enforced Transfer Restrictions
Deploy a vesting contract (like OpenZeppelin's VestingWallet) or a custom token with built-in transfer locks. This code-level enforcement is superior to legal agreements. Common mechanisms include:
- Time-locks: Tokens are non-transferable until a specific timestamp.
- Whitelisted Transfers: Allow transfers only to pre-approved addresses (e.g., DEX pools) post-vest.
- Sanctions Snapshot: Record holder balances at TGE to calculate vested amounts programmatically.
Structure Distinct Token Contracts or Tranches
Physically separate tokens for each investor tier until vesting completes. This can be done by issuing wrapped vesting tokens (e.g., erc-20 representations of locked tokens) or using a tranche-based sale contract. Projects like Euler Finance and Maple Finance have used tranche models. This eliminates the technical possibility of cross-tier transfers before the designated unlock schedule.
Apply Dynamic Pricing & Anti-Dilution
Design pricing to minimize the arbitrage gap. Use a graduated pricing model where later rounds have a higher price but better terms (shorter lock-up). Implement anti-dilution protections (e.g., full-ratchet, weighted average) for earlier investors if a later round price is lower. This reduces the incentive to wait for a potentially cheaper public sale.
Enforce KYC & On-Chain Identity
Require KYC verification for all tier participants and bind wallet addresses to verified identities. Use solutions like **Coinlist, Syndicate, or Polygon ID to manage allowlists. This creates a legal and technical barrier to transferring vested tokens to unauthorized parties. On-chain proof like zkKYC can maintain privacy while ensuring compliance.
Audit & Simulate Sale Mechanics
Before launch, conduct a comprehensive smart contract audit focusing on vesting logic and transfer controls. Use forked mainnet simulations (with Foundry or Tenderly) to test edge cases where users might bypass restrictions. Analyze historical exploits in sales like Ethereum Name Service's 2021 launch to understand common vulnerabilities.
Common Implementation Mistakes
Designing a multi-stage token sale (Seed, Private, Public) introduces complex smart contract logic. This guide addresses frequent developer errors, from vesting schedules to access control, that can lead to security vulnerabilities or unintended economic effects.
A common mistake is using a single, linear vesting contract for all sale tiers. Seed and private sale investors often have different cliff periods, vesting durations, and release schedules than the public sale or team allocations.
Key Errors:
- Single Schedule: Applying one
vestingStartTimefor all tiers, which unfairly penalizes later-round participants. - Block-Dependent Logic: Basing vesting calculations on
block.timestampwithout a mechanism to set a fixed, immutable start time post-TGE (Token Generation Event). - Lack of Granularity: Not allowing per-investor or per-tier adjustments for cliffs (e.g., Seed: 12-month cliff, Private: 6-month cliff).
Solution: Implement a vesting contract that accepts parameters per beneficiary or tier. Use a fixed startTimestamp stored upon contract initialization after the TGE, not the deployment time. Consider using OpenZeppelin's VestingWallet as a base for individual schedules.
Resources and Tools
Practical tools and design frameworks for structuring seed, private, and public token sales with clear pricing logic, allocation discipline, and onchain enforceability.
Tiered Pricing and Allocation Modeling
A tiered sale starts with explicit price discovery logic across seed, private, and public rounds. Before writing contracts, model the full token supply and how each tier impacts dilution, implied valuation, and circulating supply.
Key elements to model:
- Per-tier token price and implied FDV (for example: $0.02 seed, $0.06 private, $0.12 public)
- Allocation caps per round as a percentage of total supply (seed 5–10%, private 10–20%, public 5–15%)
- Hard caps and soft caps denominated in USD or ETH
- Post-listing float after TGE accounting for cliffs
Use spreadsheets or Python notebooks to simulate scenarios like partial fills, round overlap, or delayed public sales. Advanced teams also simulate sell pressure by combining unlock schedules with historical CEX volume assumptions. This modeling phase prevents downstream issues like public buyers paying higher prices than fully unlocked private investors.
Legal Sale Instruments and Round Separation
Offchain sale structure must mirror the onchain design. Most tiered sales rely on distinct legal instruments per round to manage risk and jurisdictional exposure.
Typical mapping:
- Seed round: SAFEs or SAFTs with valuation caps and discounts
- Private round: SAFTs with fixed price and vesting schedule
- Public round: Token purchase agreement or exchange IEO terms
Each instrument should explicitly reference:
- Token symbol and maximum supply
- Vesting and transfer restriction mechanics
- Network and contract deployment assumptions
Advanced teams maintain a single source of truth document that maps legal terms directly to contract parameters. This reduces mismatch between investor expectations and deployed logic. Always coordinate legal review before changing token supply, round size, or vesting length after documents are signed.
Post-Sale Analytics and Transparency
After the public sale, transparent reporting builds trust and reduces speculation. Teams should publish round-level allocation data and expected unlock timelines.
Recommended disclosures:
- Tokens sold per tier and remaining treasury balance
- Fully diluted supply versus circulating supply at TGE
- Unlock schedule charts covering the next 24–36 months
Onchain analytics tools and custom Dune dashboards are often used to track vesting contract balances and upcoming unlocks. This allows the team to proactively communicate supply changes before major cliffs. Projects that fail to manage post-sale transparency often face unnecessary volatility even when fundamentals are strong.
Frequently Asked Questions
Common technical questions and solutions for designing and implementing multi-phase token sales (Seed, Private, Public) on-chain.
The primary technical differences lie in the access control, pricing logic, and vesting schedules encoded in the smart contract.
- Seed/Private Sales: Typically use a whitelist mechanism (e.g., a Merkle tree or a signed permit) to restrict participation to approved addresses. The sale contract validates a user's inclusion before accepting funds. Pricing is often fixed in the contract at deployment or set by an admin.
- Public Sale: Usually open to any address. Pricing can be dynamic, using mechanisms like a Dutch auction (price decreases over time) or a fixed-price sale with a hard cap. There is no whitelist check in the core purchase function.
Vesting is also tier-dependent. Seed/private investors often have longer cliffs (e.g., 12 months) and linear release schedules, while public sale participants might have immediate or short-term vesting.
Conclusion and Next Steps
This guide has outlined the technical and strategic components for structuring a multi-round token sale. Here's how to solidify your plan and proceed.
Designing a tiered sale is a foundational step that sets the trajectory for your project's community and treasury. The core principles—transparent vesting schedules, clear eligibility criteria, and secure smart contract architecture—are non-negotiable for building trust. Your technical implementation, whether using a modular framework like OpenZeppelin's VestingWallet or a custom sale contract, must prioritize security audits and gas efficiency. Always test extensively on a testnet, simulating all user interactions from each round.
With your structure defined, the next steps are operational. First, finalize all legal documentation and KYC/AML procedures for private rounds. Second, prepare your technical infrastructure: deploy and verify the final contracts on the mainnet, set up a dedicated multisig wallet for raised funds, and configure your front-end dApp to interact with the sale contracts. Tools like Tenderly for monitoring and Blocknative for transaction management can be invaluable during the live sale event.
Finally, consider the long-term view. A successful sale is the beginning, not the end. Develop a clear plan for post-sale liquidity provisioning, typically involving a DEX pool with a portion of the raised capital. Establish transparent communication channels for investors regarding vesting unlocks and project milestones. The credibility earned from a well-executed, fair sale is a significant asset as you move into the next phase of development and growth.