KeeperHub / KeeperHub/keeperhub

Add Arc testnet (Circle) as a supported chain

Open
#2,230 1 comment 0 reactions 0 assignees View on GitHub
accepted
Dominant language
TypeScript
Stars
24
Forks
93
Avg merge
1d 4h
Merged PRs (30d)
253

Description

### Before filing

- [x] I searched open and closed issues for this proposal. (searched "arc" and "arc testnet" — nothing found)
- [x] I checked the docs and the current behaviour on `staging`.
- [x] This is one change, not several.

### Reason: what you cannot do today

KeeperHub has no support for Circle's Arc testnet anywhere in the codebase. Confirmed by grep across `lib/`, `plugins/`, `scripts/seed/`, and `lib/rpc/rpc-config.ts` on current `staging`: zero references to Arc, no `chains` row, no RPC config, no supported-token entry.

Arc is Circle's EVM-compatible L1 purpose-built for stablecoin finance, with a property no other chain in this repo has: **USDC is the native gas token**, not ETH. That makes it directly relevant to KeeperHub's stablecoin-automation positioning — it's the kind of chain workflows here would plausibly want to target for gas-in-USDC automation, and there's currently no way to build or test against it at all: it doesn't appear in the chain-select UI, has no explorer linkage, and no seeded token metadata.

### Reason: what the workaround costs

No workaround exists. A workflow cannot target a chain that has no `chains` row — the chain simply does not appear anywhere a chain is selected. There's no partial/manual path (e.g. hand-configuring RPC per-org) that gets a user to a working Arc integration today.

### Scope: what this touches, and what it does not

**Touches:**
- `lib/rpc/rpc-config.ts` — RPC/WSS URL resolution config for chain ID `5042002` (`PUBLIC_RPCS` + `CHAIN_CONFIG` entries)
- `scripts/seed/seed-chains.ts` — chain registration (`DEFAULT_CHAINS`) and Blockscout explorer config (`EXPLORER_CONFIG_TEMPLATES`)
- `scripts/seed/seed-tokens.ts` — the native USDC gas-token's fixed ERC-20-interface precompile (`0x3600...`), registered as a supported stablecoin, address and metadata (symbol/name/decimals) independently verified on-chain

**Does not touch:**
- Arc mainnet — does not exist yet per Circle's own docs (testnet only today)
- Any new plugin or bespoke actions — unlike Robinhood Chain's stock-token plugin, Arc needs no custom actions; the existing generic web3 transfer/balance nodes work against it once the chain and token are registered
- Database schema/migrations — this is seed-data only, no schema changes
- No new dependency added

Confirms as one change: chain registration and its token entry are only correct together (a chain with no supported token is a dead entry in the wallet modal, and a token entry needs its chain to exist first) — not separable into independent PRs.

### Plan: what you propose

Wire up the same chain-onboarding path used for every prior chain (Robinhood Chain, Plasma, 0G): add `PUBLIC_RPCS`/`CHAIN_CONFIG` entries, `DEFAULT_CHAINS` + `EXPLORER_CONFIG_TEMPLATES` seed entries, and a verified `TOKEN_CONFIGS` entry for the USDC precompile. Purely additive — no changes to existing chains, no new abstractions beyond the standard per-chain config shape every other chain already uses.

Verification performed: on-chain fetch of the token contract via `scripts/verify-token.ts` (confirmed `symbol: USDC`, `name: USDC`, `decimals: 6`), a real Postgres seed run confirming the rows land correctly, and replaying the `/api/supported-tokens` route's actual query logic against the seeded data to confirm the response shape is correct.

### Plan: alternatives you considered

- **Do nothing** — leaves Arc testnet unreachable from KeeperHub entirely; rejected since the chain is live and the addition is low-risk/purely additive.
- **Wait for Arc mainnet** — rejected; testnet-first is the pattern this repo already follows for new chains (Robinhood Testnet, Plasma Testnet, 0G Galileo all shipped before/alongside their mainnets), and testnet lets workflows be built and tested now.

### Scope: compatibility

- [ ] Changes an existing response shape, status code, CLI flag, or default.
- [ ] Adds, removes, or upgrades a dependency.
- [ ] Changes database schema or requires a migration.
- [ ] Touches authentication, permissions, validation, or spend limits.
- [ ] Changes pricing, plan limits, or anything a user is charged.

Contributor guide

Open the contributing guide

Research direction

Compare the existing chain entries in lib/rpc/rpc-config.ts, scripts/seed/seed-chains.ts, and scripts/seed/seed-tokens.ts, using the entries for Robinhood Chain, Plasma, or 0G as patterns. Run scripts/verify-token.ts and a seed against Postgres to verify chain ID 5042002, RPC and explorer configuration, and the native USDC metadata. Done means Arc appears in chain selection and the supported-tokens response with the verified USDC entry.

Written by the indexing model from the issue text.

Assessment

Tech stack
postgresql, typescript
Domain
backend, blockchain, databases
Issue type
Feature
Difficulty
3/5
Estimated time
1-2 days
Activity status
Active
Clarity
Clearly specified
Newbie friendliness
75/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.