Developers
API & on-chain access
Everything on BeaconHarbor is on-chain and open. Read it directly from Arc today; a hosted REST API arrives with the indexer for fast, cached data.
Network
ChainArc TestnetChain ID5042002RPChttps://arc-testnet.drpc.orgExplorerhttps://testnet.arcscan.appGas tokenUSDC (native)
Contracts
Launchpad0xF6b53F91c82a90EA02c4B51F1E18C1275D7c6e03Test USDC0x74bd2b44ecb164DE3Ae6a537ae1f027c0564E72C
ABIs ship with the app under web/app/lib/abis. Every pool address comes from getLaunches on the launchpad.
Read on-chain (available now)
Any EVM library works. Example with viem:
import { createPublicClient, http } from "viem";
import { launchpadAbi } from "@beaconharbor/abis";
const client = createPublicClient({
transport: http("https://arc-testnet.drpc.org"),
});
// newest-first launches
const launches = await client.readContract({
address: "0xF6b53F91c82a90EA02c4B51F1E18C1275D7c6e03",
abi: launchpadAbi,
functionName: "getLaunches",
args: [0n, 24n],
});
Per pool you can read reserveUsdc, reserveToken, realUsdc, gradThreshold, graduated, and quote a trade with quoteBuy / quoteSell.
REST API live · same origin
A cached API served next to the site at /api/harbor, fed by the event indexer, so history never leans on a rate-limited RPC. Every number it returns comes from an event the chain emitted. Endpoints:
- GET /api/harbor/index/status · indexer cursor, trades and holders counted so far
- GET /api/harbor/token/{pool}/stats · holders, 24h USDC volume, trade count
- GET /api/harbor/token/{pool}/trades · points of light (buys/sells) with tx hashes
- GET /api/harbor/token/{pool}/holders · top holders + supply share
- GET /api/harbor/feed?tab=newest · posts, tiers, boosters
- GET /api/harbor/leaderboards?window=1h · most reposted & most volume
Fair-data promise: the API only ever returns verifiable on-chain data, never fabricated volume, holders, or prices.