Skip to main content

Documentation Index

Fetch the complete documentation index at: https://actfun.mintlify.app/llms.txt

Use this file to discover all available pages before exploring further.

ACTFUN uses a two-contract system deployed on Arc Testnet (Chain ID 5042002). A single shared LaunchpadFactory acts as a registry and deploys new token pairs on demand. Each token pair consists of a LaunchToken (an ERC-20) and a TokenLauncher (a combined miner and AMM). All supply distribution, trading, and graduation logic lives entirely on-chain there is no backend, no admin key, and no external DEX dependency.

Contract addresses

ContractAddress
LaunchpadFactory0x6Ac3CaF79A5d68D259795380F012f922476A1721
TokenLauncherDeployed per token by the factory
LaunchTokenDeployed per token by the factory
All contracts are verified on Arcscan. Future token pairs automatically match the verified bytecode.
Arc Testnet RPC: https://rpc.testnet.arc.network · Chain ID: 5042002 · Currency: ARC

The two-phase lifecycle

Every token launched through MINEPAD follows the same two-phase lifecycle. Phase 1 Mining The community earns tokens by calling mine(funnyPost) on the token’s TokenLauncher contract. Each mine call requires a small ARC fee (set by the token creator) and mints a fixed mineAmount of tokens directly to the caller. A per-wallet cooldown and a 24-hour cap prevent any single address from dominating the supply. Mining continues until 95% of the max supply has been minted. Phase 2 Trading When the last mine call fills the 95% mineable supply, the TokenLauncher automatically calls _graduate(). This mints the remaining 5% as LP reserve tokens to the contract itself and seeds a constant-product AMM (x * y = k) using those tokens plus all accumulated ARC mine fees as initial liquidity. From that point on, anyone can buy and sell via buyTokens and sellTokens no external DEX needed.

Contract roles

LaunchpadFactory (0x6Ac3CaF79A5...)

│  createToken(...) → deploys:

├── LaunchToken (ERC-20)
│     • Standard ERC-20 (OpenZeppelin)
│     • Ownership transferred to TokenLauncher on deploy
│     • Only TokenLauncher can call mint()
│     • Stores: maxSupply, imageUri

└── TokenLauncher (miner + AMM)
      Phase 1 (mining):
        • mine(funnyPost) — mint tokens, collect ARC fees
        • claimRefund()  — return ARC fees before graduation
      Phase 2 (trading, post-graduation):
        • buyTokens(minTokensOut) — send ARC, receive tokens
        • sellTokens(tokenAmount, minArcOut) — send tokens, receive ARC
      Views (always available):
        • getMiningProgress(), getTokenPrice()
        • estimateBuy(), estimateSell()
        • getTimeUntilNextMine(), getRemainingDailyAllowance()

Tokenomics summary

ParameterValue
Mineable supply95% of maxSupply (rounded down to a whole multiple of mineAmount)
LP reserve5% of maxSupply, minted to the launcher on graduation
AMM seedingLP reserve tokens + all ARC mine fees accumulated in Phase 1
AMM formulatokensOut = arcIn * tokenReserve / (arcReserve + arcIn)

Network configuration

Add Arc Testnet to your wallet or viem config:
import { defineChain } from "viem";

export const arcTestnet = defineChain({
  id: 5042002,
  name: "Arc Testnet",
  nativeCurrency: { name: "ARC", symbol: "ARC", decimals: 18 },
  rpcUrls: {
    default: { http: ["https://rpc.testnet.arc.network"] },
  },
  blockExplorers: {
    default: { name: "Arcscan", url: "https://testnet.arcscan.app" },
  },
  testnet: true,
});

Further reading