KeeperHub / KeeperHub/keeperhub
Add Arc testnet (Circle) as a supported chain
- 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
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