Taikodrome is a fork of Aerodrome designed to bootstrap a new DEX economy on Taiko using $TAIKO as the exogenous token. This specification serves as the central reference for all architectural decisions and modifications required.
The architecture diagram above illustrates the complete token flow and governance structure of Taikodrome.
The bonding contract facilitates the one-way conversion of $TAIKO into max-locked veTD positions with competitive early-bird discounts.
Key Features:
- Bootstrap phase: 1:1 TAIKO:TD exchange rate
- Market phase: TWAP-based pricing with discounts
- Illiquidity discount + Early adopter bonus
- Protocol-Owned Liquidity (POL) management
Detailed Specification: BondingCurve.md
Core Functions:
sequenceDiagram
participant User
participant BondingContract
participant VotingEscrow
participant TaikodromeLP
participant Admin
User->>BondingContract: bond(taikoAmount)
BondingContract->>BondingContract: calculateTdAmount()
User->>BondingContract: Transfer TAIKO
BondingContract->>VotingEscrow: createLockFor(user, tdAmount, maxDuration)
VotingEscrow->>User: Mint veTD NFT
Admin->>BondingContract: deployPol(taikoAmount, tdAmount)
Note over BondingContract: Auth: onlyAdmin
BondingContract->>TaikodromeLP: addLiquidity(TAIKO, TD)
TaikodromeLP->>BondingContract: LP tokens
The bonding contract requires a manipulation-resistant price feed for the TAIKO/TD pair after the bootstrap phase.
Implementation Strategy: TWAP-Liquidity-Bootstrap-Strategy.md
Key Considerations:
- Minimum 30-minute TWAP window
- Sufficient liquidity depth before enabling
- Flash loan attack resistance
Since $TAIKO implements ERC20Votes, pools containing TAIKO must delegate voting power to prevent "dead" governance tokens.
Implementation Options:
- Factory-level: Modify
PoolFactoryto auto-delegate on pool creation - Pool initialization: Add delegation logic to
Pool.initialize() - Public function: Add
delegateTaiko()callable post-deployment
// Recommended approach in Pool.sol
function delegateTaiko() external {
address TAIKO = 0x...; // TAIKO address
address SECURITY_COUNCIL = 0x...; // Delegation target
require(token0 == TAIKO || token1 == TAIKO, "No TAIKO");
IERC20Votes(TAIKO).delegate(SECURITY_COUNCIL);
}The Maxi Relayer automates two critical functions for veTD holders:
Auto-compound TD:
- Claims all rewards (fees, bribes, incentives)
- Converts to TD
- Compounds into existing veTD positions
Auto-vote:
- Implements optimal voting strategies
- Maximizes gauge rewards for participants
- Reduces coordination costs
Note: Detailed spec TBD
Taikodrome requires significant modifications to support both bonding and emissions:
Challenges:
- Two sources of TD minting (Bonding + Minter contracts)
- Exogenous TAIKO supply affects emission calculations
- Rebase mechanism complexity with external token
Required Investigations:
- Emission Schedule: Optimal inflation given exogenous TAIKO supply
- Rebase Calculations: Adjusting growth formula for pre-existing supply
- Minting Coordination: Ensuring bonding and emissions don't conflict
Tokenomics Analysis: AERO-TOKENOMICS.md
All TAIKO in Taikodrome pools delegates to the Security Council for chain governance participation:
TAIKO in Pools → delegates to → Security CouncilThis prevents governance attacks through DEX liquidity while maintaining decentralization.
-
Optimal Tail Emission Rate: Given TAIKO's external utility, what inflation rate maintains competitive LP incentives?
-
Rebase Formula Adjustments: How to modify
calculateGrowth()for non-zero starting supply? -
Bonding Duration: Should bonding remain available indefinitely or have phases?
-
Relayer Economics: Fee structure and incentive alignment for Maxi Relayer operators