One opening buy. One blended entry price. No race to be first.
A permissionless fair-opening mechanism for Meteora Dynamic Bonding Curve launches on Solana.
Live App · Onchain Verification · Wallet Walkthrough · Hackathon Submission
Warning
Devnet prototype only. Unaudited and upgradeable. Do not use with real funds. Mainnet use requires independent security review and a production upgrade-authority policy.
With an ordinary rising bonding curve, the fastest buyers typically get better entry prices. EqualStart removes that transaction-order advantage within the opening batch without replacing Meteora's price discovery.
| Typical DBC launch | EqualStart opening batch |
|---|---|
| Traders race to be the first buyer | Participants deposit during a fixed window |
| Earlier swaps have an entry-price advantage | Every batch member gets the same blended price |
| Creator may have to coordinate the launch | Any wallet can trigger settlement |
| Separate buys move the curve one after another | One atomic first buy executes for the full batch |
Example: Alice commits 0.1 SOL, Bob 0.2 SOL, and Carol 0.3 SOL. EqualStart purchases with all 0.6 SOL. They claim 16.67%, 33.33%, and 50% of the tokens acquired, respectively, subject to token-unit rounding. The price is equalized, not the number of tokens.
Creator commits DBC config, deadlines, limits, and settlement bounty
|
Deposit window
Participants escrow wSOL
|
Window closes
|
ANY wallet calls settle
|
One atomic EqualStart instruction
+ Create DBC pool
+ Execute pooled first buy
+ Transfer pool-creator role
+ Pay settlement bounty
|
Participants claim tokens
- No front-running the batch: Token mint and pool-creator authorities are EqualStart PDAs. Only the program can sign to create the committed pool.
- Permissionless and atomic: Settlement does not require the creator's signature. If the purchase fails its checks, the transaction rolls back.
- Proportional claims:
floor(tokens_received × participant_deposit / total_deposits), enforced onchain, with double claims rejected. - Recoverable deposits: If a batch isn't settled before its deadline (for example because it missed its minimum raise), anyone can cancel it and every participant can reclaim exactly what they deposited.
- Normal market afterward: DBC trading proceeds under the committed configuration, including its configured graduation path.
EqualStart does not prevent whales using multiple wallets, post-launch selling, or price declines. Its fairness guarantee is specifically about opening-batch execution price, not future market outcomes.
| Evidence | |
|---|---|
| Live application | equalstart.vercel.app (browse without a wallet) |
| Real-wallet flow | evidence/ui-wallet-run.md: Phantom deposits, unrelated-wallet settlement, claims, refunds |
| Public devnet tests | VERIFICATION.md: 10/10 test groups, 54 linked transactions, rejected-attack evidence |
| Atomic settlement | Solana Explorer transaction (reported 218,120 compute units) |
| Deployed program | Solana Explorer program (deployed bytes match the local build) |
| Design and limitations | ONCHAIN_RESULTS.md |
| Raw evidence | evidence/ (signatures, logs, balances) |
| Submission materials | SUBMISSION.md (architecture diagram and video script) |
| Path | Purpose |
|---|---|
onchain/programs/equalstart/src/lib.rs |
Anchor program: escrow, DBC CPIs, settlement, claims, refunds |
onchain/tests/equalstart.ts |
Localnet and public-devnet onchain test suite |
onchain/scripts/devnet.sh |
Devnet deploy and verification harness |
app/ |
Web application |
settlement.mjs and CHAIN_FEASIBILITY.md |
Original 12-test accounting model and feasibility notes |
Prerequisites: Agave 4.3.0, Anchor CLI 1.2.1, Node.js 22, and Meteora DBC binaries for the local validator.
# Build and run program tests (from repository root)
cd onchain
npm install
anchor build
scripts/localnet.sh &
NODE_OPTIONS=--no-experimental-strip-types \
npx ts-mocha -p ./tsconfig.json -t 1000000 tests/equalstart.tsIn another terminal, from the repository root:
cd app
npm install
npm run devThe app uses devnet by default; for localnet, set VITE_CLUSTER=localnet and VITE_RPC_URL. Reproduction details and explorer links are in VERIFICATION.md.
- Unaudited: Localnet and devnet tests do not replace an independent security audit.
- Upgrade authority: A throwaway key currently controls the devnet program. A production release needs an explicit multisig/timelock or revoked-upgrade strategy.
- Meteora dependency: The implementation relies on DBC instruction layouts and account offsets from IDL
0.2.1. A future DBC upgrade could invalidate these assumptions. The DBC program is part of the settlement trust boundary; balance checks limit but cannot eliminate the resulting risk. - Scope: Per-wallet caps are not Sybil resistance, and equalized opening pricing does not guarantee token value or liquidity.
- Deposits can be locked until expiry (fix before mainnet). The program doesn't cap the settlement window, and there's no exit between close and expiry. If a launch can't settle (minimum raise missed, or an unreachable minimum price), deposits are refundable only after expiry, which the creator chooses. The app caps new launches at 7 days and warns on launches with longer windows. Planned program fix: allow cancellation as soon as deposits close if the minimum raise wasn't met, and cap the window on-chain.
- Last-second withdrawal griefing (fix before mainnet). Withdrawals are allowed until deposits close, so someone can fill the batch to crowd others out, then withdraw just before close. Nothing is lost, but the batch can miss its minimum or open small. Planned fix: stop withdrawals some time before close.
- Creator-chosen curve settings. Participants rely on the DBC config the creator picked (supply, vesting, fee split, pool creation fee). The launch page links it and shows the pool creation fee, which whoever settles pays.
See ONCHAIN_RESULTS.md for detailed security notes.
Built for the 2026 Crypto World's Fair
Meteora: Best use of Meteora's Dynamic Bonding Curve (DBC)
Fairer opening participation, powered by Meteora DBC.