> ## Documentation Index
> Fetch the complete documentation index at: https://docs.inkyswap.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Networks and Deployments

> Discover active InkyPump hooks at runtime and keep old tokens on their original deployment.

InkyPump runs on Ink and Robinhood. New launches use the active deployment for that chain. Existing launches keep using the hook that created them, even after that hook becomes deprecated for new creation.

<Warning>
  Never replace a token's stored `hook_address` with the newest hook. `active` means “use for new launches.” `deprecated` can still mean “required for existing launches.”
</Warning>

## Networks

| Network   | Chain ID | Native asset | Public RPC                                | Explorer                                                               |
| --------- | -------: | ------------ | ----------------------------------------- | ---------------------------------------------------------------------- |
| Ink       |  `57073` | ETH          | `https://rpc-gel.inkonchain.com`          | [explorer.inkonchain.com](https://explorer.inkonchain.com)             |
| Robinhood |   `4663` | ETH          | `https://rpc.mainnet.chain.robinhood.com` | [robinhoodchain.blockscout.com](https://robinhoodchain.blockscout.com) |

Use your own reliable RPC pool for production. Assert `eth_chainId` before every write.

## Runtime discovery

```bash theme={null}
curl "https://inkypump.com/api/capabilities?chainId=57073"
curl "https://inkypump.com/api/capabilities?chainId=4663"
```

The response includes:

| Field                                  | Use                                                                    |
| -------------------------------------- | ---------------------------------------------------------------------- |
| `releaseCommit`                        | Identifies the InkyPump application release that produced the registry |
| `flags`                                | Tells you whether reads, creation, or trading are enabled              |
| `activeCreationDeployment`             | The only native deployment to use for a new launch on that chain       |
| `tradeableDeployments`                 | Active and historical deployments needed to route existing tokens      |
| `hookRuntimeHash`                      | Expected keccak256 hash of the deployed runtime bytecode               |
| `hookAbi`                              | Selects the compatible ABI family                                      |
| `feeWithdrawal`                        | `all-balance` or `exact-amount` withdrawal selector                    |
| `activeCreationDeployment.canonicalV4` | Chain-specific V4 contracts for the active native deployment           |

Fetch this on your server at startup, cache it briefly, and refresh it before a write if the cached revision changed.

## Production snapshot

These values were checked against production on September 21, 2026. Runtime discovery remains the source of truth.

| Purpose                                              | Network   | Chain ID | Public contract address                      | Runtime verification                                                 |
| ---------------------------------------------------- | --------- | -------: | -------------------------------------------- | -------------------------------------------------------------------- |
| Create new native launches                           | Ink       |  `57073` | `0x893183da2411c7df81f103BfEf09E4E46C326aC4` | `0xef3dafc3fad7b330b8eec58712ababacecb3065396a980a44c603d5be9ad9b35` |
| Route existing launches from the previous deployment | Ink       |  `57073` | `0x4cC8F6d5B7cE150CCC0A9B7664532B1283b96AC4` | `0x6a5ea36797fadcda4bab0a6844dca78968746563b6211c2ac3ba257414a1c2be` |
| Create new native launches                           | Robinhood |   `4663` | `0x50B9Af842DACB8Fc7476660cc86d3787CAD66aC4` | `0x98df5822bffd0ac54e1d95e58aa8d1a4004265c1e706d9a7c688e72fae0f79d6` |
| Read older V1 launches                               | Ink       |  `57073` | `0x1D74317d760f2c72A94386f50E8D10f2C902b899` | Compatibility only; not a V2 hook                                    |

Contract addresses and runtime hashes are public blockchain data. This page does not publish private keys, signer secrets, provider credentials, or privileged administration data.

The `version` field returned by the API is an opaque deployment ID. Store it for routing and diagnostics, but use the plain network and status labels above in a user interface.

The current Ink deployment streams the former buyback share to token holders. The older Ink hook uses the earlier buy-and-burn flow. Do not apply one fee label to every historical token.

## Resolve an existing token

Use `GET /api/token?chainId=...&address=...` and store these fields:

* `chain_id`
* `hook_address`
* `launch_id`
* `launchpad_version`
* `denomination_kind`
* `lifecycle_state`
* `finality_status`

Route reads and writes through `hook_address`, not the newest hook. A missing optional indexed field such as `deployment_version` does not override an immutable hook address.

## Attest runtime code

For a high-value integration, compare the current bytecode hash with the registry before enabling writes.

```ts theme={null}
import { keccak256 } from "viem"

const code = await publicClient.getCode({ address: deployment.hook })
if (!code || code === "0x") throw new Error("Hook has no code")

const actualHash = keccak256(code)
if (actualHash.toLowerCase() !== deployment.hookRuntimeHash.toLowerCase()) {
  throw new Error("Hook runtime does not match the published deployment")
}
```

This catches a stale configuration, an address copied from the wrong chain, or an RPC response that disagrees with the published hash. It does not prove that the RPC itself is honest; use independent providers for high-value checks.

## Native versus xStocks hooks

`activeCreationDeployment` covers native-quoted launches. It does not select an xStocks hook. Each supported xStock has its own wrapper, hook, release, limits, and proof. Resolve those through:

```http theme={null}
GET /api/xstocks/quote-assets?chainId=57073
```

See [xStocks Launches](/integrations/xstocks-launches) before adding that path.

## Pool identity

Native Ink and Robinhood launches use chain-specific V4 infrastructure. The exact post-bond pool belongs to the launch's hook.

For native tokens, match `token.hook_address` to `tradeableDeployments`, then branch on `hookAbi`:

* `robinhood-corrected`: read the key on chain.
* `ink-legacy`: use the complete immutable pool fields from `GET /api/token`. This old hook does not implement the getter.

Current per-asset xStocks hooks expose the same getter as the corrected family.

```ts theme={null}
const poolKey = await publicClient.readContract({
  address: token.hook_address,
  abi: HOOK_READ_ABI,
  functionName: "getLaunchPoolKey",
  args: [BigInt(token.launch_id)],
})
```

For a legacy Ink token, require `pool_currency0`, `pool_currency1`, `pool_fee`, `pool_tick_spacing`, `pool_hook`, and `pool_id` from the token API. Do not fill in a missing value.

For every ABI family, confirm the currencies match the token and quote asset, the pool hook equals the token's original hook, the fee is positive, and tick spacing is nonzero. Compute:

```ts theme={null}
const poolId = keccak256(
  encodeAbiParameters(
    parseAbiParameters(
      "address currency0, address currency1, uint24 fee, int24 tickSpacing, address hooks",
    ),
    [poolKey.currency0, poolKey.currency1, poolKey.fee, poolKey.tickSpacing, poolKey.hooks],
  ),
)
```

That ID must equal the 32-byte `launch_id`, and any indexed `pool_id` must match it. On a current native Ink launch, the quote currency is native ETH (`0x0000000000000000000000000000000000000000`), not WETH. See [Post-Bond Pool](/trading/post-bond-pool) for the complete checks.

## Upgrade-safe rules

* Discover active deployments instead of pinning them forever.
* Save a launch's original hook and launch ID from its receipt.
* Keep ABI selection tied to `hookAbi` and `feeWithdrawal`.
* Refuse a write if the chain, runtime hash, selector family, or capability flag differs from the plan shown to the user.
* Treat a new release commit as a reason to refresh configuration, not a reason to rewrite old launch records.
