Flexible model for ANY starting capital - ratios scale naturally
ClawdPool positions are triggered by growth multiples from your genesis launch, not fixed dollar amounts. Whether you start with $1K or $100K, the same math applies.
GENESIS_LIQUIDITY = your_starting_capital // $1K, $5K, $10K, $50K, $100K, etc.
Position 1 Trigger = GENESIS_LIQUIDITY ร 1 // Genesis
Position 2 Trigger = GENESIS_LIQUIDITY ร 5 // 5x growth
Position 3 Trigger = GENESIS_LIQUIDITY ร 100 // 100x growth
Position 4 Trigger = GENESIS_LIQUIDITY ร 1000 // 1000x growth
Position 5 Trigger = GENESIS_LIQUIDITY ร 5000 // 5000x growth
This means: If you launch with $10K, Position 2 activates at $50K MC, Position 3 at $1M MC, etc. The ratios are what drive sustainable growth, not arbitrary thresholds.
Same allocation percentages work at ANY scale:
| Position | Allocation | MC Growth | Pool Fee | Lock Period | Use Case |
|---|---|---|---|---|---|
| Position 1 | 10% | 1x (genesis) | 0.3% | 180 days | Launch, price discovery |
| Position 2 | 50% | 5x from P1 | 0.3% | 90 days | Growth phase (most time spent) |
| Position 3 | 15% | 20x from P2 | 0.05% | 60 days | Established, lower volatility |
| Position 4 | 20% | 10x from P3 | 0.05% | 30 days | Mature, high volume |
| Position 5 | 5% | 5x from P4 | 0.01% | No lock | Top-tier, stable liquidity |
These values are hardcoded in the PoolFactory contract and govern all pool creation:
Each pool has a strategy that defines when and how it spawns children:
struct SpawnStrategy {
string name; // Strategy identifier
uint256 seedThreshold; // TVL to trigger spawn (in wei)
uint24[] childFees; // Fee tiers for children (e.g. 3000 = 0.3%)
uint8[] liquidityPcts; // % of fees to seed each child
bool crossChainEnabled; // Allow spawning on other chains
uint8[] targetChains; // 1=Base, 2=Unichain, 3=Arbitrum
}
Here's how the model scales for different starting budgets:
| Starting Capital | P1 (1x) | P2 (5x) | P3 (100x) | P4 (1000x) | P5 (5000x) |
|---|---|---|---|---|---|
| $1,000 | $1K | $5K | $100K | $1M | $5M |
| $5,000 | $5K | $25K | $500K | $5M | $25M |
| $10,000 | $10K | $50K | $1M | $10M | $50M |
| $50,000 | $50K | $250K | $5M | $50M | $250M |
| $100,000 | $100K | $500K | $10M | $100M | $500M |
Genesis (1x) โ 5x โ 100x โ 1000x โ 5000x
TVLcurrent = pool.token0Balance ร priceETH + pool.token1Balance ร priceETH
if (TVLcurrent >= seedThreshold) {
triggerSpawn = true;
}
feesaccumulated = pool.cumulativeFees
childSeed = feesaccumulated ร (liquidityPcts[childIndex] / 100)
// Example: If parent has 1000 ETH in fees and liquidityPct = 50
// childSeed = 1000 ร 0.50 = 500 ETH worth of liquidity
PoolConfig memory childConfig = PoolConfig({
token0: parentPool.token0, // CLAWD
token1: parentPool.token1, // WETH
fee: strategy.childFees[childIndex],
tickSpacing: getFeeSpacing(fee),
sqrtPriceX96: currentPrice // Inherit parent price
});
childPoolId = createPool(childConfig, seedAmount0, seedAmount1, childStrategy);
// Get pool reserves
(uint256 reserve0, uint256 reserve1) = pool.getReserves();
// Get ETH price from oracle (Chainlink)
uint256 ethPrice = getETHPrice(); // e.g. $3000
// Calculate token value (assuming CLAWD is token0, WETH is token1)
uint256 value0 = reserve0 ร (reserve1 / reserve0) ร ethPrice; // CLAWD value in USD
uint256 value1 = reserve1 ร ethPrice; // ETH value in USD
// Total pool TVL
TVL = value0 + value1;
TVL is calculated in real-time using Chainlink price feeds for ETH. This ensures spawning triggers are accurate regardless of token price volatility.
Generation 0 (Genesis): 1 pool (manual creation)
Generation 1 (Children): N pools (where N = childFees.length)
Generation 2 (Grandkids): N ร M pools (each child can spawn)
Generation 3: N ร M ร K pools
...
// If each pool spawns 2 children on average:
Total Pools = 1 + 2 + 4 + 8 + 16 + 32 = 63 pools after 5 generations
| Generation | Pools Created | Cumulative Total | Estimated Timeframe |
|---|---|---|---|
| 0 (Genesis) | 1 | 1 | Day 1 |
| 1 | 2 | 3 | Week 2-4 |
| 2 | 4 | 7 | Month 2-3 |
| 3 | 8 | 15 | Month 4-6 |
| 4 | 16 | 31 | Month 7-9 |
| 5 | 32 | 63 | Month 10-12 |
Timeframes assume consistent trading volume and threshold triggers. Actual spawning depends on market conditions and liquidity depth.
All external functions use OpenZeppelin's ReentrancyGuard to prevent reentrancy attacks during pool creation and seeding.
Factory ownership controlled by multisig (3-of-5 Gnosis Safe). Only owner can update minLiquidity and factoryFeeBps.
AutoSeedHook address is immutable - cannot be changed after deployment. Ensures consistent spawning behavior across all pools.
$1K or $100K - the math scales naturally. Pure ratios. Real automation.
Genesis (1x) โ 5x โ 100x โ 1000x โ 5000x