# BaseLaunchToken

One per coin. A fixed-supply, burnable ERC-20 with the coin's logo, description and socials; the whole supply is minted to its bonding curve. It grants nobody any power over the coin.

Fixed-supply ERC-20 deployed by BaseLaunchFactory for a launch. The entire supply mints directly to the token's bonding curve instead of a Uniswap position. Anyone, the deployer included, may buy any amount from the curve at any time; the curve's own price impact and its reserved pool allocation are the only limits on a large buy. `deployer` is carried here as immutable reference data for off-chain attribution only, and confers no privileges over the token. `ERC20Burnable` lets any holder voluntarily burn their own balance; the protocol's buyback mechanism does not use it, bought-back tokens are locked into `BaseLaunchBuybackVault` for a five-year vest instead of being burned.

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

### Deployed at

One per coin: the coin's own address. Its whole supply starts on its bonding curve.

### Read functions (13)

| Function | What it does |
| --- | --- |
| [allowance](#allowance) `allowance(address owner, address spender) view returns (uint256)` selector 0xdd62ed3e Anyone | Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through transferFrom. This is zero by default. This value changes when approve or transferFrom are called. Inherited from ERC20. |
| [balanceOf](#balanceOf) `balanceOf(address account) view returns (uint256)` selector 0x70a08231 Anyone | Returns the value of tokens owned by `account`. Inherited from ERC20. |
| [curve](#curve) `curve() view returns (address)` selector 0x7165485d Anyone | The coin's bonding curve, which received the whole supply at deployment. |
| [decimals](#decimals) `decimals() view returns (uint8)` selector 0x313ce567 Anyone | Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including IERC20.balanceOf and IERC20.transfer. Inherited from ERC20. |
| [deployer](#deployer) `deployer() view returns (address)` selector 0xd5f39488 Anyone | The account the coin was launched for. Reference data only; it confers no rights. |
| [description](#description) `description() view returns (string)` selector 0x7284e416 Anyone | The coin's description, set at launch and never changeable. |
| [getTokenInfo](#getTokenInfo) `getTokenInfo() view returns (address tokenDeployer, string tokenLogo, string tokenDescription, Socials tokenSocials)` selector 0xabb1dc44 Anyone | Returns creator and metadata in the launcher-compatible tuple. |
| [launchFactory](#launchFactory) `launchFactory() view returns (address)` selector 0x536dac9b Anyone | The launch factory that created the coin. |
| [logo](#logo) `logo() view returns (string)` selector 0xfb7f21eb Anyone | The coin's logo URI, set at launch and never changeable. |
| [name](#name) `name() view returns (string)` selector 0x06fdde03 Anyone | Returns the name of the token. Inherited from ERC20. |
| [socials](#socials) `socials() view returns (string twitter, string telegram, string discord, string website, string farcaster)` selector 0x53cd512a Anyone | Returns the launch token's five social metadata fields. |
| [symbol](#symbol) `symbol() view returns (string)` selector 0x95d89b41 Anyone | Returns the symbol of the token, usually a shorter version of the name. Inherited from ERC20. |
| [totalSupply](#totalSupply) `totalSupply() view returns (uint256)` selector 0x18160ddd Anyone | Returns the value of tokens in existence. Inherited from ERC20. |

### Write functions (5)

| Function | What it does |
| --- | --- |
| [approve](#approve) `approve(address spender, uint256 value) returns (bool)` selector 0x095ea7b3 Anyone (sets the caller's allowance) | See IERC20.approve. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address. Inherited from ERC20. |
| [burn](#burn) `burn(uint256 value)` selector 0x42966c68 Any holder (burns the caller's own coins) | Destroys a `value` amount of tokens from the caller. See ERC20._burn. Inherited from ERC20Burnable. |
| [burnFrom](#burnFrom) `burnFrom(address account, uint256 value)` selector 0x79cc6790 Anyone with an allowance from the holder | Destroys a `value` amount of tokens from `account`, deducting from the caller's allowance. See ERC20._burn and ERC20.allowance. Requirements: - the caller must have allowance for `accounts`'s tokens of at least `value`. Inherited from ERC20Burnable. |
| [transfer](#transfer) `transfer(address to, uint256 value) returns (bool)` selector 0xa9059cbb Any holder | See IERC20.transfer. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`. Inherited from ERC20. |
| [transferFrom](#transferFrom) `transferFrom(address from, address to, uint256 value) returns (bool)` selector 0x23b872dd Anyone with an allowance from the holder | See IERC20.transferFrom. Skips emitting an Approval event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for `from`'s tokens of at least `value`. Inherited from ERC20. |

### Events (2)

| Event | What it means |
| --- | --- |
| [Approval](#event-Approval) `Approval(address indexed owner, address indexed spender, uint256 value)` topic0 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925 | Emitted when the allowance of a `spender` for an `owner` is set by a call to approve. `value` is the new allowance. Emitted by [approve](#approve), [burnFrom](#burnFrom), [transferFrom](#transferFrom) |
| [Transfer](#event-Transfer) `Transfer(address indexed from, address indexed to, uint256 value)` topic0 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef | Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero. Emitted by [burn](#burn), [burnFrom](#burnFrom), `constructor`, [transfer](#transfer), [transferFrom](#transferFrom) |

### Structs

| Struct | Fields, in ABI order |
| --- | --- |
| `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/token
