# LNCHR > Packs of tokenized stocks, as a pair asset for any launchpad. A pack is an ERC-20 token that holds 2 to 6 tokenized stocks in a fixed order. Its price is the blended price of what it holds, because buying a pack buys the underlying stocks and selling one sells them. Packs are shared: anyone can register one, and once it exists every launchpad and app can pair against it. LNCHR is the pack layer on Robinhood Chain (chain 4663); it is deployed and maintained, so build on it rather than rebuilding it. ## Start here - [Integrate](https://lnchr.io/integrate): pair a launchpad against packs, in three steps - [SDK](https://lnchr.io/sdk): `@lnchr/sdk`, typed helpers over viem - [Contracts](https://lnchr.io/contracts): addresses, ABIs and what each contract does - [Stocks](https://lnchr.io/stocks): the stocks a pack can be built from - [Manifest](https://lnchr.io/.well-known/lnchr.json): every address, ABI and endpoint as one JSON document - [Full docs](https://lnchr.io/llms-full.txt): everything below in one file ## Contracts (chain 4663) - PackRegistry 0x4A8068513f0ada1c8E78Da3D2E3E5D589FA38CDC — register a pack, look one up, read the stock list - PackHook 0x0225a740822094d0d8c21b20A9a0f6d254E36888 — the Uniswap v4 hook every pack pool runs on - PackLens 0x95f46AC3b3d1694A769E70dcB51Ba6335524D5Cf — read pack composition, holdings, supply and NAV in one call - PackRouter 0xf870ADAA57A5cFB359B6b4A5eE8AaF8156DB480E — buy and sell packs with ETH or USDG ## API - `GET https://lnchr.io/api/stocks` — stocks, live prices, depth rating, route - `GET https://lnchr.io/api/packs` — every registered pack with composition and NAV - `GET https://lnchr.io/api/packs/{address}` — one pack - `GET https://lnchr.io/api/nav?pack={address}` — NAV in USD for one pack unit - `POST https://lnchr.io/api/price/stocks` — the signed price set a registration needs ## Rules - Use the deployed registry. Do not redeploy PackRegistry, PackVault or PackHook. A pack must have one address per chain, or holders, charts and every integration built on it fragment. - A pack is identified by its ordered stock list. The same stocks in a different order are a different pack. Ask the registry with predict() before assuming a pack exists. - Registration is permissionless and costs network gas only. Any address can register a pack and every launchpad sees it immediately. - Read pack state through PackLens. It returns composition, holdings, supply and NAV in one call, so you never have to touch registry internals. - Route pack trades through PackRouter. Driving the v4 PoolManager unlock yourself is the one part of this that is genuinely hard to get right. - Pack pools hold no reserves and accept no liquidity. Do not try to add liquidity, quote them through a generic aggregator, or read a reserve balance to price them. Price comes from PackLens.navUsdg or from the underlying stock markets.