Security
Each coin's 1,000,000,000 supply is minted once, and the main launcher contracts on Base are verified on Basescan and cannot be upgraded. The contracts have not been independently audited yet. An audit is part of our plan. The owner cannot mint coins, pause trading or withdraw locked liquidity. Coin and token mean the same thing here: an ERC-20 on Base.
Numbers checked on chain on 20 October 2026.
Audit status
The contracts have not been independently audited yet. An audit is part of our plan. Until then, read the contracts and the list below, and only use money you can afford to lose.
The contracts
These are the launcher contracts on Base, every one of each set, with the full address to copy and a link to Basescan, where each is verified so you can read its source. None is a proxy and none can be swapped for new code. The holder rewards factory creates a small distributor for each coin that opts in; every distributor is a clone of one fixed implementation with no owner.
A coin keeps the contracts it was launched with, so coins launched before the current set keep using the earlier one.
Coins launched on launcher 2.1.0
Coins launched on launcher 2.0
| Contract | Verified | Upgradeable | Owner |
|---|---|---|---|
| Launch factory | Yes | No | One owner address |
| Launch router | Yes | No | None |
| Interface registry | Yes | No | None (bound to its router once) |
| Pool hook | Yes | No | One owner address |
| Fee escrow | Yes | No | None |
| Buyback vault | Yes | No | One owner address |
| Liquidity locker | Yes | No | One owner address |
| Launch deployer | Yes | No | None (callable by its factory only) |
| Graduation executor | Yes | No | None (callable by its factory only) |
| Holders distributor factory | Yes | No (clones of a single implementation whose code cannot change) | One owner address |
| Holders distributor implementation | Yes | No (each coin gets a clone of this code) | None |
An owned contract has a single owner address and a two-step ownership transfer. Ownership cannot be renounced.
What the owner can do
Every owner-only function and every key the owner appoints is listed here with its limit. Settings marked as new launches only are copied into each coin when it is created, so coins already launched keep their terms.
| Function | Who | What it does | Limit |
|---|---|---|---|
addLaunchConfigBaseLaunchFactory.sol | Owner | Adds a launch configuration: supply, curve trading fee, virtual reserve, graduation target and pool tick spacing. | Curve fee at most 10%, and the curve must quote a small buy. New launches only: every launch snapshots it at creation, so coins already launched keep their terms. |
updateLaunchConfigBaseLaunchFactory.sol | Owner | Replaces or disables an existing launch configuration. | Same checks as adding one. New launches only: every launch snapshots it at creation, so coins already launched keep their terms. |
setLaunchFeeBaseLaunchFactory.sol | Owner | Sets the fixed fee paid in ETH to create a coin. | No cap in the contract. Paid once at creation, so it never touches a coin already launched. |
setLaunchEnabledBaseLaunchFactory.sol | Owner | Opens or closes coin creation to the public. | Gates creating new coins only. Buying, selling, graduation and fee claims keep working. |
setWhitelistedLauncherBaseLaunchFactory.sol | Owner | Lets a named address create coins while public creation is closed. | Gates creating new coins only. |
setPairTokenEconomicsBaseLaunchFactory.sol | Owner | Sets the virtual reserve and graduation target for an ERC-20 pair asset (for example USDC). | The asset must have at least 6 decimals and the curve must quote a small buy. New launches only: every launch snapshots it at creation, so coins already launched keep their terms. |
setPairTokenApprovedBaseLaunchFactory.sol | Owner | Approves or removes an ERC-20 pair asset for new coins. | Approval needs a deployed token with economics set and matching decimals. Removing one only stops new coins on that pair. |
setMaxCreatorTaxBpsBaseLaunchFactory.sol | Owner | Sets the highest creator fee a creator may choose. | Hard ceiling of 10% in the contract. Each coin keeps the creator fee it launched with. |
setSnipeTaxStartBpsBaseLaunchFactory.sol | Owner | Sets the launch tax that buys pay at the start of the launch tax window. | Zero (off), or above 20% and at most 99%. New launches only: every launch snapshots it at creation, so coins already launched keep their terms. |
setSnipeTaxSecondsBaseLaunchFactory.sol | Owner | Sets how long the launch tax takes to decay to zero. | Between 1 and 60 seconds. New launches only: every launch snapshots it at creation, so coins already launched keep their terms. |
setGraduationExecutorBaseLaunchFactory.sol | Owner | Wires the helper that seeds graduated pools. | Can be set once; reverts once set. |
setLaunchDeployerBaseLaunchFactory.sol | Owner | Wires the helper that deploys each coin and its curve. | Can be set once; reverts once set. |
setLaunchForwarderBaseLaunchFactory.sol | Owner | Sets the router trusted to name the account a launch is made for (creator record, default creator fee recipient, launch tax exemption). | Rotatable at any time. Affects coins created through it from then on, not coins already launched. |
setBuybackEnabledBaseLaunchFactory.sol | Owner (disable only) or the coin's creator fee recipient | Turns a coin's buyback-and-lock off. Only the creator fee recipient can turn it on. | Applies to fees charged from then on; fees already charged keep their split. |
setCreatorFeeRecipientBaseLaunchFactory.sol | Owner | Proposes a new creator fee recipient for any coin, also redirecting its buyback vest. Meant for creators who lose their wallet, but not limited to that case. | Executable only after a 3-day timelock, by anyone, within the following 3 days. A transfer by the creator during the wait does not cancel it. Announced on chain when proposed. |
cancelCreatorFeeRecipientChangeBaseLaunchFactory.sol | Owner | Cancels a pending creator fee recipient override. | Only cancels; moves nothing. |
forceSweptGraduationBaseLaunchFactory.sol | Owner | Moves a finished curve's reserves into the factory when the pool seed check refuses them, so the delayed rescue can return them. | Only for a curve that has reached its target and whose pool seed is not viable; reverts while anyone could graduate it normally. |
rescueCurveFeesBaseLaunchFactory.sol | Owner | Pays a curve's pending fees straight to the protocol recipient, the launch interface and the creator recipient when the fee escrow path stops working. | Pays the normal split to the normal recipients; nothing goes to the owner, and the interface share is kept. |
rescueSweptGraduationBaseLaunchFactory.sol | Owner | Sends a swept launch's reserves (pair asset and coins) to an address the owner names, for off-chain distribution. | Only for a launch stuck between curve and pool: 7 days after the sweep if the pool seed is refused, 30 days if it still looks seedable. Seeding stays open to anyone whenever the seed is valid. |
setFactoryBaseLaunchHook.sol | Owner | Wires the hook to the factory. | Can be set once; reverts once set. |
setBuybackVaultBaseLaunchHook.sol | Owner | Wires the hook to the buyback vault. | Can be set once; reverts once set. |
setProtocolFeeShareBpsBaseLaunchHook.sol | Owner | Sets the protocol share of the base fee (30% by default). | Between 20% and 50%. New launches only: every launch snapshots it at creation, so coins already launched keep their terms. |
setBuybackBurnBpsBaseLaunchHook.sol | Owner | Sets how much of the creator part of the base fee goes to buyback-and-lock when a coin has it on (50% by default). | At most 100%. New launches only: every launch snapshots it at creation, so coins already launched keep their terms. |
setHookFeeBpsBaseLaunchHook.sol | Owner | Sets the trading fee of the Uniswap pool a coin graduates into (1% by default). | At most 10%, and at most 20% together with the creator fee. New launches only: every launch snapshots it at creation, so coins already launched keep their terms. |
setMaxInternalPriceImpactBpsBaseLaunchHook.sol | Owner | Sets the price impact cap for the fee conversion and buyback swaps (3% by default). | Above 0% and below 100%. New launches only: every launch snapshots it at creation, so coins already launched keep their terms. |
setProtocolFeeRecipientBaseLaunchHook.sol | Owner | Moves the address the protocol share is paid to, for every coin, existing and future. | Moves only the protocol share; creator, interface and referrer shares are unaffected. |
setFeeSweepOperatorBaseLaunchHook.sol | Owner | Appoints the operator key that runs fee conversions and buybacks, with minimum outputs, for every coin. | Each swap is capped by the coin's own price impact limit. The operator cannot change any share or recipient. |
sweepPoolFeesBaseLaunchHook.sol | Fee sweep operator, or the coin's creator fee recipient when no swap is needed | Converts and pays out a graduated pool's pending fees, choosing the minimum outputs and running the buyback. | Pays the coin's fixed split to its recipients; swaps are capped by the coin's price impact limit. |
rescuePoolFeesBaseLaunchHook.sol | Owner | Pays a graduated pool's pending fees straight to the protocol recipient, the launch interface and the creator recipient when the normal sweep cannot deliver. | Pays the normal split to the normal recipients; nothing goes to the owner, and the interface share is kept. |
sweepFeesBaseLaunchBondingCurve.sol | Fee sweep operator, or the coin's creator fee recipient when no swap is needed | Pays out a curve's pending fees and runs the buyback. | Pays the coin's fixed split to its recipients; the buyback is capped by the coin's price impact limit. |
setFactoryBaseLaunchBuybackVault.sol | Owner | Wires the buyback vault to the factory. | Can be set once; reverts once set. |
setFactoryBaseLaunchLocker.sol | Owner | Wires the liquidity locker to the factory. | Can be set once; reverts once set. |
setPublisherBaseLaunchHoldersDistributorFactory.sol | Owner | Appoints the publisher key for every holder rewards distributor. | Rotatable at any time. Ownership cannot be renounced. |
publishBaseLaunchHoldersDistributor.sol | Publisher key | Posts a holder reward epoch: decides which accounts get how much of the distributor's unallocated balance. A dishonest publisher could allocate it to any account. | Cannot exceed the unallocated balance and cannot touch an epoch already published and still claimable (90 days). |
setRouterBaseLaunchInterfaceRegistry.sol | Registry deployer | Binds the router allowed to record each coin's launch interface. | Can be set once; the registry has no owner. |
What the owner cannot do
- Mint coins. The whole supply of 1,000,000,000 is minted once, to the curve, when the coin is created, and the coin has no mint function and no owner.
- Pause trading. Buying and selling on the curve and in the pool have no owner switch. Closing coin creation only stops new coins.
- Withdraw locked liquidity. The locker has no withdraw function, and its only owner function is one-time wiring.
- Change a launched coin's fee rates. Every term is fixed when the coin is created. The owner can move the protocol payout address, turn a coin's buyback off, and redirect its creator fee recipient after the 3-day notice.
- Take claimable fees. The fee escrow pays a balance only to the address it was credited to, and has no owner or rescue path.
- Touch launch interface or trade referrer shares. The interface registry has no owner, and the owner's fee rescue paths pay the normal split to the normal recipients.
- Change a holder rewards distributor's code or recover its funds.
One exception to read twice: if a finished curve gets stuck before its pool is created, the owner can move its reserves to an address the owner names, but only 7 days after the sweep when the pool seed is refused, or 30 days when it still looks seedable. Anyone can seed the pool whenever the seed is valid.
What happens to liquidity at graduation
When a coin graduates, 204,081,633 coins and the ETH raised seed a full-range Uniswap v4 position, and the remaining 81,632,653 coins are locked. The position is held by the liquidity locker above. The locker has no function that withdraws it, so nobody, including the creator and baselaunch, can take the liquidity out. How graduation works
Why scanners may show unknown before graduation
Before a coin graduates, its coins sit in its bonding curve and not in a Uniswap pool. Tools that look for a pool or a locked position, such as DEX scanners and honeypot checkers, have nothing to read yet and may show the coin as unknown or unchecked. That says the tool has no data. It is not a verdict on the coin either way.
How to check a coin yourself
- Copy the contract addressOpen the coin page on baselaunch and copy the address from the page.
- Open it on BasescanThe total supply should be 1,000,000,000. Before graduation, the curve holds whatever has not been bought yet. At graduation, about 71.4% is in holders' wallets, about 20.4% sits in the Uniswap pool and about 8.2% is locked.
- Check the creating transactionThe transaction that created the coin should be a call to the launch router or launch factory in the lists above.
- Read the coin pageThe creator fee, the launch tax and the graduation target are shown there. All costs are on fees.
Report a vulnerability
Send a short note on X or Telegram and we will move the details to a private chat. Please do not post exploit details publicly. Our contact details are also in security.txt.
We never DM you or ask for a seed phrase. If someone claiming to be baselaunch does, it is not us.
Common questions
Is there an audit?
The contracts have not been independently audited yet. An audit is part of our plan.
Can the owner take my funds?
Mostly not, with two exceptions. Nothing in the list above moves a coin's trading reserves while it trades, withdraws the liquidity locked at graduation, or takes fees already credited to you. First, if a finished curve gets stuck before its pool exists (a stuck graduation), the owner can send its reserves to an address the owner names, but only 7 days after the sweep when the pool seed is refused, or 30 days when it still looks seedable. Second, the owner can redirect a coin's creator fee recipient after a 3-day public notice, which also redirects its future creator payouts.
Can the contracts be upgraded?
No. None of the launcher contracts is a proxy and none has an upgrade function, so the code at each address above is the code that runs.
Where do I report a vulnerability?
Message baselaunch on X or Telegram with a short note and we will move the details to a private chat. Please do not post exploit details publicly. We never DM you or ask for a seed phrase.
Meme coins are highly speculative and most lose their value. Nothing here is financial advice.
Last updated