# BaseLaunchDeployer

Deploys each coin and its bonding curve with CREATE2 for the factory, so their addresses can be computed before the launch is sent.

Deploys the bonding curve and launch token pair for one launcher launch on BaseLaunchFactory's behalf. Split out into its own contract purely so BaseLaunchFactory's own bytecode stays under EIP-170's 24576-byte deployed-code limit: embedding two full contracts' creation code via `new` inside the factory itself was the single largest contributor to its size. Both new contracts still record the real factory's address explicitly (never this deployer's), since they gate privileged calls on it.

Part of the [contract reference](https://baselaunch.app/docs/reference).

### Deployed at

BaseLaunchDeployer (2.1.0)`0xd7b14F37F68e2E468a9aACEad9e16Ab6698DAF2B`[](https://basescan.org/address/0xd7b14F37F68e2E468a9aACEad9e16Ab6698DAF2B)

BaseLaunchDeployer (2.0)`0xD02d9A7C4B755FD33E8dc11d427acD9D0e6738C5`[](https://basescan.org/address/0xD02d9A7C4B755FD33E8dc11d427acD9D0e6738C5)

### Read functions (2)

| Function | What it does |
| --- | --- |
| [factory](#factory) `factory() view returns (address)` selector 0xc45a0155 Anyone | The launch factory, the only caller allowed to deploy, and the privileged caller written into every coin and curve. |
| [predictLaunchAddresses](#predictLaunchAddresses) `predictLaunchAddresses(LaunchDeployment params) view returns (address token, address curve)` selector 0x33a86336 Anyone | Returns the addresses `deployLaunch` would produce for `params`, without deploying anything. Lets a caller confirm that a launch it has not seen confirmed yet will land where it expects, and lets the launch path be checked for a salt the creator has already used. The token is derived from the curve because the curve's address is one of the token's constructor arguments, so the pair has to be computed in deployment order. |

### Write functions (1)

| Function | What it does |
| --- | --- |
| [deployLaunch](#deployLaunch) `deployLaunch(LaunchDeployment params) returns (address token, address curve)` selector 0x36a2c099 Factory only | Deploys a fresh curve/token pair and returns both addresses. Both contracts are told `factory` (not this deployer) is their privileged caller. Wiring the curve to its token via `initialize()` is left to the factory itself, since that call is `onlyFactory`-gated. Deployed with CREATE2 rather than CREATE so neither address depends on this deployer's nonce, and therefore on the order launches happen to land in. Under CREATE the Nth launch simply took the Nth address, so an address predicted before its launch confirmed committed to nothing and a different launch could arrive there instead. Under CREATE2 the address is a function of the salt and the creation code, and the creation code carries every constructor argument, so an address can only ever hold the exact launch it was computed from. Reverts through `Create2` with `FailedDeployment` when the pair already exists, which is the same creator reusing a salt on otherwise identical terms. Callers can test for it in advance with `predictLaunchAddresses`. |

### Structs

| Struct | Fields, in ABI order |
| --- | --- |
| `FeePolicySnapshot` | `uint16 protocolFeeShareBps, uint16 buybackBurnBps, uint16 hookFeeBps, uint16 maxInternalPriceImpactBps` |
| `LaunchDeployment` | `address pairToken, address creatorFeeRecipient, address originalDeployer, address feePolicy, FeePolicySnapshot policy, address feeEscrow, address buybackVault, uint256 phantomQuote, uint256 curveFeeBps, uint256 creatorTaxBps, bool buybackEnabled, uint256 graduationThreshold, uint256 supply, bytes32 salt, string name, string symbol, string logo, string description, Socials socials` |
| `Socials` | `string twitter, string telegram, string discord, string website, string farcaster` |

Two launcher sets on Base

Addresses are listed for launcher 2.1.0, where new coins launch, and for launcher 2.0, which keeps serving the coins launched before the cutover. A coin stays on the set that launched it. The functions and events are the 2.1.0 contracts'; the 2.0 contracts are an earlier version of the same code and have no interface registry, so check a 2.0 contract's verified source on Basescan before relying on a detail listed here.

How the fees are split is on [fees](https://baselaunch.app/fees), what the owner can and cannot change is on [security](https://baselaunch.app/security), and short answers are in the [FAQ](https://baselaunch.app/faq).

Meme coins are highly speculative and most lose their value. Nothing here is financial advice.

Last updated 2026-10-21.

Canonical page: https://baselaunch.app/docs/reference/deployer
