Tokens

The two token types and what they can and cannot do.

Each launch selects a token deployer. The set of token deployers is fixed when the launchpad is deployed. Use isTokenDeployer(address) on the launchpad to check one.

Both deployers make tokens with the same rules:

  • The supply is 1,000,000,000 tokens with 18 decimals. All of it is minted at launch, to the launchpad.
  • There is no owner or admin. Nobody can mint, burn, pause, or change the token.
  • The name, symbol, and ERC-7572 contract URI are set at launch. They cannot change later.
  • The address is deterministic. See Predict the token address.

ERC-20 (DropERC20Deployer)

DropERC20Deployer deploys DropToken with CREATE2. It is available on every chain.

DropToken is a Solady ERC-20. It adds only the name, the symbol, and contractURI(). From Solady, it also has:

  • EIP-2612 permit.
  • An infinite allowance for Permit2 at 0x000000000022D473030F116dDEE9F6B43aC78BA3. Holders do not need to approve Permit2 before they trade.

The name, symbol, and contract URI are part of the init code. So one account can use the same salt for more than one token, if the tokens have different names, symbols, or contract URIs.

B-20 (DropB20Deployer)

DropB20Deployer deploys a Base B-20 token through the B-20 factory precompile at 0xB20f000000000000000000000000000000000000. It is available only on Base.

The deployer creates an ASSET B-20 with:

  • No initial admin.
  • 18 decimals.
  • A supply cap equal to the supply of 1,000,000,000 tokens.
  • The contract URI set during creation.

The factory lets the deployer set the contract URI and supply cap, and mint the supply, only during creation. Because the token has no admin, nobody can call these functions later.

A B-20 address does not depend on the name, symbol, or contract URI. So one account can use a salt for only one B-20 token.

Contract URI

The contract URI points to the token's metadata, as ERC-7572 describes. Usually it is an ipfs:// or https:// URI to a JSON document with fields such as name, description, and image. It can also be empty.

The protocol does not read or check the URI. Because it cannot change, use an immutable location such as IPFS.

On this page