Summary
MAINNET_CHAIN_IDs.BOB (chain ID 60808) is declared alongside every other production chain and has token-address entries in tokens.ts, but its corresponding PublicNetwork descriptor is absent from the PRODUCTION_NETWORKS map in src/networks.ts. Any consumer that iterates or looks up a chain via PRODUCTION_NETWORKS — such as a relayer enumerating supported chains or a UI building a network picker — will silently omit BOB while treating it as a valid mainnet chain everywhere else.
What I observed
src/networks.ts, line 34 — BOB declared in MAINNET_CHAIN_IDs:
src/networks.ts, lines 137-468 — PRODUCTION_NETWORKS contains entries for every neighboring chain (BLAST at 81457, BOBA at 288, BSC at 56, …) but has no [CHAIN_IDs.BOB] key.
src/tokens.ts, line 132 — BOB mainnet referenced in WETH token map:
[CHAIN_IDs.BOB]: "0x4200000000000000000000000000000000000006",
For contrast, TEST_NETWORKS correctly includes [CHAIN_IDs.BOB_SEPOLIA] at line 501, showing the pattern is established for the testnet variant.
Impact
Any code path that uses PRODUCTION_NETWORKS as its source of truth for "which chains are live" will silently drop BOB. Concretely: network-metadata lookups (RPC URL, block explorer, CCTP domain, OFT EID) will return undefined for chain 60808, potentially causing downstream errors in relayers, UIs, or tooling that assume all MAINNET_CHAIN_IDs members have a corresponding PRODUCTION_NETWORKS entry.
Suggested fix
Add a [CHAIN_IDs.BOB] entry to PRODUCTION_NETWORKS in alphabetical order (between BLAST and BOBA). BOB is an OP Stack chain; its public RPC and explorer are already in use on the Sepolia side:
[CHAIN_IDs.BOB]: {
name: "BOB",
family: OP_STACK,
nativeToken: "ETH",
publicRPC: "https://rpc.gobob.xyz",
blockExplorer: "https://explorer.gobob.xyz",
cctpDomain: CCTP_NO_DOMAIN,
oftEid: OFT_NO_EID,
hypDomainId: HYPERLANE_NO_DOMAIN_ID,
},
Values for cctpDomain, oftEid, and hypDomainId should be confirmed against official BOB / LayerZero / Hyperlane registries before merging; the placeholders above match the pattern used for other chains without those integrations.
Notes
PR #200 ("feat: Missing Bob & Ink Sepolia") addresses a separate gap — BOB_SEPOLIA absent from TEST_NETWORKS — and is not a duplicate of this issue.
Summary
MAINNET_CHAIN_IDs.BOB(chain ID 60808) is declared alongside every other production chain and has token-address entries intokens.ts, but its correspondingPublicNetworkdescriptor is absent from thePRODUCTION_NETWORKSmap insrc/networks.ts. Any consumer that iterates or looks up a chain viaPRODUCTION_NETWORKS— such as a relayer enumerating supported chains or a UI building a network picker — will silently omit BOB while treating it as a valid mainnet chain everywhere else.What I observed
src/networks.ts, line 34 — BOB declared inMAINNET_CHAIN_IDs:src/networks.ts, lines 137-468 —PRODUCTION_NETWORKScontains entries for every neighboring chain (BLAST at 81457, BOBA at 288, BSC at 56, …) but has no[CHAIN_IDs.BOB]key.src/tokens.ts, line 132 — BOB mainnet referenced in WETH token map:For contrast,
TEST_NETWORKScorrectly includes[CHAIN_IDs.BOB_SEPOLIA]at line 501, showing the pattern is established for the testnet variant.Impact
Any code path that uses
PRODUCTION_NETWORKSas its source of truth for "which chains are live" will silently drop BOB. Concretely: network-metadata lookups (RPC URL, block explorer, CCTP domain, OFT EID) will returnundefinedfor chain 60808, potentially causing downstream errors in relayers, UIs, or tooling that assume allMAINNET_CHAIN_IDsmembers have a correspondingPRODUCTION_NETWORKSentry.Suggested fix
Add a
[CHAIN_IDs.BOB]entry toPRODUCTION_NETWORKSin alphabetical order (between BLAST and BOBA). BOB is an OP Stack chain; its public RPC and explorer are already in use on the Sepolia side:Values for
cctpDomain,oftEid, andhypDomainIdshould be confirmed against official BOB / LayerZero / Hyperlane registries before merging; the placeholders above match the pattern used for other chains without those integrations.Notes
PR #200 ("feat: Missing Bob & Ink Sepolia") addresses a separate gap — BOB_SEPOLIA absent from
TEST_NETWORKS— and is not a duplicate of this issue.