Addresses below are read from the deployment manifest the app is running with, so they match what the rest of the site signs against. Arc constants and function lists are copied from the contracts and the deploy script.
| Contract | Address |
|---|
| Chain id | 5042 |
| PoolManager (Uniswap v4) | 0x8366a39CC670B4001A1121B8F6A443A643e40951 |
| HookarcHook | 0x73F1e4860cbCA84B2ad87b02bb3BE10009D86ACc |
| LaunchFactory | 0x3B6d691A6f04D8c0439b9A7742bE728056fa14dF |
| Router | 0x87E33edb815c8dF4B0ba238dDE2D3E28e5248Ec2 |
| QuoteRegistry | 0x2a963fdA242a09CDb3D7e2a52abF2DfeA050D22e |
| LPLocker | 0x594ddBF68750e1cf871f46e8Bb0c83917C728485 |
| CreatorFeeNFT | 0xaF984054d43eB4d4F1429F48383A851a8CFa7D6A |
| FlywheelBurner | 0x5D09070F59D81f005989a12092AD55750e0ee2Ca |
| TokenMetadata (image, description, links) | 0xe5FeB8042486A97af66cD5603B325382f7518406 |
| Owner | 0x8d7CAC91b23c301c31Ef81A386121ab2b8e1Fb7a |
| Treasury (cirBTC fee sink) | 0x8d7CAC91b23c301c31Ef81A386121ab2b8e1Fb7a |
| $HARC token (official) | not launched yet |
| Deploy block | 21190486 |
| Canary passed | yes |
$HARC is launched outside Hookarc; the address above is the only official one and stays "not launched yet" until it is set. A zero hook address means the app is running with the pre-deploy manifest and the write gate is closed.
| Name | Value |
|---|
| Chain | Arc mainnet, id 5042, Circle's L1, EVM (Osaka) |
| RPC | https://rpc.mainnet.arc.io |
| Explorer | https://explorer.arc.io/address/<address> |
| Block time | ≈ 0.5 s, deterministic finality |
| Native gas token | USDC (18-decimal native balance) |
| USDC (ERC-20 view, quote) | 0x3600000000000000000000000000000000000000, 6 decimals |
| cirBTC (quote) | 0x171A4217b86A807A64eB94757Db6849fb4bDbAA0, 8 decimals |
| Chainlink USDC / USD | 0x84EA90AC252Dc437031461836DB5164219147905, 8 decimals, 86,400 s heartbeat |
| Chainlink BTC / USD | 0xa109B535C70C8Be9995be64Bb6751AcDB27e03De, 8 decimals, 86,400 s heartbeat |
| Registry heartbeat | 90,000 s |
| Sequencer feed | none (Arc is an L1) |
| PoolManager | 0x8366a39CC670B4001A1121B8F6A443A643e40951 |
| V4Quoter | 0x8Dc178eFB8111BB0973Dd9d722ebeFF267c98F94 |
| StateView | 0xF3334192D15450CdD385c8B70e03f9A6bD9E673b |
| Multicall3 | 0xcA11bde05977b3631167028862bE2a173976CA11 |
| CREATE2 deployer | 0x4e59b44847b379578588920cA78FbF26c0B4956C |
| Name | Value | Where |
|---|
PROTOCOL_FEE_BPS | 30 | HookarcHook |
CREATOR_FEE_BPS | 50 | HookarcHook |
CREATION_FEE | 1 USDC (1e18 native wei) | LaunchFactory |
SUPPLY | 1,000,000,000 × 1e18 | OpeningPrice |
FDV_USD_8 | 10,000 × 1e8 | OpeningPrice |
TICK_SPACING | 60 | LaunchFactory, OpeningPrice |
| LP fee | 0 | PoolKey |
| Quote decimals accepted | 6 to 18 | QuoteRegistry |
SEQUENCER_GRACE | 1 hour (unused on Arc) | QuoteRegistry |
| Registry heartbeat (mainnet) | 90,000 s | DeployArc |
MAX_SNIPE_WINDOW | 50,000 blocks | Blocks |
MAX_SNIPE_MAX_BUY_BPS | 1,000 | Blocks |
MAX_SNIPE_TAX_BPS | 5,000 | Blocks |
MAX_BURN_BPS | 1,000 | Blocks |
MAX_POT_BPS | 500 | Blocks |
MAX_HALT_STALENESS | 7 days | Blocks |
| Function | Access | Notes |
|---|
launch(LaunchParams) payable | anyone | value must equal CREATION_FEE |
launchWithBlocks(LaunchParams, Blocks.Config) payable | anyone | validates the config first |
predictTokenAddress(creator, name, symbol, salt) | view | CREATE2 address before launching |
poolKeyFor(token, quote) | view | rebuilds the PoolKey with the right orientation |
setHook(hook) | owner, once | |
setLaunchesPaused(bool) | owner | new launches only |
withdrawCreationFees(to) | owner | native USDC; to must be able to receive it |
| Function | Access | Notes |
|---|
register(...) | factory | called inside the launch |
claimCreatorFees(tokenId, to) | NFT owner | tokenId = poolId |
claimPot(poolId, to) | the winner | pays potOwed[id][msg.sender] |
sweepProtocolFees(quote) | anyone | to the configured sink |
claimProtocolFees(quote, to) | owner | |
setFeeSink(quote, sink) | owner | |
setTrustedRouter(router, bool) | owner | |
previewBuyFees(poolId, quoteIn) | view | protocol, creator, pot, total |
quoteOf(poolId) / isLive(poolId) | view | used by the Router |
pools, blockConfig, snipeCapQuote, pot, potCount, potOwed, protocolFees, creatorFees, feeSink, trustedRouter | public state | |
| Function | Notes |
|---|
buy(key, quoteIn, minOut, recipient, deadline) payable | approve the router for USDC or cirBTC; quoteIn in raw units |
sell(key, tokensIn, minOut, recipient, deadline) | approve the router for the token |
| Function | Access |
|---|
priceUsd8(quote) | view, strict |
quoteHalted(quote, maxStaleness) | view, lenient |
quoteDecimals(quote) / isKnown(quote) / quotes(quote) / sequencerUp() | view |
add(quote, feed, heartbeat) | owner |
disableForNewLaunches(quote) | owner |
setSequencerFeed(feed) | owner |
| Function | Access |
|---|
configure(key, maxQuotePerCall) | owner, once |
setMaxQuotePerCall(v) | owner |
buybackAndBurn(quoteIn, minOut) | owner, once per block |
harc() / totalQuoteSpent() / totalBurned() | view |
| Error | Raised by | When |
|---|
HookNotSet, LaunchesPaused, WrongCreationFee | LaunchFactory | launch preconditions |
UnknownQuote, QuoteDisabled, StalePrice, BadPrice, SequencerDown | QuoteRegistry | priceUsd8 |
BadFeed, BadQuoteDecimals (outside 6 to 18), AlreadyAdded | QuoteRegistry | add |
PriceZero, PriceOutOfRange | OpeningPrice | opening price derivation |
BadBlockConfig | Blocks | launchWithBlocks |
OnlyFactory, BadPoolKey, AlreadyRegistered | HookarcHook | initialise / register |
PoolNotLive, LaunchLocked, ExactOutputNotSupported | HookarcHook | every swap |
QuoteHalted, OverSnipeCap | HookarcHook | buys with Halt Guard / Anti-Snipe |
LiquidityLocked, AlreadySeeded, NotAuthorized | HookarcHook | liquidity paths |
NotFeeOwner, NothingToClaim, BadRecipient, NoFeeSink | HookarcHook | claims and sweeps |
UnknownPool, Expired, ZeroRecipient, ValueMismatch, TooLittleReceived, TransferFromFailed, RefundFailed | Router | buy / sell |
NotSingleSided, OnlyFactory, TransferFailed | LPLocker | seed |
NotConfigured, OverCap, OncePerBlock, InsufficientBalance, TooLittleReceived, BadKey | FlywheelBurner | buybacks |
Launched, Registered, BlocksSet, HookSwap, AutoBurned, PotAdvanced, PotWon, PotClaimed, CreatorFeesClaimed, ProtocolFeesClaimed, ProtocolFeesSwept, FeeSinkSet, TrustedRouterSet, Seeded, Burned, plus the ownership events. The indexer chapter lists which of them feed which table.
read the codecontracts/deployments/arc.json the manifest these addresses come fromcontracts/script/ArcAddresses.sol the Arc constantsweb/lib/abis.ts the ABI subset the app calls