createToken

Creates a new token with bonding curve mechanics.

Function Signature

function createToken(
    TokenMetadata calldata metadata,
    string memory referral
) external payable returns (address)

Parameters

metadata
TokenMetadata
required
Token metadata struct containing:
  • name: Token name
  • ticker: Token symbol (max 11 characters)
  • description: Token description
  • imageUrl: URL to token logo
  • telegram: Telegram link (optional)
  • twitter: Twitter/X link (optional)
  • website: Website URL (optional)
  • owner: Set by contract
  • createdAt: Set by contract
referral
string
Referral code for tracking
value
uint256
required
Must send exactly 0.001 ETH as creation fee

Returns

tokenAddress
address
The deployed token contract address

Example

import { ethers } from 'ethers'

const factory = new ethers.Contract(
  TOKEN_FACTORY_ADDRESS,
  FACTORY_ABI,
  signer
)

const metadata = {
  name: "My Token",
  ticker: "MTK",
  description: "An amazing token",
  imageUrl: "https://example.com/logo.png",
  telegram: "https://t.me/mytoken",
  twitter: "https://x.com/mytoken",
  website: "https://mytoken.com",
  owner: ethers.constants.AddressZero,
  createdAt: 0
}

const tx = await factory.createToken(
  metadata,
  "REFERRAL_CODE",
  { value: ethers.utils.parseEther("0.001") }
)

const receipt = await tx.wait()
const tokenAddress = receipt.events[0].args.token

createAndBuyToken

Creates a token and makes an initial purchase in one transaction.

Function Signature

function createAndBuyToken(
    TokenMetadata calldata metadata,
    string memory referral
) external payable returns (address)

Parameters

metadata
TokenMetadata
required
Same structure as createToken
referral
string
Referral code for both creation and purchase
value
uint256
required
Total ETH to send (0.001 ETH creation fee + purchase amount)

Returns

tokenAddress
address
The deployed token contract address

Key Behaviors

  • More gas efficient than separate transactions
  • Initial purchase has 24-hour lock period
  • Excess ETH beyond funding goal is refunded
  • Subject to anti-snipe fees if applicable

Example

const metadata = {
  name: "My Token",
  ticker: "MTK",
  description: "An amazing token",
  imageUrl: "https://example.com/logo.png",
  telegram: "",
  twitter: "",
  website: "",
  owner: ethers.constants.AddressZero,
  createdAt: 0
}

const creationFee = ethers.utils.parseEther("0.001")
const purchaseAmount = ethers.utils.parseEther("0.1")
const totalValue = creationFee.add(purchaseAmount)

const tx = await factory.createAndBuyToken(
  metadata,
  "REFERRAL_CODE",
  { value: totalValue }
)

const receipt = await tx.wait()

Token Metadata Structure

interface TokenMetadata {
  name: string
  ticker: string
  description: string
  imageUrl: string
  telegram: string
  twitter: string
  website: string
  owner: address
  createdAt: uint40
}

Error Handling

Gas Optimization: Use createAndBuyToken when planning to buy immediately after creation to save ~30% on gas costs.