STICKCOMMITTED $0FUNDERS 0ACTIVE 0LAUNCHED 0
STICK
STICKTimed raises, public terms, weighted allocation, and claimable refunds.
Stick is not a separate AMM or a custom trading venue. It is a launch layer around Pump.fun. The product gives a creator a structured page and a presale vault before launch, then routes the accepted raise into Pump.fun and PumpSwap when the raise settles.
Stick uses one SOL raise model for the MVP: timed oversubscription with weighted allocation. There is no hard stop at target. Commitments remain open until the timer ends.
If a raise is not oversubscribed, weight is not used to haircut anyone: accepted SOL equals committed SOL. If demand is above target, each commitment receives a deterministic weight. The weight changes how much of the capped target is accepted, not the shared launch entry price.
remaining_seconds = presale_end_ts - contribution_ts
time_share = remaining_seconds / raise_window_seconds
fill_before = committed_before / target
fill_multiplier = 1 + boost_strength * (1 - fill_before)^2
weight_added = committed_amount * (base_weight + time_share * fill_multiplier)
if total_committed <= target:
accepted = committed
else:
accepted = weighted_share_of_target
refund = committed - acceptedThe creator connects a Solana wallet, writes the public project page, uploads media, sets a target, selects the raise window, and configures creator vesting.
One wallet signature creates the presale account, records the metadata URI, performs the creator buy-in, and opens contributions.
Users can commit SOL until the timer ends. The raise does not close early when the target is reached.
The keeper closes the raise, builds a public settlement manifest, and writes the Merkle root on-chain.
Accepted SOL is spent as one aggregate launch route through Pump.fun, and through PumpSwap after graduation when required.
Each participant claims tokens and unused SOL from the launch page using their Merkle proof.
After close, the keeper builds a deterministic settlement manifest from indexed contributors. The manifest contains each wallet's committed amount, weight, accepted amount, and refund amount. The program stores the Merkle root and verifies user claims against that root.
Stick does not execute 100 separate Pump.fun buys when 100 users join. The accepted pool is finalized as one aggregate route from the presale vault.
The whole accepted pool fits before the bonding curve completes.
Pump create+buy-to-completion, migrate/create canonical PumpSwap pool, then PumpSwap buy remainder.
The keeper retries the atomic route instead of intentionally leaving a normal transaction gap.
Claiming is user initiated. The launch page requests claim data for the connected wallet, builds a transaction with the Merkle proof, and sends tokens plus refundable SOL according to settlement.
Stick stores launch data in Postgres for the website and uploads token metadata through Pump.fun's metadata endpoint before token creation. The returned metadata URI is stored on the presale and passed to Pump create_v2 during finalization.
The keeper is an operational service. It watches expired raises, closes them, builds settlement, writes roots, and submits guarded finalization transactions. Production deployment requires a configured Postgres database, Helius RPC, funded keeper wallet, Jito endpoint, and monitoring.