文档
关于 ArcLaunch 的一切:机制、费用、风险、集成
概览
ArcLaunch 是为 Circle Arc 公链打造的代币发射与交易平台。你可以浏览发射、打开任意代币查看详情,并直接用钱包交易。所有价格都以 USDC 计价——在 Arc 上 USDC 既是 gas 也是交易货币,你只需要一种资产。
ArcLaunch 从不托管你的资金。 每一次发币和交易都是你的钱包签名的链上交易;用户本金始终在 Uniswap V3 官方字节码的池子里,ArcLaunch 自研合约只经手手续费流。
发币流程
发币是一笔交易:部署代币、创建它的 USDC 交易池、把全部供应作为单边流动性注入,并把 LP 仓位永久锁进 FeeLocker(没有解锁函数)。创作者设置名称、符号、图片、描述、社交链接和收款钱包。
每个代币都在自己的池子里对 USDC 交易。没有 bonding curve,之后也没有迁移。从发射那一秒起,买卖都发生在同一个池子里。
发射保护
发射后的前 20 个区块(Arc 0.5 秒出块,约 10 秒)内,从池子买出受限制:发射区块本身只有创作者的首购可以成交;窗口内每个钱包最多持有总供应的 5%,单笔最多买入 5.5%。
卖出和钱包间转账永不受限;窗口结束后所有限制解除。
交易与定价
你看到的价格是池子的实时价格,每一笔交易都会移动它。实际到手数量可能与报价略有差异;滑点设置决定你接受多大的偏差。
毕业
当锁定池内配对的 USDC 达到阈值(当前 $10.0K)即毕业。进度条显示离毕业还有多远。
毕业只确认阈值达到了。它不是质量信号,也不保证未来的流动性、价格或退出机会。毕业后交易继续在同一个池子里,什么都不会迁移,手续费和分成也不变。
手续费与分润
每笔交易产生 1% 池手续费。协议留 25%,创作者拿 75%。这个比例在发币时快照进合约,之后永不改变——毕业前后一样。
协议收入
协议侧的 25% 分成和创建费进入国库合约。国库余额达到阈值后,任何人可调用 execute():82% 在平台币 $ARCL 的池子里执行一次限额买入并转入 0x…dEaD 销毁地址(Arc 禁止转零地址),18% 进入生态基金。82/18 写死在合约里不可更改。
销毁不保证价格上涨。
社区接管
当代币的原创作者明显已弃坑、且有活跃社区希望接手时,可以申请把创作者分成的收款地址改为社区钱包。申请由团队审核;通过后管理员在链上发起提案,48 小时后生效,期间原创作者可否决。代币、池子、LP 都不受影响。
与 pons 不同:pons 的团队可以直接改收款地址;ArcLaunch 的管理员做不到即时修改,48 小时时间锁和创作者否决权写在合约里。审批是运营行为,不代表对代币安全性或价值的任何背书。
管理员权限
合约不可升级。管理员(后续将转为多签)能做和不能做的事全部公开:
风险披露
通过 ArcLaunch 发射的代币由用户创建,属于实验性资产。签名前请核对代币地址、创作者、流动性、持有人集中度和交易预览。
ArcLaunch 只是一个界面,不构成投资建议,也不代表对任何代币质量的判断。
集成指南
一切都直接从合约读取。索引 Factory 和池子的事件即可获得最小信任的链上事实源。
网络
合约地址
链上事件
索引 Factory 的 TokenLaunched 事件,登记每个 pool,然后索引池子的 Swap 事件。链上事件是权威数据源。没有迁移事件;毕业轮询 graduationStatus(token),持有人余额可选索引代币 Transfer。
import { createPublicClient, http, parseAbiItem } from "viem";
import { arcTestnet } from "viem/chains";
const client = createPublicClient({ chain: arcTestnet, transport: http() });
const launches = await client.getLogs({
address: "0x…",
event: parseAbiItem(
"event TokenLaunched(address indexed token, address indexed deployer, address indexed pool, uint256 positionId, bool isToken0, uint256 restrictionsEndBlock, uint256 graduationThreshold, uint256 initialBuyUsdc, uint256 creationFeePaid)",
),
fromBlock: 0n,
toBlock: "latest",
});
// The public RPC times out on wide eth_getLogs ranges — backfill in bounded chunks (≤ 2000 blocks).// isToken0 comes straight from the TokenLaunched event usdcDelta = isToken0 ? amount1 : amount0 // signed, from the Swap event side = usdcDelta > 0 ? "buy" : "sell" // USDC flowing into the pool = buy
定价与毕业
价格来自池子的 slot0。把 sqrtPriceX96 平方,按代币排序取倒数——注意发射币是 18 位、USDC 是 6 位,需要 10^12 缩放。pons 两边都是 18 位,它的公式不能照抄。
const [sqrtPriceX96] = await client.readContract({ address: pool, abi: slot0Abi, functionName: "slot0" });
const ratio = Number(sqrtPriceX96) / 2 ** 96; // sqrt(token1 raw units per token0 raw unit)
const raw = ratio * ratio; // token1 per token0, raw units
// token is 18dp, USDC is 6dp → scale by 1e12
const priceUsdc = isToken0 ? raw * 1e12 : 1e12 / raw;
const supplyTokens = 1e9;
const fdvUsd = priceUsdc * supplyTokens;
const burned = Number(await balanceOf(token, "0x000000000000000000000000000000000000dEaD")) / 1e18;
const mcapUsd = priceUsdc * (supplyTokens - burned);const [paired, threshold, graduated] = await client.readContract({
address: factory,
abi: [parseAbiItem("function graduationStatus(address token) view returns (uint256 paired, uint256 threshold, bool graduated)")],
functionName: "graduationStatus",
args: [token],
});
const progress = Number(paired) / Number(threshold); // 0 → 1// locks(token) → (tokenId, token, quote, creator, payout, creatorShareBps, exists)
const lock = await client.readContract({ address: locker, abi: lockerAbi, functionName: "locks", args: [token] });
const creatorSharePercent = Number(lock[5]) / 100; // 75
const creatorPayout = lock[4]; // may differ from the deployer
// pending community takeover, if any
const [newPayout, eta] = await client.readContract({ address: locker, abi: lockerAbi, functionName: "pendingPayout", args: [token] });代币自描述
const tokenAbi = parseAbi([ "function name() view returns (string)", "function symbol() view returns (string)", "function logo() view returns (string)", "function description() view returns (string)", "function liquidityPool() view returns (address)", "function deployer() view returns (address)", "function restrictionsEndBlock() view returns (uint256)", "function socials() view returns (string website, string twitter, string telegram, string discord, string farcaster)", ]);
REST / WebSocket
ArcLaunch 自己的索引器也对外开放,方便快速接入(非权威源,以链上为准):
版本与条款
版本
已部署的合约不可变。新版本以新的 Factory / Locker 地址发布并列在上方合约表中;老代币留在原合约里继续交易,不会被搬动。官方 Uniswap V4 在 Arc 上线后,新 Factory 可能走 V4,同样不影响已发代币。
条款
链上数据公开免费,如何使用由你负责。ArcLaunch 按现状提供,不作任何担保;团队不对因集成、界面、RPC 或索引器造成的损失负责。引用 ArcLaunch 时请链接回本站,未经书面同意不得暗示合作、背书或官方身份,不得以误导用户的方式使用 ArcLaunch 名称或标识。ArcLaunch 不是 Arc 或 Circle 的官方产品。
支持
集成、索引、定价或链上状态问题,联系 contact@arclaunch.top.