Launch factories
Base usesB20LaunchpadFactory; Robinhood uses ERC20LaunchpadFactory. Both expose the same launch flow.
| Surface | Important members |
|---|---|
| Create | createLaunch(LaunchParams) creates the token, distributes allocations, registers vesting, opens the pool, and seeds permanent liquidity |
| Configuration reads | quotes, feeDefaults, launchSupply, tickSpacing, bands, announcementRegistry, and vestingVault |
| Transaction-safety reads | configVersion and usedLaunchSalts |
| Contract limits | MIN_SUPPLY, MAX_SUPPLY, MAX_ALLOCATIONS, MAX_VESTED_ALLOCATIONS, MIN_VESTING_DURATION, MAX_VEST_STEPS, and MAX_TOTAL_VEST_STEPS |
| Future-launch governance | Quote, opening setting, creation fee, supply, liquidity, fee, treasury, announcement, and ownership updates |
Launch events
| Event | Meaning |
|---|---|
Launched | Token, pool ID, creator, quote, supply, and liquidity spacing |
LaunchFeePaid | Creation-fee payer, quote, fee receiver, and amount |
QuoteRegistered / QuoteUnregistered | Supported quote changes |
QuoteCreationFeeUpdated | Creation-fee change for a quote |
BandTemplateUpdated | Future liquidity-range change |
FeeDefaultsUpdated | Future fee split, anti-snipe, or treasury change |
LaunchSupplyUpdated / TickSpacingUpdated | Future supply or range-alignment change |
OwnershipTransferStarted / OwnershipTransferred | Governance ownership change |
LaunchHook
The hook exposespoolConfig for each launch pool. The factory registers and seeds a pool; ordinary trading then occurs through Uniswap v4.
| Event | Meaning |
|---|---|
PoolRegistered | The pool’s frozen creator, platform fee receiver, and fee settings |
Seeded | Token amount placed into the permanent position |
Trade | Executor, referrer, fee currency, fee amount, and optional comment; swap direction comes from the matching Uniswap event |
FeeEscrow
| Function | Who can call | Result |
|---|---|---|
owed(recipient, currency) | Anyone | Returns the raw claimable fee balance |
claim(recipient, currency) | Anyone | Pays the full balance to the recorded recipient |
claimTo(currency, to) | Balance owner | Pays the caller’s balance to a chosen address |
Credited and Claimed.
VestingVault
| Function | Who can call | Result |
|---|---|---|
claimable(token, beneficiary) | Anyone | Returns tokens currently available to claim |
getSchedule(token, beneficiary) | Anyone | Returns the allocation, claimed amount, and unlock steps |
claim(token, beneficiary) | Anyone | Sends available tokens to the recorded beneficiary |
Registered and Claimed.
AnnouncementRegistry
| Function | Who can call | Result |
|---|---|---|
creatorOf(token) | Anyone | Returns the creator allowed to announce for the token |
usedId(token, id) | Anyone | Checks whether an announcement ID was used |
post(token, id, description, uri) | Recorded creator | Publishes a unique announcement |
CreatorRegistered and Announcement.
Robinhood launch tokens
Robinhood tokens expose standard ERC-20 reads and transfers. When profile editing was enabled at launch, the metadata authority can callupdateName, updateSymbol, updateContractURI, and updateExtraMetadata. No mint, burn, pause, owner, upgrade, or recovery function exists.
Common launch errors
| Error | Meaning |
|---|---|
StaleConfig | Refresh the current factory settings and rebuild the transaction |
LaunchExpired | Use a fresh deadline |
QuoteNotRegistered | The selected quote is unavailable |
LaunchSaltUsed | Use a new launch identifier |
InvalidLaunchFeePayment | The creation-fee payment was not exact |
OutOfBounds / InvalidConfig | A hard limit or related-field rule failed |
NotImmutable | The created token failed its fixed-authority checks |
NotSingleSided | Opening liquidity would require quote currency |
LiquidityLocked | The requested liquidity change is not allowed |
ExactOutputDisabledDuringAntiSnipe | Use an input-amount trade or wait until the normal fee begins |
PartialFillUnsupported | The requested quote-specified amount could not be filled completely |
