Refund System

If a token fails to graduate within 3 days, any holder can activate refund mode. Token holders burn their tokens to reclaim a pro-rata share of the bonding curve's ETH balance.

How Refunds Work

The bonding period is 3 days (BONDING_PERIOD = 259,200 seconds). If MAX_SUPPLY_LOTS is not reached within this window, refund mode becomes available.

Step 1: Initiate Refund

Anyone can call initiate_refund() after the bonding period expires. This calculates a fixed refund_per_lot based on the contract's ETH balance divided by eligible lots (excluding the deployer's initial lots):

eligible_lots = current_supply_lots - INITIAL_SUPPLY_LOTS
refund_per_lot = contract.balance / eligible_lots

Step 2: Claim Refund

Token holders call refund_claim(token_lots). Their tokens are burned and they receive token_lots * refund_per_lot in ETH.

Deployer Excluded

The deployer cannot claim refunds. The refund_claim() function explicitly rejects calls from self.deployer. The deployer's initial lots are also excluded from the eligible lots calculation.

Refund Fairness

Refund mode can only activate if the token has not graduated — meaning trading is still locked (state = LOCKED). During this phase, token transfers are restricted to the minter (the bonding curve contract itself). Holders cannot transfer tokens to other wallets, so every address claiming a refund is the same address that originally purchased those lots. The refund amount each holder receives is strictly proportional to the number of lots they hold.