the schedule
- 50% at TGE. as soon as the launch transitions to
LAUNCHED, half of your allocation is claimable. - 50% linear over 24 hours. the remaining half unlocks proportionally over the next 86400 seconds (24 hours) after launch.
the math
claim() reads this, transfers the delta, and updates alreadyClaimed.
what this looks like in practice
say your allocation is 1,000,000 tokens and the launch happens at timestamp T:- T + 0 seconds: 500,000 claimable (TGE half)
- T + 1 hour: 500,000 TGE + (500,000 * 1 / 24) = ~520,833 claimable
- T + 6 hours: 500,000 + 125,000 = 625,000 claimable
- T + 12 hours: 500,000 + 250,000 = 750,000 claimable
- T + 24 hours: 1,000,000 claimable (fully vested)
- T + 25 hours: 1,000,000 claimable (capped, no extra unlock)
claim() any number of times. each call only transfers the
delta between vested and claimed. no penalty for claiming early or often,
except gas.
why vesting exists
the presaler allocation is large (a flat 200M tokens, 20% of total supply). releasing all of that at once produces immediate sell pressure that crashes the freshly-deployed PCS pair. spreading it over 24 hours dampens this and gives the token a chance at organic price discovery. it does not prevent dumping. it just spreads the dump curve over a day. read risks for what this means for you.SMOL has no vesting
SMOL (TIER_80) is curve-only. there is no PCS pair at launch. all of your tokens unlock at LAUNCHED andclaim() returns the full allocation in one call.
this is partly because SMOL has no follow-up buy and trades on FLAP’s curve
until it organically graduates. the social contract is different: SMOL is a
curve play, not a v2 launch. the absolute presaler allocation is the same
200M tokens as any other tier.
claim mechanics
claim()is permissionless. anyone can call it on their own behalf, but the tokens go tomsg.senderso you cannot claim for someone else.- there is no claim deadline. tokens sit in the vault indefinitely. you can claim a year later if you want.
- claim reverts with
NothingToClaimif your vested amount equals your already-claimed amount (e.g. you just claimed in the same block, or your allocation is zero because you did not deposit).
what if i deposited then withdrew
yourDepositor.deposited is reset to zero on withdraw(). your allocation
is therefore zero. you have nothing to claim and nothing to refund.
