> Bull Launch docs. Every page is available as Markdown by adding `.md` to its URL; the index is https://bulllaunch.fun/llms.txt. This page on the web: https://bulllaunch.fun/docs/contracts

# Contract addresses

Every Bull Launch deployment: addresses, creation transactions and blocks, per network.

Every Bull Launch deployment, with the transaction that created each contract. The Bull Launch contracts reference each other in both directions, so any one of them can be checked against the rest on chain.

> **Warning:** If there are contracts not listed here but claiming to be Bull Launch, they are not canonical. The hook address is part of every pool key, so a launch made against a different deployment is invisible to this one. Pin these addresses; do not resolve them at runtime from another source.

## Mainnet deployments

None yet. Bull Launch runs on testnet only; this list will name the mainnet contracts once they are live.

## Testnet deployments

### Arc Testnet (5042002)

**Bull Launch**

| Contract | Address | Transaction | Block |
| --- | --- | --- | --- |
| Treasury | [`0x4109...F361`](https://explorer.testnet.arc.io/address/0x4109C3bDd31cbF84AAAA6E40d088e7dAa0AbF361) | [`0x50cf...4f5b`](https://explorer.testnet.arc.io/tx/0x50cfef2855934597e399ca28274552e5c24350f74cc3314cd635d23fbd6d4f5b) | [64,236,234](https://explorer.testnet.arc.io/block/64236234) |
| LauncherLocker (LP lock) | [`0x6e32...018A`](https://explorer.testnet.arc.io/address/0x6e3209d04096de6503097279C3516f017503018A) | [`0xba04...c9a0`](https://explorer.testnet.arc.io/tx/0xba0466152b9e0e094ff0cfee76bdb51e0ee5377cae4e60564356d296e7b8c9a0) | [64,236,238](https://explorer.testnet.arc.io/block/64236238) |
| Hook | [`0xe332...b044`](https://explorer.testnet.arc.io/address/0xe332196A3bf409899E990846373cf47255e7b044) | [`0x16e2...1aba`](https://explorer.testnet.arc.io/tx/0x16e28122c7306b117773fb524a3691acf8cc3e71432e325663ac2f87cf2f1aba) | [64,236,243](https://explorer.testnet.arc.io/block/64236243) |
| ConfigRegistry | [`0xaB53...6bD1`](https://explorer.testnet.arc.io/address/0xaB53045522C110DEB14f46f39322f5bD43956bD1) | [`0x0206...c06c`](https://explorer.testnet.arc.io/tx/0x020679867067d44d332e0cd0469684201a9870192732d4700e35b24a1930c06c) | [64,236,252](https://explorer.testnet.arc.io/block/64236252) |
| LauncherFactory | [`0x6874...6065`](https://explorer.testnet.arc.io/address/0x687434E8Efb28be2EEF123b23A1dBBC5d2956065) | [`0x01be...c7ab`](https://explorer.testnet.arc.io/tx/0x01be6cdf0931dee58315b6f95ac903c6591e602f2d4ce0cba8a09b4a0f7fc7ab) | [64,236,256](https://explorer.testnet.arc.io/block/64236256) |

- **Treasury**: Receives the protocol share of every creator fee claim.
- **LauncherLocker (LP lock)**: Holds every launch’s liquidity forever: the tail band from launch, and the graduated position. It has no withdrawal function.
- **Hook**: Prices the curve, takes the swap fee and the creator tax, graduates the pool, and pays creators their fees.
- **ConfigRegistry**: Whitelists base assets and holds each one’s curve, plus the creator tax ceiling.
- **LauncherFactory**: The one entry point for a launch: deploys the token, opens its pool, locks the tail band and runs the pre-buy.

**Uniswap v4**

| Contract | Address | Transaction | Block |
| --- | --- | --- | --- |
| PoolManager | [`0xF208...B934`](https://explorer.testnet.arc.io/address/0xF2082547d33f0A47e64b4C6Be9A5f8396D5EB934) | [`0xba7c...afc5`](https://explorer.testnet.arc.io/tx/0xba7c35c3d4483feb70079b4ae9299ae70a2b087c3aebcea16be46c104243afc5) | [62,422,857](https://explorer.testnet.arc.io/block/62422857) |
| PositionManager | [`0x7545...5451`](https://explorer.testnet.arc.io/address/0x7545bF82b2647e2d2EFA5514b4af266E555c5451) | [`0x2171...302b`](https://explorer.testnet.arc.io/tx/0x2171b38ac8371e471d197f355452c8db3bbc2710f735728c6eb4d03f9ac0302b) | [62,422,873](https://explorer.testnet.arc.io/block/62422873) |
| UniversalRouter | [`0x1be3...3eC8`](https://explorer.testnet.arc.io/address/0x1be3dB20c64C02CD97DdD15c3A65C4F461A43eC8) | [`0x337a...b380`](https://explorer.testnet.arc.io/tx/0x337a7e5b6642d6ac36f53047e1481ad161578a7be3b15c95a487bc0fa6e6b380) | [62,422,897](https://explorer.testnet.arc.io/block/62422897) |
| StateView | [`0x82D1...62a6`](https://explorer.testnet.arc.io/address/0x82D18315638A6143f05EBeCFc1D1d912666762a6) | [`0x745c...336e`](https://explorer.testnet.arc.io/tx/0x745c54b49c3bbdcc5a97e954de933a8363096d9be5555052a6466ad9951a336e) | [62,422,913](https://explorer.testnet.arc.io/block/62422913) |
| V4Quoter | [`0xb072...09e8`](https://explorer.testnet.arc.io/address/0xb07209ef64E49ef41E6DEC9B01D0dBa3248d09e8) | [`0x8b69...467f`](https://explorer.testnet.arc.io/tx/0x8b69209dca99d4bcff970289330b4838ed9069babab17403cabbb537eda4467f) | [62,422,917](https://explorer.testnet.arc.io/block/62422917) |
| Permit2 | [`0x0000...8BA3`](https://explorer.testnet.arc.io/address/0x000000000022D473030F116dDEE9F6B43aC78BA3) | Canonical predeploy | - |

Arc Testnet has no official Uniswap v4, so these are a separate deployment of the same bytecode. Wallets and aggregators pointed at the official addresses will not see Bull pools.

**Base assets**

| Contract | Address | Transaction | Block |
| --- | --- | --- | --- |
| USDC (native) | `0x0000...0000` | Chain native coin | - |
| TestUSDT | [`0x85C5...8b8a`](https://explorer.testnet.arc.io/address/0x85C59dc273d2F1807F2EF569285dff62FF548b8a) | [`0xeb96...f309`](https://explorer.testnet.arc.io/tx/0xeb966e5863c43bb439ced46b6013b3eee98a22ba3c4bd0e2ec31e901aeeff309) | [62,423,041](https://explorer.testnet.arc.io/block/62423041) |

> Use the UniversalRouter listed for the chain, never a same-chain router from another address registry. Each router is wired to one PoolManager, and a router on another PoolManager cannot reach a Bull Launch pool.

Versioning means new addresses, not upgrades. Deployed contracts are immutable, so a new version ships as a new factory and a new hook, and because the hook is part of every pool key, every pool id changes with it. Coins from an older deployment stay tradeable at their own addresses but are invisible to the new one. Pin the addresses for the version you integrated against.
